如何在2个dicts上使用with_nested来获取ansible的值?

时间:2017-10-27 08:58:14

标签: loops dictionary ansible

我有以下2个地图设置

prefix_color:
  eu_: "blue"
  us_: "red"

country_shade:
  sweden: "light"
  belgium: "dark"

我希望以与ansible中的with_nested相同的方式遍历两个映射,但我需要同时访问两个dicts中的键和值。

基本上我需要的是这样的东西

- name: loop
  debug:
    msg: "key: {{ item[0].key + item[1].key }}, value: {{ item[0].value + item[1].value }}"
  with_nested:
    - "{{ prefix_color }}"
    - "{{ country_shade }}"

以上操作不起作用,因为with_nested只有密钥可用,而with_dict不允许超过1个字典。

如何解决这个问题?考虑到嵌套循环和字典的概念都存在于ansible中,它似乎应该是一件简单的事情。

1 个答案:

答案 0 :(得分:2)

您可以使用dictsort将字典转换为列表:

- name: loop
  debug:
    msg: "key: {{ item[0] + item[2] }}, value: {{ item[1] + item[3] }}"
  with_nested:
    - "{{ prefix_color | dictsort }}"
    - "{{ country_shade | dictsort  }}"

在你的设置中,原始键将是偶数索引和值 - 不均匀。