Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 使用从Docker API返回的Ansible迭代json_Linux_Docker_Ansible - Fatal编程技术网

Linux 使用从Docker API返回的Ansible迭代json

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

大家好,我有一本类似于下面的剧本,我正在尝试解析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-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!