通常,如果我有一个名为mygroup
的小组,要获得该小组中的所有成员,我正在使用:
"{{ groups.mygroup }}"
我想知道从变量中获取mygroup
时该如何做。
我尝试了"{{ groups.{{ variable }} }}"
,但没有用。
有任何提示吗? 谢谢
答案 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中不提供间接寻址。
可以通过变量 match和selectattr来访问组中的主机列表。下方有库存
$ 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"
]