如何遍历字典列表,并在Ansible中打印出每个键和值对
问题内容:
我在Ansible配置中有字典列表
myList
- name: Bob
age: 25
- name: Alice
age: 18
address: USA
我写代码为
- name: loop through
debug: msg ="{{item.key}}:{{item.value}}"
with_items: "{{ myList }}"
我想像打印
msg: "name:Bob age:25 name:Alice age:18 address:USA"
如何遍历该词典并获取键和值对?因为它不知道关键是什么。如果我将其更改为{{item.name}},则ansible可以使用,但我也想知道密钥
问题答案:
如果要遍历列表并分别解析每个项目,请执行以下操作:
- debug: msg="{{ item | dictsort | map('join',':') | join(' ') }}"
with_items: "{{ myList }}"
将打印:
"msg": "age:25 name:Bob"
"msg": "address:USA age:18 name:Alice"
如果要将所有内容合并为一行,请使用:
- debug: msg="{{ myList | map('dictsort') | sum(start=[]) | map('join',':') | join(' ') }}"
这将给出:
"msg": "age:25 name:Bob address:USA age:18 name:Alice"
请记住,字典不是在Python中排序的,因此通常不能期望项目的顺序与yaml-
file中的顺序相同。在我的示例中,它们在dictsort过滤器之后按键名排序。