2.Ansible的copy模块,我最常用的模块

1. 简述

先从我自身的情况来说,我不是运维人员,并且对linux操作也不是特别熟悉,所以工作中我使用ansible基本就是在平常的自动化部署中,而使用最多的模块就是copy模块。我使用copy模块也主要是来替换生产环境的配置文件。所以,这里我主要介绍一下copy模块。说实话,对于其他模块,我接触的也不多。

2.copy 模块的用法

2.1 官方概念

我们先看官方文档怎么说的copy这个模块
在这里插入图片描述
The copy' module copies a file from the local or remote machine to a location on the remote machine. Use the [fetch] module to copy files from remote locations to the local box. If you need variable interpolation in copied files, use the [template] module. Using a variable in the content’ field will result in unpredictable output. For Windows targets, use the [win_copy] module instead.

2.2 参数描述

参数描述
src指定被copy的文件或目录
dest指定文件将被拷贝到远程主机的哪个目录中
force当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否强制覆盖,可选值有yes和no,默认值为yes,表示覆盖,如果设置为no,则不会执行覆盖拷贝操作,远程主机中的文件保持不变。
backup当远程主机的目标路径中已经存在同名文件,并且与ansible主机中的文件内容不同时,是否对远程主机的文件进行备份,可选值有yes和no,当设置为yes时,会先备份远程主机中的文件,然后再将ansible主机中的文件拷贝到远程主机。
mode指定文件拷贝到远程主机后的权限,比如你想将权限设置为”rw-r–r–“,则可以使用mode=0644表示,如果你想要在user对应的权限位上添加执行权限,则可以使用mode=u+x表示

3. 示例

3.1 将主机文件复制到远程机器上某个目录下

more test/a.txt

在这里插入图片描述
执行copy命令

ansible all  -m copy -a "src=/test/a.txt dest=/test/"

在这里插入图片描述
在这里插入图片描述
复制成功了。
这个时候如果我们再执行一次,可以看到结果发生了变化
在这里插入图片描述
在这里插入图片描述
在远程机器上也看到了这个文件
在这里插入图片描述

3.2 在主机上将文本内容复制到远程机器上文件中

3.2.1 执行命令

ansible all -m copy -a 'content="qqqqq\nwwww\n" dest="/test2/a_1.txt"'

在这里插入图片描述

3.2.2 结果异常

FAILED! => {
“ansible_facts”: {
“discovered_interpreter_python”: “/usr/bin/python”
},
“changed”: false,
“checksum”: “a9dd8f985a0e22e8ce07dc2e9ec61d92fdeb96f9”,
“msg”: “Destination directory /test2 does not exist”
}

在这里插入图片描述
这里说是远程主机没有这个目录,是不是很尴尬啊。

3.2.3 问题解决

这个时候需要使用file模块,先创建目录:

ansible all -m file -a 'path=/test2/ state=directory'

在这里插入图片描述
在这里插入图片描述

3.2.4 重新执行创建文件命令

在这里插入图片描述
在这里插入图片描述

3.2.4 重新执行创建文件命令

在这里插入图片描述
在这里插入图片描述

3.2.5 验证

在这里插入图片描述
远程机器上有了这个文件,文件中也是我们的内容。

3.3 将主机文件复制到远程机器上某个目录下,如果远程主机中已经存在该文件,并且文件内容与 ansible 主机中的源文件的内容不一致,则不执行拷贝操作,远程主机中的文件内容也不会被改变

3.3.1 修改主控机文件

在这里插入图片描述

3.3.2 执行命令

ansible all -m copy -a 'src="/test/a.txt" dest="/test/" force=no'

在这里插入图片描述

3.3.3 结果验证

通过上面的结果,我们看到,文件没有改变成功。我们现在去远程机器上看一下情况。

在这里插入图片描述
文件内容确实没有改变。

3.4 将主机文件复制到远程机器上某个目录下,如果远程主机中已经存在该文件,并且文件内容与 ansible 主机中的源文件的内容不一致,则执行拷贝操作,远程主机中的文件内容也会被改变,并且在远程文件夹中会生成一个备份文件

3.4.1 执行命令

ansible all -m copy -a 'src="/test/a.txt" dest="/test/" backup=yes'

在这里插入图片描述
在这里插入图片描述

3.4.2 结果验证

