Ansible 用于在远程主机上执行命令,如果想清除某个文件夹下的内容,该怎么配置 playbook?
目标
假如在远程主机上有个文件夹叫 target
,我们想删除其内部的所有文件,我们该怎么做?
方法一
最直接的方法当然是使用 ansible.builtin.shell
,然后执行
$ rm -rf target/*
写作 playbook 就是:
---
- name: clear target
ansible.builtin.shell:
cmd: "rm -rf target/*"
...
方法二
但是,ansible 提供了 ansible.builtin.file
模块用于操作文件(夹),由于 ansible 更多的是面向状态(state),而不是动作(action),所以我们可以利用 state
参数来达到清除文件夹内容的目的。
我们可以这么编写 playbook:
# playbook.yaml
---
- name: empty a directory
ansible.builtin.file:
path: target
state: "{{ item }}"
loop:
- absent
- directory
...
整个过程是,先删除文件夹本身,再重新创建一个文件夹。这样就能得到一个全新的文件夹。
如果您对本文有疑问或者寻求合作,欢迎 联系邮箱 。邮箱已到剪贴板
标签: ANSIBLE
给个免费的赞吧~
精彩评论
本站 是个人网站,采用 署名协议 CC-BY-NC 授权。
欢迎转载,请保留原文链接 https://www.lfhacks.com/tech/ansible-clear-a-directory/ ,且不得用于商业用途。