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

时间:2017-07-21 16:43:09

标签: linux docker ansible

嗨我有一个类似下面的剧本,我试图解析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[*]'') }}"

1 个答案:

答案 0 :(得分:1)

请使用以下语法:

...stdout | from_json | json_query('[*].Id')

重要的是通过使用[*]启动查询来迭代json数组。

有关详细信息,请参阅http://docs.ansible.com/ansible/latest/playbooks_filters.html#json-query-filter