Ansible的
file
模块是一个非常强大的工具,用于管理远程系统上的文件和文件属性。你可以使用它来创建、删除和修改文件,以及设置权限,甚至可以处理符号链接。这个模块通常与Ansible的
copy
和
template
模块一起使用,用于将文件从本地主机(或代码仓库)传输到远程主机。
以下是一些使用
file
模块的常见示例:
改变文件的所有权、组和权限
:
“`yaml
name: Change file ownership, group and permissions
ansible.builtin.file:
path: /etc/foo.conf
owner: foo
group: foo
mode: ‘0644’
”`
创建一个符号链接
:
“`yaml
name: Create a symbolic link
ansible.builtin.file:
src: /file/to/link/to
dest: /path/to/symlink
owner: foo
group: foo
state: link
”`
创建硬链接
:
“`yaml
name: Create two hard links
ansible.builtin.file:
src: ‘/tmp/{{ item.src }}’
dest: ‘{{ item.dest }}’
state: hard
loop:
– { src: x, dest: y }
– { src: z, dest: k }
”`
确保目录存在
:
“`yaml
name: Ensure a directory exists
ansible.builtin.file:
path: /etc/some_directory
state: directory
”`
删除文件
:
“`yaml
name: Remove file (delete file)
ansible.builtin.file:
path: /etc/foo.txt
state: absent
”`
递归删除目录
:
“`yaml
name: Recursively remove directory
ansible.builtin.file:
path: /etc/foo
state: absent
recurse: yes
”`
file
模块是幂等的,这意味着如果最终状态已经达成,它将退出而不执行任何操作。这有助于确保重复执行任务不会改变最终状态。