Ansible:从变量中获取组成员

时间:2019-06-24 07:08:58

标签: ansible

通常,如果我有一个名为mygroup的小组,要获得该小组中的所有成员,我正在使用:

"{{ groups.mygroup }}"

我想知道从变量中获取mygroup时该如何做。 我尝试了"{{ groups.{{ variable }} }}",但没有用。

有任何提示吗? 谢谢

2 个答案:

答案 0 :(得分:1)

我找到了解决方案,我可以做到:

group: "{{ groups.mygroup }}"

然后使用:

"{{ hostvars['localhost']['group'] }}"

答案 1 :(得分:0)

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

Ansible中不提供间接寻址。

可以通过变量 matchselectattr来访问组中的主机列表。下方有库存

$ 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"
]