You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

请求协助: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.11 07:24:49