Ansible: получить членов группы, взятых из переменной - PullRequest
0 голосов
/ 24 июня 2019

Обычно, если у меня есть группа под названием mygroup, чтобы получить всех членов этой группы, которую я использую:

"{{ groups.mygroup }}"

Мне интересно, как я могу сделать то же самое, когда mygroupберется из переменной.Я пытался "{{ groups.{{ variable }} }}", но это не работает.

Есть подсказка?Спасибо

Ответы [ 2 ]

1 голос
/ 24 июня 2019

Я нашел решение, я могу сделать:

group: "{{ groups.mygroup }}"

и затем используйте:

"{{ hostvars['localhost']['group'] }}"
0 голосов
/ 24 июня 2019

How can I obtain all members of the group 'mygroup' when the name of the group is taken from a variable?

Косвенная адресация недоступна в Ansible.

Можно сопоставить , selectattr с помощью переменной и map со списком хостов в группе. С инвентарем ниже

$ cat hosts
localhost

[mygroup]
test_01
test_02
test_03

игра ниже

- hosts: localhost
  tasks:
    - set_fact:
        variable: mygroup
    - set_fact:
        my_hosts: "{{ groups|
                      dict2items|
                      selectattr('key', 'match', variable)|
                      map(attribute='value')|
                      list|
                      flatten }}"
    - debug:
        var: my_hosts

дает

"my_hosts": [
    "test_01", 
    "test_02", 
    "test_03"
]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...