请求协助:Ansible中如何循环打印字典变量?
如何在Ansible Playbook中循环打印字典内容?
当然可以啦!不过先得提一句,你定义的dict_var其实是一个包含多个单键值对字典的列表,不是一个单一的大字典哦~ 针对这个结构,我们可以这样写Playbook来循环打印内容:
- name: 循环打印列表中的字典内容 hosts: localhost vars: dict_var: - key1: "val1" - key2: "val2" - key3: "val3" tasks: - name: 打印每个键值对 debug: msg: "键: {{ item.keys() | first }}, 值: {{ item.values() | first }}" loop: "{{ dict_var }}"
运行这个Playbook后,你会看到每个键值对都被打印出来:
ok: [localhost] => (item={'key1': 'val1'}) => {
"msg": "键: key1, 值: val1"
}
ok: [localhost] => (item={'key2': 'val2'}) => {
"msg": "键: key2, 值: val2"
}
ok: [localhost] => (item={'key3': 'val3'}) => {
"msg": "键: key3, 值: val3"
}
如果你其实是想定义一个单一的大字典(可能是写法小失误),比如把列表符号去掉:
dict_var: key1: "val1" key2: "val2" key3: "val3"
那循环起来更简单,用dict2items过滤器把字典转成可循环的列表项就行:
- name: 循环打印单一字典的内容 hosts: localhost vars: dict_var: key1: "val1" key2: "val2" key3: "val3" tasks: - name: 打印每个键值对 debug: msg: "键: {{ item.key }}, 值: {{ item.value }}" loop: "{{ dict_var | dict2items }}"
这个dict2items过滤器会把你的字典转换成[{key: 'key1', value: 'val1'}, {key: 'key2', value: 'val2'}, {key: 'key3', value: 'val3'}]这样的结构,刚好适合用loop遍历。
内容的提问来源于stack exchange,提问作者amir
相关产品推荐
相关产品推荐

