关于Ansible的模块②

转载说明:如果您喜欢这篇文章并打算转载它,请私信作者取得授权。感谢您喜爱本文,请文明转载,谢谢。


接《关于Ansible的模块 ①-CSDN博客》,继续学习和梳理Ansible的常用文件类模块

1. copy模块

从当前机器上复制文件到远程节点上,并且设置合理的文件权限。

参数含义
src指定要copy的文件源路径
dest指定copy文件的目标路径,必须有
content当不使用src指定拷贝的文件时,可以使用content直接指定文件内容,与src二者必选一
force当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,可加force参数表示是否强制覆盖文件,可选值有yes和no。默认值为yes,表示覆盖;如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。
backup当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。
owner指定文件拷贝到远程主机后的属主,但是目标主机上必须已存在该用户。
group指定文件拷贝到远程主机后的属组,但是目标主机上必须已存在该组。
mode指定文件拷贝到目标主机后的权限,如果想将权限设置为"rw-r--r--",则可以使用mode=0644表示(必须以0开始),如果想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示

copy模块在复制文件的时候会先比较一下文件的checksum,如果相同则不会复制,返回状态为SUCCESS;如果不同才会复制,返回状态为changed。

例如下面的例子,ansible主机和被管理主机的/tmp下都存在testsre.txt这个文件,但是里面的内容不完全一样,也是会复制成功,且不会改变被管理主机上testsre.txt这个文件原本的文件权限。

1)复制文件并修改文件权限(前提是目标服务器必须有对应的user和group):

2)复制前备份原文件

如果两个文件不同,且需要备份原文件,则加上backup=yes:

ansible all -m copy -a "src=/tmp/testsre.txt dest=/tmp/testsre.txt backup=yes"

执行结果:

2. template模块

如果复制的是静态文件,那么用copy模块就可以了。如果在复制的同时需要根据实际情况修改部分内容,则需要用到template模块。比如将带有参数的配置文件传递到目标地址等。

参数含义
srcAnsible 控制器上 Jinja2 格式模板的路径。这可以是相对路径或绝对路径。文件必须使用 utf-8 编码,但可以使用 output_encoding 来控制输出模板的编码
dest在远程计算机上呈现模板的位置
backup创建一个包含时间戳信息的备份文件,以便在您以某种方式错误地破坏它时可以恢复原始文件
owner文件或目录的所有者
group文件或目录的组所有者
mode文件或目录的权限

1)一个简单的文件推送与系统变量获取

[root@test101 templates]# cat test.conf.j2  #创建一个.j2文件
my ip is {{ ansible_host }}
[root@test101 templates]# #将test.conf.j2推送到目标主机,生成/tmp/ip文件
[root@test101 templates]# ansible all -m template -a "src=test.conf.j2  dest=/tmp/ip"

2)将远程主机的hostname写入其/tmp/hostname文件(这个文件原本不存在):

在ansible主机创建如下文件:

[root@test101 test]# tree 
.
├── hostname.yml
└── templates└── test.j21 directory, 2 files
[root@test101 test]# 
[root@test101 test]# cat hostname.yml 
---
- name: Write hostnamehosts: alltasks:- name: write hostname using jinja2ansible.builtin.template:src: templates/test.j2dest: /tmp/hostname
[root@test101 test]# 
[root@test101 test]# cat templates/test.j2 
My name is {{ ansible_facts['hostname'] }}
[root@test101 test]#

执行yaml文件:

3. file模块

fle 模块可以用来设置远程主机上的文件、软链接(symlinks)和文件夹的权限,也可以用来创建和删除它们。

参数含义
path指定远程服务器的路径,也可以写成‘dest’,‘name’
state

指定操作,可以将值设定为:

directory:创建目录;

touch:创建文件;

link:创建软连接;

hard:创建硬连接;

absent:删除目录文件或链接

mode文件复制到远程并设定权限,默认file=644,directory=755
owner文件复制到远程并设定属主,默认为root
group文件复制到远程并设定属组,默认为root
recurese递归修改

1)改变文件权限

mode 参数既可以直接赋值数字权限(必须以0开头),还可以用来增加和删除权:

#将目标主机/tmp/test目录的权限设置为sre:sre,权限改为777
ansible all -m file -a "path=/tmp/test state=directory mode=0777 owner=sre group=sre"

执行效果:

还可以通过如下方式修改权限:

ansible all -m file -a "path=/tmp/test state=directory mode="u=rw,g=r,o=r" owner=sre group=sre"
ansible all -m file -a "path=/tmp/test state=directory mode="u+x,o+wr" owner=sre group=sre"

2)创建文件软链接

注意,这里的src和dest参数的含义和copy不一样。file模块里操作的都是远程节点上的文件。

ansible all -m file -a "src=/tmp/test dest=/tmp/test1 state=link"

