基于条件在两个不同的库存组上执行相同的任务



我在Ansible中有一个任务,需要根据一定的条件在两个不同的库存组上执行。

如果设置了特定的标志,我想在一台主机上执行它。如果该标志被禁用,则需要在另一个标志上执行。是否有可能使用条件来确定任务应该在Ansible中运行的库存集?库存
:

[group_A] 
A 
a 
[group_B] 
B 
b 

任务:

-name: Stop component 
roles: 
-stop 
hosts:
-group_A, when: flag|bool 
-group_B, when: not flag|bool 

提前感谢!

例如

shell> cat playbook
- hosts: "{{ flag|default(true)|bool|ternary('group_A', 'group_B') }}"
tasks:
- debug:
var: inventory_hostname

shell> ansible-playbook -e flag=True playbook.yml 
ok: [A] => 
inventory_hostname: A
ok: [a] => 
inventory_hostname: a
shell> ansible-playbook -e flag=False playbook.yml 
ok: [B] => 
inventory_hostname: B
ok: [b] => 
inventory_hostname: b

最新更新