在我的主机文件中,我有:
[web]
192.168.1.1:8682 master="yes"
192.168.1.1:8682 master="no"
在我的剧本中,我想只在服务器上运行master = yes,如:
---
- name: Switch MySQL master
hosts: web[master=yes]
remote_user: andy
become: yes
roles:
- replication_setup_switch_server
...
是否可以使用Ansible做到这一点?
答案 0 :(得分:0)
在Ansible中,您可以使用group_by模块基于事实创建临时组。
在Switch MySQL master
之前添加新游戏并在其中创建新组。我在下面的例子中调用了新游戏Create groups by role
。您可以将变量master
重命名为role
,以使剧本更直观。因此,库存和剧本将成为:
---
[web]
192.168.1.1:8682 role="master"
192.168.1.1:8682 role="slave"
---
- name: Create groups by role
hosts: web
tasks:
- name: Group by web role
group_by:
key: "web_{{ role }}"
- name: Switch MySQL master
hosts: web_master
remote_user: andy
become: yes
roles:
- replication_setup_switch_server