Linux 使用从Docker API返回的Ansible迭代json
大家好,我有一本类似于下面的剧本,我正在尝试解析docker api的json输出,但还不走运。我想解析Id字段并将其用作docker exec的输入。我的最终结果是获得所有容器运行的报告,以及它们的环境变量Linux 使用从Docker API返回的Ansible迭代json,linux,docker,ansible,Linux,Docker,Ansible,大家好,我有一本类似于下面的剧本,我正在尝试解析docker api的json输出,但还不走运。我想解析Id字段并将其用作docker exec的输入。我的最终结果是获得所有容器运行的报告,以及它们的环境变量 - hosts: devtest.log.mycompany.com tasks: - name: Get containers command: curl --insecure --cert-type PEM --cert /etc/docker/server-cer
- hosts: devtest.log.mycompany.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[*]'') }}"
请使用如下语法:
...stdout | from_json | json_query('[*].Id')
重要的一点是通过使用[*]启动查询来迭代json数组
有关详细信息,请参阅。您可能希望在/containers/{id}/json:-处使用inspect端点,而不是使用docker exec:-请注意,与printenv相比,您将得到不同的结果。然后是关于json|查询的说明:您是否尝试过..stdout | from|json | json|u查询'[*].Id'?见谢谢@gesellix。我试试看。这样做有效,移动[*].id。请随意发布答案,我会将其标记为已回答。谢谢@Codemiester!