Warm tip: This article is reproduced from serverfault.com, please click

其他-Ansible循环和打印字典变量

(其他 - Ansible loop and print dictionary variable)

发布于 2020-11-29 09:38:55

任何人都可以帮助解决这个基本问题吗?我有一个字典变量,我想打印它。

dict_var:
  - key1: "val1"
  - key2: "val2"  
  - key3: "val3"

是否可以在剧本中循环播放和打印其内容?

Questioner
amir
Viewed
11
Vladimir Botka 2020-11-29 19:25:03

问:循环并打印变量的内容。

答:变量dict_var是一个list循环列表,例如

- hosts: localhost
  vars:
    dict_var:
      - key1: "val1"
      - key2: "val2"
      - key3: "val3"
  tasks:
    - debug:
        var: item
      loop: "{{ dict_var }}"

给予(删节)

    "item": {
        "key1": "val1"
    }

    "item": {
        "key2": "val2"
    }

    "item": {
        "key3": "val3"
    }

问:循环并打印字典。

答:当变量是字典时,还有更多选择例如,使用dict2items“循环,并具有在变量密钥对值” item.keyitem.value

- hosts: localhost
  vars:
    dict_var:
      key1: "val1"
      key2: "val2"
      key3: "val3"
  tasks:
    - debug:
        var: item
      loop: "{{ dict_var|dict2items }}"

给予(删节)

    "item": {
        "key": "key1",
        "value": "val1"
    }

    "item": {
        "key": "key2",
        "value": "val2"
    }

    "item": {
        "key": "key3",
        "value": "val3"
    }

下一个选项是循环字典键的列表。例如

    - debug:
        msg: "{{ item }} {{ dict_var[item] }}"
      loop: "{{ dict_var.keys()|list }}"

给予(删节)

    "msg": "key1 val1"

    "msg": "key2 val2"

    "msg": "key3 val3"