Skip to content
章节导航

file 模块

file 模块 用于管理文件和文件属性。

主要用于目标机器创建文件、目录,以及对目标机器上的文件、目录的权限进行修改。

常用参数

参数名是否必须默认值选项说明
path远程被管理文件或目录的路径
src要链接到的文件的路径,只有在 state=link 或者 state=hard 时才有效
owner远程被管理的文件或者目录所属用户
group远程被管理的文件或者目录所属组
mode生成的文件系统对象应具有的权限,比如 0644 或者 0600
recursefalsetrue
false
递归地在目录内容上设置指定的文件属性,仅允许当 state=directory 是使用
state默认是文件的当前状态(如果存在)
如果 recurse=yes 则为目录,否则为文件。
absent
directory
file
hard
link
touch
directory 创建目录
link 符号链接将被创建或更改
touch 创建空文件

更多参数可以使用命令 ansible-doc -s file 获取更多使用相关的文档或者查看官方文档

一些示例

远程创建文件

使用 file 模块的 state=touchpath 参数。

bash
ansible all -i src/inventory.yml -m file -a "path=/tmp/ansible-file.txt state=touch"

# 查看文件状态
ansible all -i src/inventory.yml -m shell -a "ls -l /tmp/ansible-file.txt"

远程创建目录

使用 file 模块的 state=directorypath 参数。

bash
ansible all -i src/inventory.yml -m file -a "path=/tmp/ansible-file state=directory"

# 查看目录状态
ansible all -i src/inventory.yml -m shell -a "ls -ld /tmp/ansible-file*"

创建软连接

使用 file 模块在远程被管理的机器上指定源文件创建软连接。使用 srcdeststate=link 参数。

bash
ansible all -i src/inventory.yml -m file -a "src=/etc/hosts dest=/tmp/hosts state=link"

# 查看文件状态
ansible all -i src/inventory.yml -m shell -a "ls -l /tmp/hosts"

src 参数需要配合 state=linkstate=hard 使用才能生效。

设定文件权限

使用 file 模块的 state=touchpathownergroupmode 参数。

bash
ansible all -i src/inventory.yml -m file -a "path=/tmp/ansible-file.txt state=touch owner=www group=www mode=0777" # 注意需要保证 www 用户和用户组在远程服务器上存在

# 查看文件状态
ansible all -i src/inventory.yml -m shell -a "ls -ld /tmp/ansible-file*"
  • owner 修改文件或目录属主
  • group 修改文件或目录属组
  • mode 修改文件或目录权限