当前位置: 首页 > news >正文

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.lryc.cn/news/254578.html

相关文章:

  • python程序将部分文件复制到指定目录
  • 5分钟教你利用服务器,打造1个 7*24H直播的直播间
  • 卡通渲染总结《二》
  • 严蔚敏数据结构p17(2.19)——p18(2.24) (c语言代码实现)
  • 0007Java程序设计-ssm基于微信小程序的在线考试系统
  • php 使用多线程
  • 基于MapBox的方法封装及调用
  • 华为OD机试真题-虚拟游戏理财-2023年OD统一考试(C卷)
  • 解决 video.js ios 播放一会行一会不行
  • 排序分析(Ordination analysis)及R实现
  • Tomcat主配置文件(server.xml)详解
  • Python实现简单的区块链,实现共识算法、Merkle Tree(默克尔树)、冲突解决、添加交易等功能
  • 深入理解 Java 虚拟机(JVM)从入门到精通
  • 哔哩哔哩自动评论软件,其成果展示与开发流程和代码分享
  • Qt OpenCV 学习(一):环境搭建
  • Redis——某马点评day02——商铺缓存
  • prometheus|云原生|轻型日志收集系统loki+promtail的部署说明
  • MySQL 临时数据空间不足导致SQL被killed 的问题与扩展
  • 文心一言大模型应用开发入门
  • C++新经典模板与泛型编程:SFINAE替换失败并不是一个错误
  • 基于若依的ruoyi-nbcio流程管理系统支持支持定时边界事件和定时捕获事件
  • 递归-极其优雅的问题解决方法(Java)
  • VSCode搭建STM32开发环境
  • 解决CentOS下PHP system命令unoconv转PDF提示“Unable to connect or start own listener“
  • 软件测试外包干了2个月,技术进步2年。。。
  • Linux-网络服务和端口
  • Kubernetes权威指南:从Docker到Kubernetes实践全接触(第5版)读书笔记 目录
  • 阿里云Arthas使用——通过watch命令查看类的返回值 捞数据出来
  • Redis中持久化策略RDB与AOF优缺点对比
  • 通用plantuml 时序图(Sequence Diagram)模板头