从上面的返回结果,我们看到文件已经改变了。现在去远程机器上看一下
在这里插入图片描述
文件被改变,并且生成了备份文件,验证符合预期。

3.5 copy文件时加入权限

3.5.1 执行命令

ansible all  -m copy -a "src=/test/a.txt dest=/test/ mode=0421"

在这里插入图片描述
在这里插入图片描述

3.5.2 结果验证

执行前:
在这里插入图片描述
执行后:
在这里插入图片描述
我们看到发生了变化,符合预期。

3.5.3 linux权限小知识

可能有些同学对这个数字权限不是很清楚,这里简单说一下。
在Linu系统下用命令ll或者ls -la的时候会看到前面-rw-rw-r–一串字符,
r:read 代表读取权限 用数字4表示
w:write 代表写入权限 用数字2表示
x:excute 代表执行权限 用数字1表示

读取、写入、运行三项权限可以用数字表示,就是r=4,w=2,x=1。所以,-r—w—x用数字表示成421。
常用的一些Linux文件权限如下:
444 r–r–r–
600 rw-------
644 rw-r–r–
666 rw-rw-rw-
700 rwx------
744 rwxr–r–
755 rwxr-xr-x
777 rwxrwxrwx
以755为例:

1-3位7等于4+2+1,rwx,所有者具有读取、写入、执行权限;
4-6位5等于4+1+0,r-x,同组用户具有读取、执行权限但没有写入权限;
7-9位5,同上,也是r-x,其他用户具有读取、执行权限但没有写入权限。

4.小结

对于copy模块,我就写一下我自己平时常用的,仅供参考。

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

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

相关文章

rabbitMQ镜像队列的使用

在rabbitMQ集群中,默认发送消息时,队列默认时在一个节点上存在的。 我们以node01 node02 node03三节点集群为例,在node01声明队列发送消息后,发现: 测试队列只在节点node01上出现。 我们手动停止node01后&#xff0c…

Tomcat外传

作者简介:大家好,我是smart哥,前中兴通讯、美团架构师,现某互联网公司CTO 联系qq:184480602,加我进群,大家一起学习,一起进步,一起对抗互联网寒冬 本篇开始,我…

C++11线程以及线程同步

C11中提供的线程类std::thread,基于此类创建一个新的线程相对简单,只需要提供线程函数和线程对象即可 一.命名空间 this_thread C11 添加一个关于线程的命名空间std::this_pthread ,此命名空间中提供四个公共的成员函数; 1.1 get_id() 调用命名空间s…

Python自动化测试——元素定位

1.selenium简介 Selenium是一个用于Web应用程序测试的工具。Selenium是直接运行在浏览器中,模拟用户操作web界面。支持多平台:windows、linux、MAC ,支持多浏览器:ie、firefox、chrome等浏览器。 2. 启动浏览器 # 导入webdrive…

JavaWeb服务器详解和后端分层解耦

JavaWeb HTTP协议请求数据格式响应数据格式协议解析 Web服务器请求响应请求参数的接收响应 分层解耦IOC&DI入门IOC详解 HTTP协议 超文本传输协议,规定了浏览器和服务器之间数据传输的规则 特点: 基于TCP协议:面向连接,安全 …

【Android知识笔记】架构专题(二)

分层架构概论 分层的依据是什么? 关注点分离:自下而上,从机器到用户,从抽象到具体,从通用到业务,每一层,各自关注各自的抽象层次。修改与影响:不同层之间的代码或技术方案修改,彼此互不影响。例如 UI 界面从 xml 布局改成 Jetpack Compose 之后,不应该影响数据层。换…

kafka中的常见问题处理

文章目录 1. 如何防⽌消息丢失2. 如何防⽌重复消费3. 如何做到消息的顺序消费4. 如何解决消息积压问题4.1 消息积压问题的出现4.2 消息积压的解决⽅案 5. 实现延时队列的效果5.1 应用场景5.2 具体方案 1. 如何防⽌消息丢失 ⽣产者:1)使⽤同步发送 2&…

Maya 2024(3D建模、动画和渲染软件)

Maya 2024是一款非常强大的3D建模、动画和渲染软件,它提供了许多新功能和改进,以帮助建模师、动画师和渲染师更加高效地进行创作。 在建模方面,Maya 2024引入了Symmetry(对称)功能,可以在网格两侧生成均匀…

