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