Ansible-1

Ansible是一款自动化运维、批量管理服务器的工具,批量系统配置、程序部署、运行命令等功能。基于Python开发,基于ssh进行管理,不需要在被管理端安装任何软件。Ansible在管理远程主机的时候,只有是通过各种模块进行操作的。
需要关闭防火墙和SELinux,设置为disabled模式,然后重启服务器
26bff7aa399849ceb86f9c7a50383f78.png
4277c996f0c84a7196b9b596c4667b52.png
配置host让各个电脑能够通过域名访问
2cafe6258260492690c2dee527fec0d1.png
72df9aaaab544cde94fdcc76251fdf4e.png
设置免密登录ssh-keygen,能够让control主机通过Ansible管理其他主机
af80636b2ea6442192b759f53710e54f.png
1f73a764d6fa486895a021515ba24c28.png
查看登录情况
5e5ab8db0cfc4e99a28d42e51154182b.png
安装Ansible
23bc3d6062f641918a140fc15f291ef7.png
配置Ansible管理环境,创建Ansible目录在该目录进行对其他主机的配置。
8e8a305e4fa342458a6a8766bfd4a69d.png
参考/etc/ansible/ansible.cfg模板编辑ansible.cfg(文件名必须是ansible.cfg)
d4e7bd566f2c4636a62f18464ea9fbed.png
7ca6fe6c795348368f407c5dac5d64d5.png
inventory=hosts:主机清单,需要管理的主机,配置在当前目录的hosts文件中,文件名自定义、
c6b4a2d38c044cefae3a3051ec98e4cd.png
编辑主机清单文件[ ]中为组名,[ ]下面为组的成员。Node[3:4]简化,表示从3到4。ctrl+n表示补全内容。可以嵌套组cluster表示大组,webservers和database表示小组
1e62033c58c148f6943fe1579480e663.png
184d78572ca94c49aca2899a61bd4a48.png
命令格式:ansible 主机集合  -m  模块名  -a  " 参数 "。
查看主机:ansible all --host
d147c23af9d0477489f9db8ca4d4c131.png
查看组的成员
6e195463210c4d1981adf72b3c50cd54.png
让所有的主机执行一条命令,如创建/tmp/abc目录(必须在~/ansible自己定义的里面有ansible.cfg文件ansible下面执行)
62c76efe1f9448fb8948ba443127d0f6.png
查看被管理的其他主机
c2b239f2bb6c46eeb0597ae3bb000f38.png
44cd912d2e2b455d982356e47134eb0d.png
ansible进行远程管理的两个方法:1、adhoc临时命令,就是在命令行上执行的管理命令如ansible all -a "mkdir /tmp/abc"。2、playbook剧本,把管理任务用特定格式写到文件中。无论那种方式都是通过模块加参数进行管理。
adhoc临时命令:ansible 主机或组列表  -m  模块(工具)  -a  "参数 "(-a是可选的)  
ping模块:检测所有远程主机能否ping通(因为ping主机传递的回应时间不一样所以主机的顺序有时候不一样)
9e7d2589960e4d3ca3f01a6df20b0c9f.png
ansible-doc  -l :查看所有的模块,大约有2834
d00a173cd8244569b1fad9fad3933f3f.png
814028783c224707b4a0c4ed48a2e315.png
command模块:ansible默认模块,用于在远程主机上执行任意命令,如ansible all -a "mkdir /tmp/abc" ,command不支持shell特性,如管道、重定向
b3144a14fa0341feac30de8b40cb3f74.png
使用 shell模块能够使用管道符等基础命令
b42fae945417434aac3085219429fd76.png
script模块:用于在远程主机上执行脚本。如在test组执行开启http服务的脚本
146ad7004946481b8a364dff0d7a7483.png
3d2ef65b6ab44cd39bcb1d2ca14fd98c.png
此时Node1主机还没有安装http服务
2feb1e693da743ed8da9e0b3ad40da92.png
执行test组执行test.sh脚本
0b1fef197d0f41e085ca7e99603194de.png
查看http服务
80cbf1363c584c2a834f807808051129.png
不建议使用command、shell和script模块,因为当执行脚本和创建文件第一次能够执行成功,但第二次有可能失败因为文件已经创建了,没有幂等性。
b43fad427b5c41cc80ee41680ae7ed0c.png
file模块:可以创建文件、目录、链接等,还可以修改权限、属性等。
常用的选项:path:指定文件路径。owner:设置文件所有者。group:设置文件所属组。mode:修改文件权限。state:状态,touch表示创建文件,directory表示创建目录,link表示创建软连接,absent表示删除。src:source的简写,原地址。dest:destination的简写,目标地址
使用file模块创建文件,执行几次都不会报错,绿色表示没有改动
96f4e556427c465087f6c24ddfe6194c.png
ansible-doc  file:查看模块的功能。搜索EXAMPLE查看file模块的案例
c62bb19f19a44a0fb96f250d02e35d62.png
cbdea35643014da6886d12f2feb53623.png
在test主机上创建1.txt文件,黄色表示改动成功
9080281b0e2240b99595ddccc3d55b64.png
2eedeedd0d564824b7128234045c524a.png
当在执行一次还是黄色,当使用touch创建文件不存在会创建文件,存在会修改文件的时间
a34d3bd952f645a3a251671b8dc4a994.png
ansible有期望模式,当目标主机有要执行的文件就会显示绿色,没有就会创建文件以满足期望为黄色。ansible test -m file -a "path=/tmp/1.txt owner=sshd group=amd mode=0777"
3dd12d8e53f84e64a6b5876949865680.png
此时查看修改成功。
254093eb256543c1b04c119c8bd0b32e.png
删除文件absent。ansible test -m file -a "path=/tmp/1.txt state=absent"
ba4e1e088b4b4e77826d67369d72b109.png
创建软连接link。 ansible test -m file -a "src=/etc/hosts dest=/tmp/hosts.txt state=link"
13b8fbd12eb045449e7f3a42ff853fd3.png
df38f1adb3f74ec7bb24627277bd139f.png
copy模块:用于将文件从控制端拷贝(上传)到被控端。
常用选项:src:源地址,控制端的文件路径。dest:目标地址,被控制端的文件路径。content:内容,需要写到文件中的内容。owner:设置文件所有者。group:设置文件所属组。mode:修改文件权限。
将文件拷贝到test主机中。 ansible test -m copy -a "src=a.txt dest=/root"
6b3a49976f174ce58d28b80ab89d7e48.png
70329ad2432d441bbbccfcac1420ff85.png
可以上传目录但必须是非空目录才能上传,否则传递不了
24dc26a3d44449fb96b2d6c51ef87a3a.png
当被控主机的SELinux不是disabled需要安装Python3-libselinux软件包
让被控主机自己创建文件并指定内容为什么。
 ansible test -m copy -a "dest=/tmp/test.txt content='hello world\n'"