学习笔记三十六:通过Ingress-nginx实现灰度发布

通过Ingress-nginx实现灰度发布 灰度发布原理将新版本灰度给部分用户切一定比例的流量给新版本 部署两个版本的服务以 nginx 为例,先部署一个 v1 版本:部署一个 v2 版本再创建一个 Ingress,对外暴露服务,指向 v1 版本的服务:访问验证 基于 He…

智能井盖位移报警器效果一览,感知井盖异常

井盖位移是指井盖在受到外力作用下产生的位置移动。这种现象通常发生在道路颠簸、车流量较大或地下管道受压较大的区域,当然也不排除会出现在一些角落内。当井盖发生位移或倾斜时,不仅会影响城市内道路的通行,还会给行人和车辆带来安全隐患。…

web:catcat-new(文件包含漏洞、flask_session伪造)

前提知识 /etc/passwd 该文件储存了该Linux系统中所有用户的一些基本信息,只有root权限才可以修改。其具体格式为 用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell(以冒号作为分隔符) /proc/self proc是一个伪文件系统…

【前缀和]LeetCode1862:向下取整数对和

本文涉及的基础知识点 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 作者推荐 动态规划LeetCode2552&#xff1a;优化了6版的1324模式 题目 给你一个整数数组 nums &#xff0c;请你返回所有下标对 0 < i, j < nums.length 的 …

LangChain的函数,工具和代理(二):LangChain的表达式语言(LCEL)

LangChain Expression Language (LCEL) 是 LangChain 工具包的重要补充&#xff0c;旨在提高文本处理任务的效率和灵活性。LCEL 允许用户采用声明式方法来组合链&#xff0c;便于进行流处理、批处理和异步任务。其模块化架构还允许轻松定制和修改链组件。LCEL 的优势之一是它使…

知识图谱最简单的demo实现——基于pyvis

1、前言 我们在上篇文章中介绍了知识图谱的简单实现&#xff0c;最后使用neo4j进行了展示&#xff0c;对于有些情况我们可能并不想为了查看知识图的结果再去安装一个软件去实现&#xff0c;那么我们能不能直接将三元组画出来呢/ 接下来我们就介绍一个可视化的工具pyvis&#…

STM32/GD32_分散加载

Q&#xff1a;如何将一个变量、某个源文件的函数在编译阶段就存储在用户指定的区域&#xff1f; KEIL环境&#xff1a;.map后缀文件、.sct后缀文件 IAR环境&#xff1a;.map后缀文件、.icf后缀文件 【map文件】 对固件里面的变量、函数、常量等元素的存储空间进行分配的说明…

ffmpeg开发 环境配置

ffmpeg开发简图 1 下载ffmpeg开发包 https://ffmpeg.org/download.html 包含三个版本&#xff1a;Static、Shared以及Dev Static --- 包含3个应用程序&#xff1a;ffmpeg.exe , ffplay.exe , ffprobe.exe&#xff0c;体积都很大&#xff0c;相关的DLL已经被编译到exe里面去…

VS2022使用Vim按键

VS2022使用Vim按键 在插件管理里面搜索VsVim 点击安装&#xff0c;重启VS 工具->选项->VsVim 配置按键由谁处理&#xff0c;建议Ctrl C之类常用的使用VS处理&#xff0c;其它使用Vim处理

golang WaitGroup的使用与底层实现

使用的go版本为 go1.21.2 首先我们写一个简单的WaitGroup的使用代码 package mainimport ("fmt""sync" )func main() {var wg sync.WaitGroupwg.Add(1)go func() {defer wg.Done()fmt.Println("xiaochuan")}()wg.Wait() }WaitGroup的基本使用场…

力扣202题 快乐数 双指针算法

快乐数 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」 定义为&#xff1a; 对于一个正整数&#xff0c;每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1&#xff0c;也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1&#…

在ubuntu虚拟机上安装不同版本的交叉编译工具链

在之前的章节中&#xff0c;学习了如何安装了4.8.3的交叉编译工具链&#xff1a; 交叉编译 和 软硬链接 的初识&#xff08;面试重点&#xff09;-CSDN博客 但是&#xff0c;在之后学习内核编译时&#xff0c;由于我的树莓派内核版本较高&#xff0c;为6.1&#xff0c;所以在…