我有一个问题,当它是一个循环时,我无法从搜索中获得路径。
我以详细模式附加结果。
ok: [server04] => (item={u'nombre': u'server04', u'activ': 1, u'sen_num': 4}) => {
"ansible_loop_var": "item",
"item": {
"activ": 1,
"nombre": "server04",
"sen_num": 4
},
"registeroutput": {
"changed": false,
"msg": "All items completed",
"results": [
{
"ansible_loop_var": "item",
"changed": false,
"item": {
"activ": 0,
"nombre": "server01",
"sen_num": 1
},
"skip_reason": "Conditional result was False",
"skipped": true
},
{
"ansible_loop_var": "item",
"changed": false,
"item": {
"activ": 0,
"nombre": "server02",
"sen_num": 2
},
"skip_reason": "Conditional result was False",
"skipped": true
},
{
"ansible_loop_var": "item",
"changed": false,
"item": {
"activ": 0,
"nombre": "son03vmonvlc-voip",
"sen_num": 3
},
"skip_reason": "Conditional result was False",
"skipped": true
},
{
"ansible_loop_var": "item",
"changed": false,
"examined": 44211,
"failed": false,
"files": [
{
"atime": 1583335682.6563582,
"ctime": 1583335657.5443044,
"dev": 64768,
"gid": 0,
"gr_name": "root",
"inode": 8984071,
"isblk": false,
"ischr": false,
"isdir": true,
"isfifo": false,
"isgid": false,
"islnk": false,
"isreg": false,
"issock": false,
"isuid": false,
"mode": "0755",
"mtime": 1583335657.5443044,
"nlink": 2,
"path": "/tmp/erverfile_ouput",
"pw_name": "root",
"rgrp": true,
"roth": true,
"rusr": true,
"size": 6,
"uid": 0,
"wgrp": false,
"woth": false,
"wusr": true,
"xgrp": true,
"xoth": true,
"xusr": true
}
],
"invocation": {
"module_args": {
"age": null,
"age_stamp": "mtime",
"contains": null,
"depth": null,
"excludes": null,
"file_type": "directory",
"follow": false,
"get_checksum": false,
"hidden": false,
"paths": [
"/usr"
],
"patterns": [
"erverfile_ouput"
],
"recurse": true,
"size": null,
"use_regex": false
}
},
"item": {
"activ": 1,
"nombre": "server04",
"sen_num": 4
},
"matched": 1,
"msg": ""
}
]
}
}
我想要获得"路径":"/tmp/serverfile_ouput",">
战术手册是:
- name: Find erverfile_ouput
find:
paths: /tmp
patterns: '*erverfile_ouput'
recurse: yes
file_type: directory
register: registeroutput
when: "{{ item.activ }} == 1"
loop: "{{ sondasvars }}"
tags:
- move
- debug:
var: "{{ registeroutput.results.files|map(attribute='path')|list }}"
when: "{{ item.activ }} == 1"
loop: "{{ sondasvars }}"
我试着使用"地图"过滤器,但无法找到路径。
你能帮我吗?
类似链接:如何过滤Ansible';查找';输出
BR,
您必须给出以下
- debug:
msg: "{{ item.files|map(attribute='path')|list }}"
with_items: "{{registeroutput.results}}"
首先,感谢您的回答。
[警告]:从test.yml第2行第列构造映射时3,发现一个重复的dict密钥(当(。仅使用上次定义的值。
错误!任务中的重复循环:项目
错误出现在"test.yml"中:第22行,第3列,但可能是文件中的其他位置,具体取决于确切的语法问题。
违规行似乎是:
- 调试:^此处
试着用你的指示启动剧本,但你做不到,因为你使用了2个循环。我的剧本有一个第一个循环来检查文件(vars_files(中的一些变量
BR