Ansible学习笔记5

copy模块:(重点)

copy模块用于对文件的远程拷贝(如把本地的文件拷贝到远程主机上。)

在master的主机上准备一个文件,拷贝文件到group1的所有主机上。

这个用的频率非常高,非常有用的一个模块。主要功能是统一修改配置文件。

[root@localhost ~]# ansible group1 -m copy -a "src=/etc/hosts dest=/etc/hosts"
192.168.17.105 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": true,"checksum": "ae3c3e4f757591751a520e8a4bba45490e6c3164","dest": "/etc/hosts","gid": 0,"group": "root","md5sum": "96e65e8b17fb861014e3ebfb1bff65b3","mode": "0644","owner": "root","size": 226,"src": "/root/.ansible/tmp/ansible-tmp-1693368934.83-2354-136222982931833/source","state": "file","uid": 0
}
192.168.17.106 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": true,"checksum": "ae3c3e4f757591751a520e8a4bba45490e6c3164","dest": "/etc/hosts","gid": 0,"group": "root","md5sum": "96e65e8b17fb861014e3ebfb1bff65b3","mode": "0644","owner": "root","size": 226,"src": "/root/.ansible/tmp/ansible-tmp-1693368934.83-2356-71888655051337/source","state": "file","uid": 0
}

然后到agent1和agent2的机器上检查/etc/hosts文件内容都进行了覆盖更新。

域名跟主机名的区别:(域名是外网的,,主机名是内网的。)

域名是公网的唯一名字,主机名是内网的名字。

目前自建DNS做域名解析已经很少了,但可以通过DNS解析主机名来实现多台服务器的解析。

以后,我们就可以使用ansible的copy和hostname模块,轻松实现了服务器的主机名管理,DNS也不需要搭建了。

[root@localhost ~]# ansible group1 -m copy -a "src=/etc/fstab dest=/tmp/222"
192.168.17.106 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": true,"checksum": "e4d20d971638d2d2169c6818bfea2b7d064d284e","dest": "/tmp/222","gid": 0,"group": "root","md5sum": "9048d752264ab2533e2cb774c7ddef4a","mode": "0644","owner": "root","size": 465,"src": "/root/.ansible/tmp/ansible-tmp-1693369734.13-2410-126910575557982/source","state": "file","uid": 0
}
192.168.17.105 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": true,"checksum": "e4d20d971638d2d2169c6818bfea2b7d064d284e","dest": "/tmp/222","gid": 0,"group": "root","md5sum": "9048d752264ab2533e2cb774c7ddef4a","mode": "0644","owner": "root","size": 465,"src": "/root/.ansible/tmp/ansible-tmp-1693369734.13-2408-266313468027161/source","state": "file","uid": 0
}

这里面有个diff比较的机制在里面。这个要注意下的。

如何判断一个文件有没有变化:可以使用md5sum来进行判断,如果文件内容没有发生变化,那么它的值是不会发生变化的。

force=no:

[root@localhost tmp]# ansible group1 -m copy -a "src=/etc/inittab dest=/tmp/222 force=no"
192.168.17.105 | SUCCESS => {"changed": false,"dest": "/tmp/222","src": "/etc/inittab"
}
192.168.17.106 | SUCCESS => {"changed": false,"dest": "/tmp/222","src": "/etc/inittab"
}

说明:如果/tmp/222存在,则不覆盖。这个就是force=no的作用。

force参数控制是否强制覆盖。force=yes:如果目标文件已存在,则会强制覆盖。

使用backup参数控制是否备份文件:

backup=yes:表示如果拷贝的文件内容与原文件内容不一样,则会备份一份。

[root@localhost tmp]# ansible group1 -m copy -a "src=/etc/inittab dest=/tmp/222 backup=yes"
192.168.17.106 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"backup_file": "/tmp/222.3124.2023-08-30@12:47:58~","changed": true,"checksum": "e285e50c4dd88d8a2f644dd1750f60400ca60f94","dest": "/tmp/222","gid": 0,"group": "root","md5sum": "66a88d6c4d693170753ea3382f8bc150","mode": "0644","owner": "root","size": 511,"src": "/root/.ansible/tmp/ansible-tmp-1693370880.02-2606-93307506651983/source","state": "file","uid": 0
}
192.168.17.105 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"backup_file": "/tmp/222.3003.2023-08-30@12:47:58~","changed": true,"checksum": "e285e50c4dd88d8a2f644dd1750f60400ca60f94","dest": "/tmp/222","gid": 0,"group": "root","md5sum": "66a88d6c4d693170753ea3382f8bc150","mode": "0644","owner": "root","size": 511,"src": "/root/.ansible/tmp/ansible-tmp-1693370879.99-2604-281117331564526/source","state": "file","uid": 0
}

