我在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