ad483b543cbd447299893880b3d57f58.png
66c2cf2d3e934dac86ef37a3cddcf18e.png
fetch模块:下载。src:源地址,被控制端的文件路径。dest:目标地址,控制到的文件路径。下载的必须是文件,不能下载目录。
将目标主机的文件下载到本地用户的家目录下面。 ansible webservers -m fetch -a "src=/etc/hostname dest=~/"
a7b564c2c7b0420b912461c874a9af84.png
7ffecf3f531d4b4da1d996789623ba4b.png
lineinfile模块:用于确保目标文件中有某一行内容。
常用选项:path:待修改的文件路径。line:写入文件的一行内容。regexp:正则表达式,用于查找文件中的内容。
test的主机的/etc/issue文件中一定要有一行“hello world"的字符串,如果没有默认添加到文件结尾
ff856a73014c431fa145515b2281fa9a.png
61945fc311a240ecb454d149bb4c954d.png
当再次输入该命令后文件中的helloworld也只有一行
e5b5ab0efa844f6ab0b47a6225e4caf2.png
355f23c7438f49e39d9abf5c96877c43.png
让/etc/issue文件中有hello字符串的一行替换成“123456”,如果没有找到“hello”的字符串行就会在文件的末尾添加“123456”
ae12a1187a884aa88c0e1dcb58176b1d.png
e79e00992c874d1eb8b0cc079be8ea77.png
再次输入该命令就会在我就的末尾添加123456
2deafe3323924f60a5e75d96fd9f8299.png
replace模块:lineinfile会替换一行,replace可以替换关键字。
常用选项:path:待修改的文件路径。replace:将正则表达式查到的内容,替换成replace的内容。regexp:正则表达式,用于查找文件中的内容。
将/etc/issue文件中的123替换为abc
d7dab77fa52a42bfbce5e2f1f2317c18.png
78ac13c8b58f403f82977978dd7966ee.png
练习:
在目标主机上创建/tmp/my目录,属主和属组都是adm,权限为0777
 ansible test -m file -a "path=/tmp/my state=directory owner=adm group=adm mode='0777'"