在agent1机器上,如果内容不一直,先做一份备份。这个场景也是挺重要的。

如果怕出问题,可以做一个相应的备份。

copy模块需要注意拷贝目录后面是否带有"/"符号。拷贝的时候也可以修改属性。

练习:在master主机上配置好所有的yum源,然后拷贝所有的group1的远程主机上。(要求目录内的内容完全一致。)

[root@localhost tmp]# ansible group1 -m file -a "path=/etc/yum.repos.d/ state=absent"
192.168.17.106 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": true,"path": "/etc/yum.repos.d/","state": "absent"
}
192.168.17.105 | CHANGED => {"ansible_facts": {"discovered_interpreter_python": "/usr/bin/python"},"changed": true,"path": "/etc/yum.repos.d/","state": "absent"
}
[root@localhost tmp]# ansible group1 -m copy -a "src=/etc/yum.repos.d dest=/etc/"
192.168.17.105 | CHANGED => {"changed": true,"dest": "/etc/","src": "/etc/yum.repos.d"
}
192.168.17.106 | CHANGED => {"changed": true,"dest": "/etc/","src": "/etc/yum.repos.d"
}

源是目录,是拷贝目录,有个小细节,就是最后要加"/"。rsync加/和不加/是有区别的。

[root@localhost tmp]# ansible group1 -m copy -a "src=/etc/yum.repos.d/ dest=/etc/yum.repos.d/"
192.168.17.105 | SUCCESS => {"changed": false,"dest": "/etc/yum.repos.d/","src": "/etc/yum.repos.d/"
}
192.168.17.106 | SUCCESS => {"changed": false,"dest": "/etc/yum.repos.d/","src": "/etc/yum.repos.d/"
}

实现两个文件夹的内容完全一致,那可以先把这个文件整个进行删除,然后再进行copy。这个思路。

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

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

相关文章

pdf加密如何解除?这样解除加密很简单

pdf加密如何解除?有时,我们可能会收到一些加密的PDF文件,它们不允许我们对其进行编辑或打印。这时,我们需要使用PDF解密工具,以便能够轻松地解除PDF加密并对其进行编辑。那么接下来就给大家介绍一下pdf加密解除的方法。…

11.物联网lwip,网卡原理

一。LWIP协议栈内存管理 1.LWIP内存管理方案 (1)堆heap 1.灰色为已使用内存 2.黑色为未使用内存 3.紫色为使用后内存 按照某种算法,把数据放在内存块中 (2)池pool 设置内存池,设置成大小相同的内存块。 2…

JVM调优指令参数

常用命令查找文档站点:https://docs.oracle.com/javase/8/docs/technotes/tools/unix/index.html -XX:PrintFlagsInitial 输出所有参数的名称和默认值,默认不包括Diagnostic和Experimental的参数。可以配合 -XX:UnlockDiagnosticVMOptions和-XX:UnlockEx…

NoSQL数据库介绍+Redis部署

目录 一、NoSQL概述 1、数据的高并发读写 2、海量数据的高效率存储和访问 3、数据库的高扩展和高可用 二、NoSQL的类别 1、键值存储数据库 2、列存储数据库 3、文档型数据库 4、图形化数据库 三、分布式数据库中的CAP原理 1、传统的ACID 1)、A--原子性 …

Java版本工程管理系统源码企业工程项目管理系统简介

一、立项管理 1、招标立项申请 功能点:招标类项目立项申请入口,用户可以保存为草稿,提交。 2、非招标立项申请 功能点:非招标立项申请入口、用户可以保存为草稿、提交。 3、采购立项列表 功能点:对草稿进行编辑&#x…

大数据专业毕业能从事什么工作

大数据从业领域很宽广,不管是科技领域还是食品产业,零售业等都是需要大数据人才进行大数据的处理,以提供更好的用户体验,优化库存降低成本预测需求。 大数据开发做什么? 大数据开发分两类,编写Hadoop、Spa…

自然语言处理的多行业应用

在我们小时候,甚至是我们会走路或说话之前,就已经在察觉周围发出的声音了。我们倾听其他人发出的声响和声音。我们将声音组合成有意义的词语,例如“母亲”和“门”,并学习解读周围人的面部表情,以加深我们对词组的理解…

Linux 指令心法(四)`touch` 创建一个新的空文件

文章目录 命令的概述和用途命令的用法命令行选项和参数的详细说明命令的示例命令的注意事项或提示 命令的概述和用途 touch 是一个用于在 Linux 和 Unix 系统中创建空文件或更改现有文件的访问和修改时间的命令。如果指定的文件不存在,touch会创建一个新的空文件&a…

