在被管理节点上创建文件或目录
在被管理节点上创建文件或目录
修改文件
文件模块
Files模块库包含的模块允许用户完成与Linux文件管理相关的大多数任务,如创建、复制、编辑和修改文件的权限和其他属性。
常用文件模块
名称 | 说明 |
---|---|
blockinfile | 插入、更新或删除由可自定义标记线包围的多行文本块 |
copy | 将文件从本地或远程计算机复制到受管主机上的某个位置。类似于file模块,copy模块还可以设置文件属性,包括SELinux上下文件 |
fetch | 此模块的作用和copu模块类似,但工作方式相反。从模块用于从被管理机获取文件到控制节点,并将它们存储在按主机名组织的文件树中 |
file | 设置权限、所有权、SELinux上下文以及常规文件、符号链接、硬链接和目录的时间戳等属性。此模块还可以创建或删除常规文件、符号链接、硬链接和目录。 |
lineinfile | 确保特定行位于某文件中,或使用反向引用正则表达式来替换现有行。此模块主要在用户想要更改文件的某一行时使用。 |
stat | 检索文件的状态信息,类似于Linux中的stat命令。 |
synchronize | 围绕rsync命令的一个打包程序,可加快和简化常见任务。 |
synchronize | 模块无法提供对rsync命令的完整功能的访问权限,但确实最常见的调用更容易实施。用户可能仍需通过run command模块直接调用rsync命令。 |
file模块
确保受管主机上存在文件
使用file模块处理受管主机上的文件。其工作方式与touch命令类似,如果不存在则创建一个空文件,如果存在,则更新其修改时间。
[root@client test]# cat test.yml
---
- host: 192.168.8.130
tasks:
- name: test
file:
path: /tmp/ABC
state: touch
修改文件属性
使用file模块还可以确保新的或现有的文件具有正确的权限和SELinux类型
[root@client ~]# ls -Z samba_file
-rw-r--r-- owner group unconfined_u:object_r:user_home_t:s0 samba_file
在受管主机上复制和编辑文件
copy模块用于将位于控制节点上的Ansible工作目录中的文件复制到选定的受管主机。
默认情况下,此模块假定设置了force: yes。这会强制该模块覆盖远程文件(如果存在但包含与正在复制的文件不同的内容)。如果设置force: no,则它仅会将该文件复制到受管主机(如果该文件尚不存在)。
[root@client test]# cat test.yml
---
- host: 192.168.8.130
tasks:
- name: test
copy:
src: /etc/ansible/test/test.yml
dest: /root/
要从受管主机检索文件,请使用fetch模块。这可用于在将参考系统分发给其他受管主机之前从参考系统中检查诸如SSH公钥之类的文件。
[root@client test]# cat test.yml
---
- host: 192.168.8.130
tasks:
- name: test
fe