9df249420c354a3ca42e8b8052eb6dbf.png
5aaa54c4672b4a6b9c152b53a8439c1e.png
将控制端的/etc/hosts文件上传到目标主机的/tmp/my目录中,属主和属组都是adm,权限为0600
ansible test -m copy -a "src=/etc/hosts dest=/tmp/my owner=adm group=adm mode=0600"
bc407ced992445669eb57b096d9f93ff.png
8384c44ae2294c64b5a110cfef54cff5.png
替换目标主机/tmp/my/host文件中的Node4为server4
ansible test -m replace -a "path=/tmp/my/hosts regexp='Node4' replace='server4'"
a5fa275ae292475d9cd822d26b49b5e5.png
34b98ceb9e2541318d1a7bd501866987.png
将目标主机/tmp/my/hosts文件下载到控制端的当前目录
ansible test -m fetch -a "src=/tmp/my/hosts dest=."
13f66f1300ab420488c501464a399834.png
0f9dd51b3d2c47babe4e318e160285a0.png
d75eec7b63bb4bd2acff953d8d2248aa.png
user模块:实现Linux用户管理。
常用选项:name:待创建的用户名。uid:用户ID。group:设置主组,groups:设置附加组。home:设置家目录。password:设置用户密码。state:状态,present表示创建,它是默认选项,absent表示删除。remove:删除用户家目录、邮箱等,值为yes或true都可以。
创建用户lisi
489bc6867bb04013ab02394b9facc743.png
6ef47f0b922344688ea7f1e071be2db1.png
创建用户wangwu,UID为1111,属组为adm,附加组为root,家目录为/home/wangwu(默认可以不写)。
 ansible test -m user -a "name=wangwu uid=1111 group=adm groups=root home=/home/wangwu"
101b2a2f4b5240e79f0fa4e4912ba1c0.png
e50e27bc2f9442a8b538b74b007df97b.png
添加lisi用户密码。此时设置的密码没有生效
603a9378ae7442aabc2f568fff74482a.png
283856f9eb6e4cd6b89cce47e845c8e4.png
需要设置加密密码,将123456给sha512算法进行加密。
ansible test -m user -a "name=lisi password={{'123456'|password_hash('sha512')}}"
5444c3ec40174c6bb1f8476d5b9c916c.png
此时设置的密码才会生效
885e097eaaf940d1806ff0967e9f11d2.png
删除lisi用户,添加remove=yes才能把用户的家目录给删除否则该用户的家目录还在。
217f7eeaadc64925ad7be389a70f1a91.png
此时用户的家目录还在
5ad5a3ef1f364db4984121fd6f4cb6eb.png
删除wangwu用户使用remove
f01b72a0cc764c9992c269440ada5341.png
此时用户的家目录就被删除了
f41682d9d85d41f0a567c35f571a4dfc.png
group模块:创建、删除组。
常用选项:name:待创建的组名。gid:组的ID号。state:present表示创建,它是默认选项,absent表示删除。
创建组。ansible test -m group -a "name=devops"
1a479d8c6a2e458c95b1aeac0e2c8036.png
删除组。ansible test -m group -a "name=devops state=absent"
4cf3a6fc5d5242358478d9ddbfc7d721.png
yum_repository模块:用于配置yum。
常用选项:file:指定文件名。name:yum标签。description:yum的描述信息。baseurl:yum的位置。enabled:仓库是否启用,填yes或no。gpgcheck:是否检测红帽填yes或no。
对test主机添加yum。
ansible test -m yum_repository -a "file=myrhel8 name=Appstream description=appstream baseurl=ftp://192.168.88.240/rhel/AppStream/ enabled=yes gpgcheck=no"
659297aecf1047fa8e60c1a48674e7fd.png
266defa15934405e8949fe70e68283bc.png
1de70c298110449ca73ac301f391aedb.png
添加BaseOS。
ansible test -m yum_repository -a "file=myrhel8 name=BaseOS description=baseos baseurl=ftp://192.168.88.240/rhel/BaseOS/ enabled=yes gpgcheck=no"
b0b8e1a0c803459089bf02d94de5d8e7.png
f9045dd769e349529ab3d667329a1fb7.png
yum模块:用于RPM软件包管理,如安装、升级、卸载。
常用选项:name:包名。state:状态,present表示安装,如已安装则忽略(默认选项)。latest:表示安装或升级到最新版本,absent表示卸载,
安装wget软件包。
10e9840d350747d8920afc4419005204.png
卸载
ee27383c14664b90badd1faa883ef36c.png
安装http。并且为最新版本。绿色表示已经安装并且为最新版本
515dadb925704d8da2a5bae7769f6080.png
service模块:管理服务的开启、关闭
常用选项:name:控制的服务名。state:started:开启服务,stopped表示关闭,restarted表示重新开启。enabled:是否开机自启动,填yes或no。
开启httpd服务,设置开机自启动
eb8acca315f24554967375bf6abd1bfd.png
查看httpd服务的状态
c5d6aaf39d4243bf973ffe72ae37fa3c.png

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

