【问题标题】:Ansible: Extract the path loop findAnsible:提取路径循环查找
【发布时间】:2020-03-05 07:51:44
【问题描述】:

我有一个问题,当它是一个循环时,我无法将路径排除在搜索之外。

我以详细模式附加结果。

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/erverfile_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 }}"

我尝试使用“地图”过滤器,但无法找到路径。

你能帮帮我吗?

类似链接:How to filter Ansible 'find' output

BR,

【问题讨论】:

    标签: loops filter ansible find


    【解决方案1】:

    你必须给如下

    - debug:
        msg: "{{ item.files|map(attribute='path')|list }}"
      with_items: "{{registeroutput.results}}"
    

    【讨论】:

      【解决方案2】:

      首先感谢您的回答。

      [警告]:从 test.yml 构造映射时,第 2 行,列 3、发现一个重复的dict键(when)。仅使用最后定义的值。

      错误!任务中的重复循环:项目

      错误似乎在“test.yml”中:第 22 行第 3 列,但可能是 文件中的其他位置,具体取决于确切的语法问题。

      违规行似乎是:

      • 调试:这里是 ^

      尝试使用您的指示启动剧本,但您不能,因为您使用的是 2 个循环。 我的剧本有一个第一个循环来检查文件中的一些变量(vars_files)

      BR

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-09-17
        • 2018-08-10
        • 2017-11-07
        相关资源
        最近更新 更多