Ansible从dict获取值

时间:2018-05-17 22:24:34

标签: dictionary ansible

我的调试输出低于此,我需要设置变量并通过命令循环

调试输出:

    ok: [leafsw] => {
    "msg": [
        {
            "cl_list": "AWSCL",
            "delete": [
                {
                    "list": "11111:10000",
                    "seq": 1
                },
                {
                    "list": "22222:10000",
                    "seq": 2
                }
            ],
            "name": "AWSCL",
            "permit": [
                "11111:10000",
                "22222:10000"
            ]
        },
        {
            "cl_list": "NORM_CL",
            "name": "NORM_CL",
            "permit": [
                "33333:10000",
                "44444:10000"
            ]
        }
    ]
}

我需要获取cl_list然后下一个任务是使用" with_items"运行其他命令。 第一:如何获取字典值cl_list 第二:添加到变量,以便我可以使用它循环。

我试过了:

- name: Get CL Name
  debug: var="{{ item }}"
  with_items: "{{ getclname.cl_list }}"

不起作用,我也尝试过:

- name: Get CL Name
  debug: var="{{ item.cl_list }}"
  with_items: "{{ getclname }}"

我想要什么: 变量= [' AWSCL',' NORM_CL']以便我可以在with_items循环中使用它

有什么想法吗?

1 个答案:

答案 0 :(得分:2)

你快到了!尝试这个任务:

- name: get the cl_list from the variable
  debug:
    var: item.cl_list 
  with_items: 
    - "{{ my_var }}"

结果:

TASK [get the cl_list from the variable] ****************************************************************************************************************************************************************************
ok: [localhost] => (item=None) => {
    "item.cl_list": "AWSCL"
}
ok: [localhost] => (item=None) => {
    "item.cl_list": "NORM_CL"
}

PLAY RECAP

准备逐项处理。

第二种方式:

你可以这样做,让他们进入列表变量:

- name: get the cl_list from the variable
  debug:
    var: my_var | map(attribute="cl_list") | list

结果:

TASK [get the cl_list from the variable] ****************************************************************************************************************************************************************************
ok: [localhost] => {
    "my_var | map(attribute=\"cl_list\") | list": [
        "AWSCL", 
        "NORM_CL"
    ]
}