Ansible:将列表及其内容用作变量值

时间:2017-03-30 07:56:40

标签: loops ansible ansible-2.x

我有以下形式的键 - 值对关联:

- mykey1:
    myvalues1: ['a', 'b', 'c']
- mykey2:
    myvalues2: ['d', 'e']
- mykey3:
    myvalues3: ['f']

我知道使用with_dict构造我可以遍历键和值(列表)。 我的问题是我如何能够循环遍历列表的(值)元素

我希望能够实现的输出是:

a', 'b', 'c', 'd', 'e', 'f'

问题是我需要维持上述关联。 有没有办法避免重复列表声明?

2 个答案:

答案 0 :(得分:1)

我不太确定动态按键是否可行。但假设以下vars文件没有1,2和3:

rootitem:
  - mykey:
      myvalues: ['a', 'b', 'c']
  - mykey:
      myvalues: ['d', 'e']
  - mykey:
      myvalues: ['f']

可以使用" with_subelements"使用以下示例:

- name: iterate over list
  debug:
    msg: "the current item is{{ item.0 }} and all subitems are {{ item.1 }}"
  with_subelements:
    - "{{ rootitem }}"
    - mykey.myvalues

这导致6次迭代,每次#34; a,b,c,d,e,f"。

答案 1 :(得分:0)

这是我提出的构造:

String type

当有人想要将值迭代为单个值

associations:    
    - { key: mykey1, myvalues: ['a', 'b', 'c', ] }
    - { key: mykey2, myvalues: ['d', 'e'] }
    - { key: mykey3, myvalues: ['f'] }

当有人想要将值作为列表

进行迭代时
- name: List single items
  debug:
     msg: "{{ item.1 }}"
   with_subelements:
     - associations
     - myvalues