列出 docker 容器内超过 60 天的文件

Listing files older than 60 days inside a docker container

我正在尝试 运行 一个角色,使用 ansible shell 模块,删除文件(具有特定路径 - /myhome/dir/ 和命名 - *.ext) docker 个容器 (mycontainer),超过 60 天。

我是这样使用 shell 完成的:

---
- name: Delete files /myhome/dir/*.ext older than 60 days inside 
  shell: docker exec -t mycontainer find /myhome/dir1/ -name "*.ext" -type f -mtime +60 -delete

这是可行的,但我想采用相同的方法,但使用的是 Ansible 内置模块。

为了使下面的操作生效,您需要使用 ansible_connection: docker plugin.

从您的库存中定位您的 docker 容器

虚拟库存示例:

---
all:
  hosts:
    dummy_docker_container_name:
      ansible_connection: docker

ansible find 模块应该可以帮助您获取要删除的文件列表:

- name: Find old files
  find:
    age: 60d
    age_stamp: mtime
    hidden: yes
    recurse: yes
    patterns: "*.ext"
    paths: /myhome/dir1/
    register: list_of_old_files

然后您可以将文件列表传递给 file 模块以删除它们 one-by-one:

- name: Delete old files
  file:
    path: "{{ item.path }}"
    state: absent
  loop: "{{ list_of_old_files.files }}"