Ansible从结果中检索多个数组值

时间:2018-11-08 00:38:38

标签: ansible

我希望能够遍历所有名称值,但是我不确定如何使用Ansible进行迭代。可变域是一个列表,并使用寄存器。

- name: find *.ccfg files in domain(s)
  find:
    paths: "/tmp/opt/{{ item }}/ccfg"
    patterns: "*.ccfg"
    recurse: yes
    excludes: "Admin.ccfg"
  with_items: "{{ domain }}"
  register: files
  when: ('local' in group_names)

- debug:
    msg: "{{ files.results }}"

每个数组中的 path 值可以是1到20之间的任意值。数组中的每个索引都有多个值。某些数组可能没有任何值

标准输出:

ok: [127.0.0.1] => {
    "msg": [
        {
            "_ansible_ignore_errors": null,
            "_ansible_item_label": "CIE",
            "_ansible_item_result": true,
            "_ansible_no_log": false,
            "_ansible_parsed": true,
            "changed": false,
            "examined": 3,
            "failed": false,
            "files": [
                {
                    "atime": 1541632866.4095802,
                    "ctime": 1541632866.4095802,
                    "dev": 64768,
                    "gid": 0,
                    "gr_name": "root",
                    "inode": 52174935,
                    "isblk": false,
                    "ischr": false,
                    "isdir": false,
                    "isfifo": false,
                    "isgid": false,
                    "islnk": false,
                    "isreg": true,
                    "issock": false,
                    "isuid": false,
                    "mode": "0644",
                    "mtime": 1541632866.4095802,
                    "nlink": 1,
                    "path": "/tmp/opt/CIE/ccfg/cie.ccfg",
                    "pw_name": "root",
                    "rgrp": true,
                    "roth": true,
                    "rusr": true,
                    "size": 0,
                    "uid": 0,
                    "wgrp": false,
                    "woth": false,
                    "wusr": true,
                    "xgrp": false,
                    "xoth": false,
                    "xusr": false
                }
            ],

1 个答案:

答案 0 :(得分:0)

看看json_query过滤器:

    - debug:
        msg: "{{ item }}"
      with_items: "{{ files | json_query('results[*].files[*].path') }}"

官方文档:https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#json-query-filter

带有更多示例的无耻插件:https://parko.id.au/2018/08/16/complex-data-structures-and-the-ansible-json_query-filter