Ansible 易变双环

Ansible 易变双环,ansible,ansible-facts,ansible-template,Ansible,Ansible Facts,Ansible Template,我有一个yml文件中的数据列表。 我想提取数据,使用双循环,就像我们以前做的那样。 这是我的清单的一个例子 [a,b,c] vm1: -a -b vm2: -a -c vm3: -b 这是用于一般部署目的。 我需要循环列表,对于每个元素,获取需要安装的vm的列表。 比如说 a > vm1 vm2 b > vm1 vm3 c > vm2 我试过了,但没用。 有什么办法解决这个问题吗?这个问题很类似于 下面是修改后的JMESPath: --- - hosts: local

我有一个yml文件中的数据列表。 我想提取数据,使用双循环,就像我们以前做的那样。 这是我的清单的一个例子

[a,b,c]
vm1:
-a
-b
vm2:
-a
-c
vm3:
-b

这是用于一般部署目的。 我需要循环列表,对于每个元素,获取需要安装的vm的列表。 比如说

a > vm1 vm2 

b > vm1 vm3

 c > vm2
我试过了,但没用。
有什么办法解决这个问题吗?

这个问题很类似于

下面是修改后的JMESPath:

---
- hosts: localhost
  gather_facts: no
  vars:
    mylist: [a,b,c]
    myvms:
      vm1:
        - a
        - b
      vm2:
        - a
        - c
      vm3:
        - b
  tasks:
    - debug:
        msg: "{{ item }} > {{ list_with_keys | json_query(qry) | join(',') }}"
      vars:
        list_with_keys: "{{ myvms | dictsort | to_json | from_json }}"
        qry: "[?contains([1],`{{ item }}`)][0]"
      with_items: "{{ mylist }}"
结果:

ok: [localhost] => (item=a) => {
    "changed": false,
    "item": "a",
    "msg": "a > vm1,vm2"
}
ok: [localhost] => (item=b) => {
    "changed": false,
    "item": "b",
    "msg": "b > vm1,vm3"
}
ok: [localhost] => (item=c) => {
    "changed": false,
    "item": "c",
    "msg": "c > vm2"
}

这个问题很类似于

下面是修改后的JMESPath:

---
- hosts: localhost
  gather_facts: no
  vars:
    mylist: [a,b,c]
    myvms:
      vm1:
        - a
        - b
      vm2:
        - a
        - c
      vm3:
        - b
  tasks:
    - debug:
        msg: "{{ item }} > {{ list_with_keys | json_query(qry) | join(',') }}"
      vars:
        list_with_keys: "{{ myvms | dictsort | to_json | from_json }}"
        qry: "[?contains([1],`{{ item }}`)][0]"
      with_items: "{{ mylist }}"
结果:

ok: [localhost] => (item=a) => {
    "changed": false,
    "item": "a",
    "msg": "a > vm1,vm2"
}
ok: [localhost] => (item=b) => {
    "changed": false,
    "item": "b",
    "msg": "b > vm1,vm3"
}
ok: [localhost] => (item=c) => {
    "changed": false,
    "item": "c",
    "msg": "c > vm2"
}

你的剧本是什么样子的?您尝试将
与_nested
一起使用时是什么样子的?它是怎么失败的?你的剧本是什么样子的?您尝试将
与_nested
一起使用时是什么样子的?怎么会失败?谢谢。我怎样才能得到这个表单:a:vm1和a:vm2不知道你的意思,但是你可以总是用
set_fact
替换
debug
,然后用键a、b、c构造一个dict,然后用
和子元素
对其进行迭代。我想把a>vm1、vm2转换成单独的行,比如a:vm1和a:vm2。我怎样才能得到这个表单:a:vm1和a:vm2不知道你的意思,但是你可以用
set_fact
替换
debug
,然后用键a、b、c构造一个dict,然后用
和子元素
对其进行迭代。我想把a>vm1、vm2转换成单独的行,比如a:vm1和a:vm2