从ec2创建寄存器中提取volume_id

时间:2019-04-01 14:42:04

标签: json ansible

我需要从EC2创建调用的寄存器返回中提取EBS卷ID。我已经把它放到可以保存我想要的数据的卡盘上,但是最后一步却使我望而却步。

我尝试使用以下方法:

- set_fact:
        volume_id_list: "{{ devices | json_query('[*].volume_id') }}"
    - debug: var=volume_id_list

它返回一个空字符串。

    "devices": {
        "/dev/sdf": {
            "delete_on_termination": true, 
            "status": "attached", 
            "volume_id": "vol-0b2c92cdcblah"
        }, 
        "/dev/xvda": {
            "delete_on_termination": true, 
            "status": "attached", 
            "volume_id": "vol-086a722c4blah"
        }
    }

我想看的东西是这样的:

“ vol-0b2c92cdcblah” “ vol-086a722c4blah”

1 个答案:

答案 0 :(得分:0)

您在json_query中的jmespath表达式与您的数据结构中的任何内容都不匹配。因此,空字符串是完全正确的结果:)

现在,要从当前数据结构中获得所需的内容,您需要更改查询:json_query('*.volume_id')