Существует Специальная переменная group_names
group_names Список групп, в состав которых входит текущий хост
игра ниже показывает, сколько из выбранных групп ( my_groups ), членом которой является хост.
- hosts: all
gather_facts: no
vars:
my_groups: [ 'web_1', 'web_2', 'web_3' ]
tasks:
- debug:
msg: "{{ inventory_hostname }} is member of
{{ my_groups|intersect(group_names)|length }} group(s)."
Давайте иметь инвентарь ниже
[test]
test_01
test_02
test_03
[web_1]
test_01
test_02
[web_2]
test_01
test_02
[web_3]
test_03
Игра
ok: [test_01] => {
"msg": "test_01 is member of 2 group(s)."
}
ok: [test_02] => {
"msg": "test_02 is member of 2 group(s)."
}
ok: [test_03] => {
"msg": "test_03 is member of 1 group(s)."
}
Используйте приведенную ниже игру, чтобы
Запускать задачу, только если хост не принадлежит более чем одной группе
- hosts: all
gather_facts: no
vars:
my_groups: [ 'web_1', 'web_2', 'web_3' ]
tasks:
- fail:
msg: "{{ inventory_hostname }} is member of
{{ my_groups|intersect(group_names)|length }} groups.
Play failed."
when: my_groups|intersect(group_names)|length != 1
- debug:
msg: "{{ inventory_hostname }} is member of
{{ my_groups|intersect(group_names)|length }} group.
Play continues."