华润电力2024届校招人才测评通知润择认知能力测评考什么?

华润电力2024届校招人才测评通知润择认知能力测评考什么? 第一部分,认知测评润择-认知能力测评 您好! 本次测评包含逻辑推理、数字推理、语言理解三大类型的问卷。共计58题。 测评限时60分钟。其中逻辑推理、数字推理、语言推理分别限时20分钟。 如逾时…

Dubbo管理平台安装部署

访问dubbo-admin访问报404 源码自行到githup下载,在idea打开,然后在控制台使用命令打包,然后拖拽到tomcat的webapps目录 #打包命令mvn package -Dmaven.skip.testtrue 修改tomcat端口 修改dubbo-admin 的zookeeper地址

【黑马头条】-day04自媒体文章审核-阿里云接口-敏感词分析DFA-图像识别OCR-异步调用MQ

文章目录 day4学习内容自媒体文章自动审核今日内容 1 自媒体文章自动审核1.1 审核流程1.2 内容安全第三方接口1.3 引入阿里云内容安全接口1.3.1 添加依赖1.3.2 导入aliyun模块1.3.3 注入Bean测试 2 app端文章保存接口2.1 表结构说明2.2 分布式id2.2.1 分布式id-技术选型2.2.2 雪…

uniApp使用XR-Frame创建3D场景(6)播放模型动画

上篇文章讲述了如何将XR-Frame作为子组件集成到uniApp中使用 这篇我们讲解播放模型动画 先看源码 <xr-scene render-system"alpha:true" bind:ready"handleReady"> <xr-node visible"{{sec6}}"><xr-light type"ambient&qu…

uniapp vue-cli项目配置devServer和outPutDir

上一次说了使用vue-cli创建uni-app项目&#xff0c;然后使用第三方工具开发打包&#xff0c;利用jekins发布等。 这一次我想解决以下问题&#xff1a; 1我想配置devServer供开发环境使用&#xff0c;这样也可以解决开发环境的跨域问题 2以前我的每个版本信息都配置在package…

Pycharm服务器配置python解释器并结合内网穿透实现公网远程开发

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Excel:使用VLOOKUP函数,抓取指定数据,后一个列

Excel:使用VLOOKUP函数&#xff0c;抓取指定数据&#xff0c;后一个列 我们有这样一个数据源 要是实现这个页面的赋值 就是对应关系映射 使用 VLOOKUP(A2,Sheet2!$A$2:$B$9,2,FALSE)第一个参数是需要匹配的单元格。 第二个参数是数据源&#xff0c;我这里数据源用的是shee…

没学数模电可以玩单片机吗?

我们首先来看一下数电模电在单片机中的应用。数电知识在单片机中主要解决各种数字信号的处理、运算&#xff0c;如数制转换、数据运算等。模电知识在单片机中主要解决各种模拟信号的处理问题&#xff0c;如采集光照强度、声音的分贝、温度等模拟信号。而数电、模电的相互转换就…

单片机之串口通信

目录 串口介绍 通信的基本概念 并行通信和串行通信 同步通信和异步通信 串行异步通信方式 串行同步通信方式 通信协议 单片机常见通信接口 串行通信三种模式 串口参数 传输速度 ​串口的连接 电平标准 串行口的组成 串口数据缓冲寄存器 串行口控制寄存器 串口…

【IntelliJ IDEA】运行测试报错解决方案(附图)

IntelliJ IDEA 版本 2023.3.4 (Ultimate Edition) 测试报错信息 命令行过长。 通过 JAR 清单或通过类路径文件缩短命令行&#xff0c;然后重新运行 解决方案 修改运行配置&#xff0c;里面如果没有缩短命令行&#xff0c;需要再修改选项里面勾选缩短命令行让其显示&#x…