国产自主可控C++工业软件可视化图形架构源码

关于国产自主代替的问题是当前热点,尤其是工业软件领域。 “一个功能强大的全自主C跨平台图形可视化架构对开发自主可控工业基础软件至关重要!” 作为全球领先的C工业基础图形可视化软件提供商,UCanCode软件有自己的思考,我们认…

linux C编程 获取系统时间

1.clock_gettime #include<time.h> int clock_gettime(clockid_t clk_id,struct timespec *tp); struct timespec {time_t tv_sec; /* 秒*/long tv_nsec; /* 纳秒*/ }clk_id : CLOCK_BOOTTIME&#xff0c;以系统启动时间为时间原点的时间体系&#xff0c;不受其它因素的…

青翼科技基于VITA57.1的16路数据收发处理平台产品手册

FMC211是一款基于VITA57.1标准规范的实现16路LVDS数据采集、1路光纤数据收发处理FMC子卡模块。 该板卡支持2路CVBS&#xff08;复合视频&#xff09;视频输入&#xff0c;能够自动检测标准的模拟基带电视信号&#xff0c;并将其转变为8位ITU-R.656接口信号或者4:2:2分量视频信…

Java 大厂八股文面试专题-设计模式 工厂方法模式、策略模式、责任链模式

面试专题-设计模式 前言 在平时的开发中&#xff0c;涉及到设计模式的有两块内容&#xff0c;第一个是我们平时使用的框架&#xff08;比如spring、mybatis等&#xff09;&#xff0c;第二个是我们自己开发业务使用的设计模式。 面试官一般比较关心的是你在开发过程中&#xff…

Opencv-C++笔记 (18) : 轮廓和凸包

文章目录 一、轮廓findContours发现轮廓drawContours绘制轮廓代码 二.几何及特性概括——凸包(Convex Hull)凸包概念凸包扫描算法介绍——Graham扫描算法 相关API介绍程序示例轮廓集合及特性性概括——轮廓周围绘制矩形框和圆形相关理论介绍轮廓周围绘制矩形 -API绘制步骤程序实…

Java异常处理

Java内置了一套异常处理机制&#xff0c;总是使用异常来表示错误。一个健壮的程序必须处理各种各样的错误。所谓错误&#xff0c;就是程序调用某个函数的时候&#xff0c;如果失败了&#xff0c;就表示出错 异常是一种class&#xff0c;因此它本身带有类型信息。异常可以在任何…

【K8S系列】深入解析k8s网络插件—Cilium

序言 做一件事并不难&#xff0c;难的是在于坚持。坚持一下也不难&#xff0c;难的是坚持到底。 文章标记颜色说明&#xff1a; 黄色&#xff1a;重要标题红色&#xff1a;用来标记结论绿色&#xff1a;用来标记论点蓝色&#xff1a;用来标记论点 在现代容器化应用程序的世界中…

深入理解 JVM 之——Java 内存区域与溢出异常

更好的阅读体验 \huge{\color{red}{更好的阅读体验}} 更好的阅读体验 本篇为深入理解 Java 虚拟机第二章内容&#xff0c;推荐在学习前先掌握基础的 Linux 操作、编译原理、计算机组成原理等计算机基础以及扎实的 C/C 功底。 该系列的 GitHub 仓库&#xff1a;https://github…

Power View

界面 切换可视化效果 对于已经上传到透视表的数据&#xff0c;选择power view&#xff0c;形成表格后。

国标视频云服务EasyGBS国标视频平台迁移服务器后无法启动的问题解决方法

国标视频云服务EasyGBS支持设备/平台通过国标GB28181协议注册接入&#xff0c;并能实现视频的实时监控直播、录像、检索与回看、语音对讲、云存储、告警、平台级联等功能。平台部署简单、可拓展性强&#xff0c;支持将接入的视频流进行全终端、全平台分发&#xff0c;分发的视频…

RT-Thread 线程管理(二)

系统线程 系统线程是指由系统创建的线程&#xff0c;用户线程是由用户程序调用线程管理接口创建的线程&#xff0c;在 RT-Thread 内核中的系统线程有空闲线程和主线程。 空闲线程 空闲线程&#xff08;idle&#xff09;是系统创建的最低优先级的线程&#xff0c;线程状态永远…

【MySQL】基础语法总结

MySQL 基础语句 一、DDL 数据库定义语言 1.1CREATE 创建 1.1.1 创建数据库 语法结构 CREATE DATABASE database_name;示例 CREATE DATABASE demo;1.1.2 创建表 语法结构 CREATE TABLE 表名 (列1 数据类型,列2 数据类型,... );示例 CREATE TABLE new_user (id INT PRIMARY KE…