如何在Ansible中进行Json查询

时间:2019-03-15 03:53:59

标签: python arrays json ansible jmespath

我正在使用 ec2_lc_facts ansible模块,并将输出注册到名为 lc_facts 的变量中。我可以使用json查询“ {{lc_facts.launch_configurations | json_query('[*]。block_device_mappings')}}” 来获取 block_device_mappings 值,但想获取来自以下输出的 volume_size volume_type 。请帮忙。

 "lc_facts": {
        "changed": false, 
        "failed": false, 
        "launch_configurations": [
            {
                "block_device_mappings": [
                    {
                        "device_name": "/dev/sda1", 
                        "ebs": {
                            "delete_on_termination": true, 
                            "volume_size": 40, 
                            "volume_type": "gp2"
                        }
                    }
                ]
            }
       ]
  }

1 个答案:

答案 0 :(得分:1)

下面的查询

- debug:
    msg: "{{ lc_facts.launch_configurations|json_query('[*].block_device_mappings[0].ebs.[volume_size, volume_type]') }}"

给予

    "msg": [
    [
        40, 
        "gp2"
    ]
]

要获取哈希,请使用此

- debug:                                                                                                                          
    msg: "{{ lc_facts.launch_configurations|json_query('[*].block_device_mappings[0].ebs.{size: volume_size, type: volume_type}') }}"