修改文件并将其复制到主机
一、确保受管主机上存在文件
使用 file 模块处理受管主机上的文件。其工作方式与 touch 命令类似,如果不存在则创建一个空文件,如果存在,则更新其修改时间。在本例中,除了处理文件之外,Ansible还确保将文件的拥有用户、组和权限设置为特定值。
二、修改文件属性
您可以使用 file 模块,确保新的或现有的文件具有正确的权限和 SELinux 类型。
例如,以下文件保留了相对于用户主目录的默认 SELinux上下文,这不是所需的上下文。
三、 使selinux文件上下文更具有持久性
设置文件上下文时,file模块的行为与chcon类似。通过运行restorecon,可能会意外地撤消使用该模块所做的更改。使用 file 设置上下文后,您可以使用system 模块集合中的sefcontext来更新SELinux策略,如semanage fcontext。
四、在受管主机上复制和编辑文件
在此示例中,copy 模块用于将位于控制节点上的Ansible 工作目录中的文件复制到选定的受管主打。
默认情况下,此模块假定设置了force:yes。这会强制该模块覆盖远程文件(如果存在但包含与正在复制的文件不同的内容)。如果设置force:no,则它仅会将该文件复制到受管主机(如果该文件尚不存在)。
复制文
确定内容
lineinfile模块
添加内容
要将文本块添加到现有文件,请使用block file模块:
五、删除文件
从受管主机中删除文件的基本示例是使用 file 模块和 state:absent 参数。state 参数对于许多模块是可选的。出于多个原因,您应始终明确您的意图,即您是需要state:present 还是state:absent。一些模块也支持其他选项。默认值可能会在某个时候发生变化,但也许最重要的是可以更轻松地根据您的任务了解系统应处于的状态。
六、检索受管主机上的文件状态
stat 模块检索文件的事实,类似于 Linuxstat 命令。参数提供检索文件属性、确定文件校验和等功能。
stat 模块返回一个包含文件状态数据的值的散列字典,允许您使用单独的变量引用各条信息。以下示例注册 stat 模块的结果,然后显示它检查的文件的 MD5 校验和。(也可使用更现代的SHA256 算法;这里使用 MD5 以提高易读性。)
七、同步控制节点和受管主机之间的文件
synchronize 模块是一个围绕rsync 工具的打包程序,它简化了 playbook 中的常见文件管理任务。rsync 工具必须同时安装在本地和远程主机上。默认情况下,在使用synchronize模块时,“本地主机”是同步任务所源自的主机(通常是控制节点),而“目标主机”是synchronize 连接到的主机。
以下示例将位于 Ansible 工作目录中的文件同步到受管主机: