假设我们有3个服务和5个服务器
服务1应该在所有服务器上运行。
服务2应该在服务器1、2和3上运行。
服务3应该在服务器4和5上运行。
我可以想出几种肮脏的方法来实现这一点,但我想知道这种情况下的最佳实践是什么。
我在想,最好首先为每个服务定义一个组,指定在库存文件中部署它的主机:
[service-1]
server-[01:05]
[service-2]
server-[01:03]
[service-3]
server-[04:05]为了在目标机器上获得服务,我将使用复制或模板。对于实际启动服务,我找到了这。
但是,我如何使这些服务只在它们应该运行的机器上启动呢?
我想我可以创建多本剧本来实现这一点,但是我真的更喜欢把所有的东西都放在一本剧本里。
发布于 2016-03-21 15:09:39
一本剧本可以有多个剧本。因此,您确实可以使用这些组来存档您的目标,但仍然只有一本剧本:
- name: Setup service 1
hosts: service-1
tasks/roles: ...
- name: Setup service 2
hosts: service-2
tasks/roles: ...
- name: Setup service 3
hosts: service-3
tasks/roles: ...或者,您也可以在如下条件下筛选角色/任务:
- name: Setup all service
hosts: all
roles:
- role: service1
when: "'service-1' in group_names"
- role: service2
when: "'service-2' in group_names"
- role: service3
when: "'service-3' in group_names"group_names是一个神奇的变量,它保存当前主机所属的所有组。
https://stackoverflow.com/questions/36134308
复制相似问题