python基础 | 核心库:PIL

1、读取图像信息 查看图像信息 读取同一文件夹下的文件 可加 ./可不加 rom PIL import Image img Image.open(image.jpg) # 打开图像文件(注意:是去掉文件头的纯数据) print(img.format) # 图像格式(如BMP PNG JPEG 等) print(img.size) # 图像大小(…

灵动翻译音频文件字幕提取及翻译;剪映视频添加字幕

参考&#xff1a;视频音频下载工具 https://tuberipper.com/21/save/mp3 1、灵动翻译音频文件字幕提取及翻译 灵动翻译可以直接chorme浏览器插件安装&#xff1a; 点击使用&#xff0c;可以上传音频文件 上传后自动翻译&#xff0c;然后点击译文即可翻译成中文&#xff0c;…

【VMware Workstation】公司所有主机和虚拟机ip互通,以及虚拟机目录迁移

文章目录 1、场景2、环境3、实战3.1、所有主机和虚拟机ip互通Stage 1 : 【虚拟机】设置为桥接模式Stage 2 : 【虚拟机】设置ipStage 3 : 【路由器】ARP 静态绑定MACStage 3-1 ping 路由器 ipStage 3-2 【静态绑定】虚拟机查看mac地址Stage 3-3 【静态绑定】路由器ARP 静态绑定 …

【QT+QGIS跨平台编译】040:【geos_c+Qt跨平台编译】(一套代码、一套框架,跨平台编译)

点击查看专栏目录 文章目录 一、geos_c介绍二、文件下载三、文件分析四、pro文件五、编译实践一、geos_c介绍 GEOS_C(GEOS C++接口)是GEOS库的C语言版本,它提供了一套丰富的API,允许开发者在C++程序中执行复杂的几何形状处理和空间关系分析。GEOS_C是基于JTS(Java Topolog…

【MySQL】MySQL5.6---windows版本安装(附安装包)

期待您的关注 mysql5.6点击此处下载 提取码&#xff1a;gckb 我将mysql5.6-windows版本的解压包放到了上方的连接当中&#xff0c;如若不想使用我提供的安装包大家还可以在官方网站自行下载。 官方地址&#xff1a;https://dev.mysql.com/downloads/mysql/ 首先检查本地有没…

macOS 13 Ventura (苹果最新系统) v13.6.6正式版

macOS 13 Ventura是苹果电脑的全新操作系统&#xff0c;它为用户带来了众多引人注目的新功能和改进。该系统加强了FaceTime和视频通话的体验&#xff0c;同时优化了邮件、Safari浏览器和日历等内置应用程序&#xff0c;使其更加流畅、快速和安全。特别值得一提的是&#xff0c;…

量化交易软件开发定制的步骤

量化交易软件的定制开发是一个复杂而精细的过程&#xff0c;需要经过一系列步骤来确保最终交付的软件符合客户的需求并具有高度的可靠性和效率。以下是量化交易软件开发定制的主要步骤&#xff1a; 1. 需求分析与规划 在开始开发之前&#xff0c;首先需要与客户深入沟通&…

2.4 比较检验 机器学习

目录 常见比较检验方法 总述 2.4.1 假设检验 2.4.2 交叉验证T检验 2.4.3 McNemar 检验 接我们的上一篇《性能度量》&#xff0c;那么我们在某种度量下取得评估结果后&#xff0c;是否可以直接比较以评判优劣呢&#xff1f;实际上是不可以的。因为我们第一&#xff0c;测试…

MySQL创建表:练习题

练习题&#xff1a; 创建一个名为"students"的数据库&#xff0c;并切换到该数据库。 在"students"数据库中创建一个名为"grades"的表&#xff0c;包含以下字段&#xff1a; id: 整数类型 name: 字符串类型&#xff0c;学生姓名 subject: 字符串…

安全的内网通讯软件,WorkPlus定制化 IM/办公门户解决方案

如今处于数字化转型的“加速期”&#xff0c;政企正经历着一场数字化迭代升级的时代浪潮。而不少企业都已具备了数字化管理的意识&#xff0c;数字化应用场景也在全面推开。WorkPlus不断推动信息技术与企业业务深度融合&#xff0c;作为安全的内网通讯软件&#xff0c;为企业提…
最新文章