Ansible 无法使用with_items循环访问查找模块的结果

Ansible 无法使用with_items循环访问查找模块的结果,ansible,Ansible,我试图遍历ansible 2.3.x中的列表列表(我有一堆返回列表上下文的项)。我想根据寄存器变量的结果采取行动,但在使用my和\u items时,我似乎无法找到基本元素。我已尝试在下面的代码中进行映射,但始终无法访问已注册结果中的属性“path”(我希望使用对\u项进行迭代) 以下是我运行时的结果: ok: [localhost] => (item=findresult.results) => { "findresult.results": [ {

我试图遍历ansible 2.3.x中的列表列表(我有一堆返回列表上下文的项)。我想根据寄存器变量的结果采取行动,但在使用my
和\u items
时,我似乎无法找到基本元素。我已尝试在下面的代码中进行映射,但始终无法访问已注册结果中的属性“path”(我希望使用
对\u项进行迭代)

以下是我运行时的结果:

ok: [localhost] => (item=findresult.results) => {
    "findresult.results": [
        {
            "_ansible_item_result": true, 
            "_ansible_no_log": false, 
            "_ansible_parsed": true, 
            "changed": false, 
            "examined": 4, 
            "files": [
                {
                    "atime": 1500919313.0, 
                    "ctime": 1500919690.9134178, 
                    "dev": 64774, 
                    "gid": 1002, 
                    "inode": 94371970, 
                    "isblk": false, 
                    "ischr": false, 
                    "isdir": false, 
                    "isfifo": false, 
                    "isgid": false, 
                    "islnk": false, 
                    "isreg": true, 
                    "issock": false, 
                    "isuid": false, 
                    "mode": "0664", 
                    "mtime": 1500919313.0, 
                    "nlink": 1, 
                    "path": "/home/cbr/update/currentVersion.1500918030", 
                    "rgrp": true, 
                    "roth": true, 
                    "rusr": true, 
                    "size": 0, 
                    "uid": 1001, 
                    "wgrp": true, 
                    "woth": false, 
                    "wusr": true, 
                    "xgrp": false, 
                    "xoth": false, 
                    "xusr": false
                }, 
                {
                    "atime": 1500919313.0, 
                    "ctime": 1500919690.9134178, 
                    "dev": 64774, 
                    "gid": 1002, 
                    "inode": 94371969, 
                    "isblk": false, 
                    "ischr": false, 
                    "isdir": false, 
                    "isfifo": false, 
                    "isgid": false, 
                    "islnk": false, 
                    "isreg": true, 
                    "issock": false, 
                    "isuid": false, 
                    "mode": "0664", 
                    "mtime": 1500919313.0, 
                    "nlink": 1, 
                    "path": "/home/cbr/update/currentVersion.1500919311", 
                    "rgrp": true, 
                    "roth": true, 
                    "rusr": true, 
                    "size": 0, 
                    "uid": 1001, 
                    "wgrp": true, 
                    "woth": false, 
                    "wusr": true, 
                    "xgrp": false, 
                    "xoth": false, 
                    "xusr": false
                }
            ], 
            "invocation": {
                "module_args": {
                    "age": null, 
                    "age_stamp": "mtime", 
                    "contains": null, 
                    "file_type": "file", 
                    "follow": false, 
                    "get_checksum": false, 
                    "hidden": false, 
                    "paths": [
                        "/home/cbr/update/"
                    ], 
                    "patterns": [
                        "currentVersion.*"
                    ], 
                    "recurse": false, 
                    "size": null, 
                    "use_regex": false
                }
            }, 
            "item": "cbr", 
            "matched": 2, 
            "msg": ""
        }

你的上一个任务非常接近。您只需要翻转路径和文件

- name: Debug result
  debug:
    var: "{{item.path}}"
  with_items: "{{ findresult.results | map(attribute='files') | list}}
或者,您可以将
与_子元素一起使用

- name: Debug result
  debug:
    msg: "{{ item.1.path }}"
  with_subelements:
  - "{{ findresult.results }}"
  - files

要访问的属性“路径”属于列表中由键索引的每个元素。 在任务“从上一版本变量中删除更新”中,注册
findresult
,这是一个字典

  - name: remove update from last version
    find:
      paths: "/home/{{item}}/update/"
      patterns: "currentVersion.*"
    with_items: "{{basecomponents}}"
    register: findresult
因此,为了循环“路径”属性,您需要首先使用键获取列表,如下所示:

   - name: remove current version
     file:
       path: "{{ item.path }}"
       state: absent
     with_items: "{{ findresult['files'] }}"

非常感谢!你的地图属性解决方案修复了一个我已经修补了大约两天的问题!
   - name: remove current version
     file:
       path: "{{ item.path }}"
       state: absent
     with_items: "{{ findresult['files'] }}"