Запускать задание только в том случае, если хост не принадлежит к какой-либо группе, кроме одной группы - PullRequest
0 голосов
/ 11 июня 2019

Запускать задачу, только если хост не принадлежит более чем одной группе:

например:

[web_1]

[one_web_2]

[server_3]

Я хочу использовать первые две группы:

"" сеть "не в именах групп" - >> первая и вторая

?

1 Ответ

0 голосов
/ 12 июня 2019

Существует Специальная переменная 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."
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...