首页 > 解决方案 > 在不知道键名的情况下遍历 Ansible 中的字典列表

问题描述

我一直在寻找解决方案,到目前为止似乎都没有。

我有一个任务输出注册为:

"action_list.start_artifacts": [
    {
        "account-troubletree-v1-1-0-18-21001": "docker run -d -p 21001:8080 -v /apps/projects/logs/account-troubletree-v1-1-0-18-21001:/logs -v /apps/projects/logs/account-troubletree-v1-1-0-18-21001/.configmap:/tibco/config -v /apps/gwportal/appdynamics/:/apps/gwportal/appdynamics/ --env-file /apps/projects/logs/account-troubletree-v1-1-0-18-21001/config.env --name account-troubletree-v1-1-0-18-21001 account-troubletree-v1:1.0.18"
    },
    {
        "account-troubletree-v1-1-0-17-21002": "docker run -d -p 21002:8080 -v /apps/projects/logs/account-troubletree-v1-1-0-17-21002:/logs -v /apps/projects/logs/account-troubletree-v1-1-0-17-21002/.configmap:/tibco/config -v /apps/gwportal/appdynamics/:/apps/gwportal/appdynamics/ --env-file /apps/projects/logs/account-troubletree-v1-1-0-17-21002/config.env --name account-tree-v1-1-0-17-21002 account-tree-v1:1.0.17"
    }
]

我正在尝试使用以下任务获取密钥名称,但它失败了。

- debug:
    msg: "{{ item.key }}"
  loop: "{{ action_list.start_artifacts }}"

标签: ansibleansible-2.x

解决方案


下面的任务完成了这项工作

    - debug:
        msg: "{{ item.keys()|first }}"
      loop: "{{ action_list.start_artifacts }}"

下一个选项是

    - debug:
        msg: "{{ (item|dict2items).0.key  }}"
      loop: "{{ action_list.start_artifacts }}"

推荐阅读