列出 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 }}"
我正在尝试 运行 一个角色,使用 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.
虚拟库存示例:
---
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 }}"