Ansible:从变量中获取组成员

Ansible:从变量中获取组成员,ansible,Ansible,通常,如果我有一个名为mygroup的组,要获取我正在使用的组中的所有成员,请执行以下操作: "{{ groups.mygroup }}" 我想知道当mygroup取自一个变量时,我该如何做同样的事情。 我尝试了“{{groups.{{{variable}}}}”,但它不起作用 有什么提示吗? 谢谢当组名取自变量时,如何获取组“mygroup”的所有成员? Ansible中不提供间接寻址 可以通过变量和组中的主机列表来修改。与下面的库存 $ cat hosts localhost [mygr

通常,如果我有一个名为
mygroup
的组,要获取我正在使用的组中的所有成员,请执行以下操作:

"{{ groups.mygroup }}"
我想知道当
mygroup
取自一个变量时,我该如何做同样的事情。 我尝试了
“{{groups.{{{variable}}}}”
,但它不起作用

有什么提示吗? 谢谢

当组名取自变量时,如何获取组“mygroup”的所有成员?

Ansible中不提供间接寻址

可以通过变量和组中的主机列表来修改。与下面的库存

$ 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
给予


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

group: "{{ groups.mygroup }}"
然后使用:

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

我不明白你的答案,我问题的答案。我有一个名为mygroup的组,我需要通过set_fact声明一个变量,比如:variable:“mygroup”。我需要包含一个yml,其中包含一个任务列表,该列表总是使用变量而不是组名,因此我需要使用变量执行“{groups.mygroup}”,但不能使用变量执行“{groups.mygroup}”。阅读答案的第一句话。为了帮助您完成剩下的工作,我更新了清单、剧本和输出的答案。
"{{ hostvars['localhost']['group'] }}"