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 ... 整个过程是,先删除文件夹本身,再重新创建一个文件夹。这样就能得到一个全新的文件夹。