【问题标题】:Removing files except for some in ansible [duplicate]删除除ansible中的一些文件之外的文件[重复]
【发布时间】:2017-06-21 12:10:05
【问题描述】:

我的 tmp 目录中有以下文件

root@ansible:/tmp/test$ ls /tmp/test/
file1  file2  file3

我还有以下以this 为蓝本的剧本

vars:
  exclude_files: file1
tasks:
 - name: check files
   shell: ls -l /tmp/test
   register: capture

- name: remove files
  file: path=/tmp/test/{{item}} state=absent
  with_items: capture.stdout_lines
  when: item not in exclude_files

- name: debug variable
  debug: msg={{exclude_files}}

不幸的是,第二个任务没有删除file2,file3。相反,它将注册的变量视为文件。

ok: [172.16.2.3] => (item=capture.stdout_lines) => {
"changed": false,
"invocation": {
    "module_args": {
        "attributes": null,
        "backup": null,
        "content": null,
        "delimiter": null,
        "diff_peek": null,
        "directory_mode": null,
        "follow": false,
        "force": false,
        "group": null,
        "mode": null,
        "original_basename": null,
        "owner": null,
        "path": "/tmp/test/capture.stdout_lines",
        "recurse": false,
        "regexp": null,
        "remote_src": null,
        "selevel": null,
        "serole": null,
        "setype": null,
        "seuser": null,
        "src": null,
        "state": "absent",
        "unsafe_writes": null,
        "validate": null
    }
},
"item": "capture.stdout_lines",
"path": "/tmp/test/capture.stdout_lines",
"state": "absent"

知道为什么这段代码不起作用吗?我正在使用 ansible 2.3。

【问题讨论】:

  • 这不是重复的,因为它还暗示了如何复制除某些文件之外的所有文件。非常有用,感谢 crusadecoder。

标签: ansible


【解决方案1】:

with_items: capture.stdout_lines 应该是with_items: "{{capture.stdout_lines}}"

with_... 中的裸变量早已被弃用。

【讨论】:

    猜你喜欢
    • 2014-09-06
    • 2011-05-18
    • 2017-07-01
    • 2019-01-13
    • 1970-01-01
    • 2014-06-08
    • 1970-01-01
    • 2015-07-22
    • 1970-01-01
    相关资源
    最近更新 更多