若加上owner和group字段,则会创建一个软连接并修改源文件的属主信息:

3)创建一个新文件

创建一个文件并指定属主和权限:

ansible all -m file -a 'path=/tmp/test/sre.txt state=touch mode=0400 owner=sre group=sre'

4)创建一个目录

创建一个指定了owner和group,并设置了权限的目录

ansible all -m file -a 'path=/tmp/sre state=directory mode=0400 owner=sre group=sre

5)删除文件

ansible all -m file -a "path=/tmp/test1  state=absent"

未完待续......

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/577946.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

婚恋交友APP小程序H5源码交付-支持二开!实名制交友,可服务器审核,亦可后台自己审核!同城交友,多人语音!

一、需求分析 在征婚交友网站开发初期,需求分析是至关重要的环节。这需要深入了解目标用户的需求和期望,包括他们的年龄、职业、兴趣爱好、交友条件等方面。通过收集和分析这些信息,开发团队可以明确网站的目标用户,并为他们提供…

考研数学|高效刷透汤家凤《1800》经验分享

当然不需要换老师,如果你在基础阶段连汤老师的课都听不进去,那么换其他老师的话,很大可能也是白搭。 如果你现在对于1800还是一筹莫展的话,那么很明显,这反映出前期基础不扎实,没有真正理解和掌握这部分内…

STM32 软件I2C方式读取AS5600磁编码器获取角度例程

STM32 软件I2C方式读取AS5600磁编码器获取角度例程 🔖本例程使用正点原子例程作为工程模板创建。 📘 硬件电路部分 🌿原理图部分: 🌿PCB布线和电路 📙驱动代码部分 int main(void) {u16 i 0;u16 ra…

天空卫士SASE 2.0:赋能您的数智安全

在这个以数据为核心的时代,企业的安全防线正面临着空前的挑战。随着对网络安全和数字化协作的需求不断攀升,企业如何在确保数据安全的前提下,维持业务的高效运转,成为了一个亟待解决的问题。企业管理者亟需一种集网络安全、云服务…

国产桌面操作系统统一身份认证及2FA双因子认证安全升级方案

某金融运营服务公司,主要负责业务处理、客户服务、业务监控、报表统计等金融运营服务,为集团下设二级单位,坐落于一线城市,对政策风向有很高的敏锐度。 该公司已为公司业务人员、客户服务、监督员等配备了数百台国产桌面操作系统…

ios启动页与flutter启动页无缝衔接,无闪烁和黑屏解决

1、首先需要配置原生的 LaunchScreen 如下图: 注意:LaunchScreen中View的SafeArea 一定要有。如果这里没有SafeArea就会出现flutter渲染第一帧和native衔接时出现闪烁的现象。splash.png也尽量放在根目录中,不要放在Assets中。 2、flutter启…

基于哈希槽的docker三主三从redis集群配置

目录 一、三主三从redis集群配置 1、关闭防火墙启动docker后台服务 2、新建6个docker容器redis实例 3、进入容器redis-node-1为6台机器构建集群关系 3.1进入容器 3.2构建主从关系 4、查看集群状态 4.1链接进入6381作为切入点 二、主从容错切换迁移按例 1、数据读写存储…

google浏览器网站不安全与网站的连接不安全怎么办?

使用google谷歌浏览器访问某些网站打开时google谷歌浏览器提示网站不安全,与网站的连接不安全,您之所以会看到此警告,是因为该网站不支持https造成的怎么办? 目录 1、打开谷歌google浏览器点击右上角【┇】找到设置

Tomcat一闪而过

步骤: 1.将startup.bat拖入命令行执行得:jre_home地址不正确,参考 2.环境变量中删除jre 3.再次执行,得:catalina_home未正确配置,配置参考 最后:发现jdk和tomcat版本不兼容,换成tom…

应用案例 | 复合机器人助力智能仓储物流实现高效发展

随着智能仓储物流技术的快速发展,复合机器人作为一种先进的自动化设备,正逐渐在仓储物流领域发挥重要作用。以下是一个复合机器人在智能仓储物流的应用案例。 案例背景 某大型电商企业面临着日益增长的订单量和仓储物流压力。为了提高物流效率、降低人力…

11-设计模式:Go常用设计模式概述

设计模式是啥呢?简单来说,就是将软件开发中需要重复性解决的编码场景,按最佳实践的方式抽象成一个模型,模型描述的解决方法就是设计模式。使用设计模式,可以使代码更易于理解,保证代码的重用性和可靠性。 …

基于Transformer的医学图像分类研究

医学图像分类目前面临的挑战 医学图像分类需要研究人员同时具备医学图像分析和数字图像的知识背景。由于图像尺度、数据格式和数据类别分布的影响,现有的模型方法,如传统的机器学习的识别方法和基于深度卷积神经网络的方法,取得的识别准确度…