嗨我有一个类似下面的剧本,我试图解析docker api的json输出,但还没有运气。我想解析Id字段并将其用作docker exec的输入。我的最终结果是获取所有正在运行的容器的报告及其环境变量。
- hosts: devtest.log.economicalinsurance.com
tasks:
- name: Get containers
command: curl --insecure --cert-type PEM --cert /etc/docker/server-cert.pem --key /etc/docker/server-key.pem "https://127.0.0.1:2376/v1.22/containers/json?all=1"
register: containers
- debug: msg="{{ containers.stdout }}"
- name: Get ENV Vars
command: docker exec -t {{ item }} printenv
with_items: "{{ containers.stdout|json_query|('Id[*]'') }}"
答案 0 :(得分:1)
请使用以下语法:
...stdout | from_json | json_query('[*].Id')
重要的是通过使用[*]
启动查询来迭代json数组。
有关详细信息,请参阅http://docs.ansible.com/ansible/latest/playbooks_filters.html#json-query-filter。