Ansible - 仅定义路径的目标

时间:2016-11-15 15:45:54

标签: ansible

在这里打破我的大脑。我想解决一些小问题。 我的目标是在两个不同的文件夹中删除超过8天的文件。我的代码:

- name: check for files
  find:
    paths: "{{ item }}"
    age: 8d
  with_items:
    - /var/log/glusterfs
    - /var/log/glusterfs/bricks
  register: deleteold

- debug: var=deleteold.results[1].files[0].path

- name: remove files older than 8 days
  file:
    path: "{{ item.files[0].path }}"
    state: absent
  with_items: "{{ deleteold.results }}"
  # when: ???

通过这种方式,Ansible可以“定位”正确的文件(如果存在)。 但如果不存在文件,则会出错。因为没有定义变量。

我应该使用哪个when语句来仅删除目标文件。

为了方便:

创建一个旧的文件 - > touch -d 20161010 test.log 并调试:

- debug: var=deleteold.results[1].files[0].path

1 个答案:

答案 0 :(得分:0)

有一个更好的方法:

- find:
    paths:
      - /var/log/glusterfs
      - /var/log/glusterfs/bricks
    age: 8d
  register: old_files

- file:
    path: "{{ item.path }}"
    state: absent
  with_items: "{{ old_files.files }}"