Ansible的file模块是用来管理文件和目录的模块。它可以用来创建、删除、修改文件和目录的权限、所有权等属性。
一些常用的file模块的功能有:
ansible 主机组名 -m file -a "key=value1 key=values2..."
主机组名可以写在前方或者后方。
参数 | 选项 | 说明 | 类型: |
---|---|---|---|
path: | 必需性:是的,path 是file模块的必填参数。 | (必需)
要管理的文件的路径。如果在默认位置/etc/ansible/下可以只写文件名。 | 字符串,应包含你希望操作的文件或目录的绝对路径或相对路径。 |
state: | absent(删除)、directory(目录)、touch(文件)、hard(硬链接)、link(软连接)、present(创建) | absent:确保文件或目录不存在。如果文件或目录存在,则删除它们。 directory:确保目录存在。如果目录不存在,则创建它。如果目录已经存在,则不会执行任何操作。 file:确保文件存在。如果文件不存在,则创建它。如果文件已经存在,则不会执行任何操作。 hard:确保硬链接存在。如果硬链接不存在,则创建它。如果硬链接已经存在,则不会执行任何操作。 link:确保符号链接存在。如果符号链接不存在,则创建它。如果符号链接已经存在,则不会执行任何操作。 present:确保文件或目录存在。如果文件或目录不存在,则创建它们。如果文件或目录已经存在,则不会执行任何操作。这是默认值。 | |
mode: | 通常以八进制数字表示,如0644 、0755 等。 | 指定文件的权限。 前两位控制所有者权限,中间两位控制所属组权限,最后两位控制其他人权限。每一位可以是0、1、2、3、4、5、6、7,分别对应无权限、执行权限、写权限、写+执行权限、只读权限、读+执行权限、读+写权限、读+写+执行权限。 | |
owner: | 用户名称 | 指定文件所有者。 注意事项
| 字符串,通常应该是系统中存在的用户名。 |
group: | 组名称 | 指定文件所属用户组。 注意事项
| 字符串,通常是系统中存在的用户组名。 |
src: | 文件绝对路径 默认路径在/etc/ansible/下 | 用途:指定要复制的源文件路径。 当使用state参数为link、hard、copy或template时,src参数是必需的。
它可以是一个本地文件路径或远程URL。 如果src参数是一个文件路径,则可以使用相对路径或绝对路径。 默认位置在/etc/ansible/下。 | 字符串,可以是本地文件路径(相对于playbook或使用lookup 插件的绝对路径),或者是远程主机上的文件路径(当使用Ansible的URL或ansible.builtin.fetch 模块下载文件时)。 |
dest: | 指定了文件 [ 复制 | 或模板 ] 输出后在远程主机上的存放位置。 默认位置在/etc/ansible/下。 | 用途:指定文件复制或生成的目标路径。 当使用state参数为link、hard、copy、move、template或absent时,dest参数是必需的。 是看选用模块如copy所意思就是复制到远程主机的位置是哪里。 如果dest参数是一个文件路径,则可以使用相对路径或绝对路径。 | 字符串,表示目标主机上的文件或目录路径。 |
force: | 覆盖写入,yes为覆盖,no不覆盖。 |
| |
force: | 注意事项: force参数用于指定是否强制覆盖目标文件或目录。 当force参数设置为true时,如果目标文件或目录已经存在,Ansible会强制覆盖它。如果目标文件或目录不存在,则会创建它。 当force参数设置为false时,如果目标文件或目录已经存在,Ansible不会进行任何更改。如果目标文件或目录不存在,则会创建它。 | ||
follow: | yes/no | follow参数用于指定是否跟随符号链接。
| follow 选项是一个布尔类型的参数,用于控制符号链接(symlinks)的处理方式,默认值为yes 。 |
access_time: | 参数用于设置或修改文件的访问时间。 access_time参数可以接受以下几种格式的值:
| ||
access_time_format: | 参数用于指定access_time参数值的日期和时间格式。access_time_format参数的值为"unix",即将access_time参数值解释为Unix时间戳(以秒为单位)。 常见的access_time_format参数值及其对应的日期和时间格式:
| ||
attributes: | 参数用于设置文件或目录的属性。 attributes参数的值应该是一个字符串,由以下字符组成:
可以组合一起使用。 | ||
modification_time: | 参数用于设置文件或目录的修改时间。 修改时间(modification time)指的是文件或目录最后一次被修改的时间戳。在Ansible中,modification_time参数可以用来设置文件或目录的修改时间。 modification_time参数的值可以是一个绝对时间戳,也可以是一个相对时间。绝对时间戳是一个特定的日期和时间,而相对时间是相对于当前时间的偏移量。 | ||
modification_time_format: | 用于设置文件或目录修改时间的格式。 允许指定修改时间的格式,以便将时间字符串解析为正确的时间戳。它支持的格式与Python的strftime格式化字符串相同。
| 请注意,这种方法依赖于目标系统上的 touch 命令支持 -d 参数来指定日期时间格式。 | |
recurse: | yes/no | 用于指定是否递归地处理目录。 当使用file模块操作目录时,可以通过设置recurse参数来控制是否递归地处理目录中的文件和子目录。recurse参数的取值为布尔类型,即True或False,默认为False。 当recurse参数设置为True时,file模块会递归地处理目录中的所有文件和子目录。这意味着,无论在操作文件还是目录时,都会对目录及其内容进行相应操作。 | |
selevel: |
| 用于指定SELinux安全策略的级别。 在SELinux中,每个文件和进程都有一个安全上下文(Security Context),用于控制其访问权限。selevel参数用于指定要应用的SELinux安全策略的级别。 selevel参数的取值可以是一个字符串,表示安全策略的级别,也可以是一个变量,根据需要动态设置安全策略级别。 | |
serole: | 如system_r 、object_r 等。 | 设置SELinux角色(SEROLE)的名称。SELinux角色定义了一组权限,这些权限决定了哪些域(类型)可以由拥有该角色的进程执行。 | 字符串,代表SELinux角色,如system_r 、object_r 等。 |
- touch /tmp/test.txt
- echo "hello" > /tmp/test.txt
-
- ansible all -m copy -a "src=/tmp/test.txt dest=/root" # 默认force=yes
- # 查看
- ansible all -m shell -a "ls -al /root && cat test.txt"
- echo "hello ansible ..." > /tmp/test.txt
- ansible all -m copy -a "src=/tmp/test.txt dest=/root backup=yes"
ansible all -m copy -a "content='你好,全世界' dest=/root/test02.txt"
src与content选项互斥
- ansible all -m file -a "path=/tmp/test state=directory"
- ansible all -m file -a "path=/tmp/aa/bb/cc state=directory"
ansible test -l 192.168.88.201 -m file -a "path=/tmp/demo03.txt state=touch"
ansible test -m file -a "path=/tmp/demo02.txt state=touch"
ansible all -m file -a "path=/tmp/demo01.txt state=touch mode=777 owner=ftp group=daemon"