如何在不同组的相同主机上运行Ansible剧本

时间:2020-04-06 14:03:14

标签: ansible

是否有可能创建这样一个混乱的清单,使它只能在一个组,两个组或所有组上运行任务,但是在组内有被称为相同主机的主机?

主机的别名与剧本在组中相同,但是在每个组中,每个服务器和虚拟机都有不同的变量。而且,要从本地主机连接到VM,需要将服务器用作Jumphost。

场景应大致如下所示: 库存:

[group1]
server
vm
[group2]
server
vm
[group3]
server
vm

剧本:

- hosts: server
  tasks:
  - name: ....

- hosts: vm
  tasks:
  - name: ... 

1 个答案:

答案 0 :(得分:0)

给出以下清单:

[server]
machine1.somewhere.com
machine2.somewhere.com
machine3.somewhere.com

[vm]
vm1.virtual.com
vm2.virtual.com
vm3.virtual.com

[group1]
machine1.somewhere.com
vm1.virtual.com

[group2]
machine2.somewhere.com
vm2.virtual.com

[group3]
machine3.somewhere.com
vm3.virtual.com

您可以使用以上的剧本支架并将limit的用法用于特定的人群:

# All groups
ansible-playbook -i inventory.ini playbook.yml

# Group 1 only
ansible-playbook -i inventory.ini playbook.yml -l group1

# Group 1 and 3 
ansible-playbook- i inventory.ini playbook.yom -l group1:group3

您也可以在播放的hosts节中使用这种模式。有关模式的更多信息,请参见the documentation