在具有特定参数的主机上运行playbook

时间:2016-12-06 17:16:00

标签: ansible-playbook

在我的主机文件中,我有:

[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做到这一点?

1 个答案:

答案 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