第28章 ansible的使用

第28章 ansible的使用

本章主要介绍在 RHEL8 中如何安装 ansible 及 ansible的基本使用。
◆ ansible 是如何工作的
◆ 在RHEL8 中安装ansible
◆ 编写 ansible.cfg 和清单文件
◆ ansible 的基本用法

文章目录

  • 第28章 ansible的使用
    • 28.1 安装ansible
    • 28.2 编写ansible.cfg和清单文件
    • 28.3 ansible的基本用法
    • 作业

如果管理的服务器很多, 如几十台甚至几百台,那么就需要一个自动化管理工具了,ansible就是这样的一种自动化管理工具。
​ ansible 是通过ssh 连接到被管理主机,然后执行相关操作的,如图28-1 所示。

在这里插入图片描述

ansible 主机通过ssh 连接到被管理主机时,需要提前设置密钥登录,使得从 ansible 主 机可以无密码登录到被管理主机。

本实验的拓扑图如图28-2所示。

在这里插入图片描述

这里server 是 ansible 主机,以lduan用户登录。server2和 server3 是被管理主机,在这两 台主机上创建lduan用户并配置好 sudo, 使得这两台主机上的Iduan用户通过sudo -i 可 以 无 密码切换到 root, 下面开始配置。

28.1 安装ansible

先 使 用 root 用户登录 server,在 其 上 配 置 epel 源,命令如下。

[root@server ~]# yum install -y https://mirrors.aliyun.com/epel/epel- release-latest-8.noarch.rpm
[root@server ~]# sed -i 's|^#baseurl=https://download.fedoraproject.org/publbaseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel*
[root@server ~]# sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
[root@server ~]#

在 server 上安装 ansible, 命令如下。

[root@server  ~]# yum install ansible -y
Updating Subscription Management repositories.
Unable to read consumer identity...输出...
[root@server ~]#

如果安装有问题,可以到 htps://www.thce.cc/3940.html 下载ansible 的离线包。

查看 ansible 的版本,命令如下。

[root@eserver ~]# ansible --version
ansible 2.9.27
config file  = /etc/ansible/ansible.cfg
...输出...
[root@server ~]#

这里安装的ansible 的版本是2.9.27,同时也显示 ansible的默认配置是/etc/ansible/ansible.cfg。 还要确保 ansible 主机能够解析所有的被管理机器,这里通过配置/etc/hosts 来实现,/etc/hosts 的内容如下。

[root@server ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1       localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.26.101 server.rhce.cc  server
192.168.26.102 server2.rhce.cc server2
192.168.26.103 server3.rhce.cc server3 
[root@server ~]#

在 server2 和 server3 两台机器上确认已经创建好了lduan用户,如果没有请自行创建,然后配置好 sudo, 命令如下。

[rooteserver2 ~]# cat /etc/sudoers.d/lduan
lduan ALL=(root) NOPASSWD:ALL
[root@server2 ~]#[root@server3 ~]#cat /etc/sudoers.d/lduan
lduan ALL=(root) NOPASSWD:ALL
[root@server3 ~]#

这样在这两台机器上,lduan 用户通过sudo -i可以无密码切换到root用户。

使 用lduan 用户登求server, 配置好ssh 秘钥登录,使得lduan 用户可以无密码登录到server2 和 server3, 命令如下。

[lduan@server ~]$ ssh server2
Activate    the    web    console     with:systemctl    enable    --now     cockpit.socket
...输出...
[lduan@server2 ~]$ exit
注销
Connection to server2  closed.
[lduan@server  ~]$ ssh server3
Activate the web console with:systemctl enable  -now  cockpit.socket ...输出...
[lduan@server3 ~]$ exit
注销
Connection to server3 closed.
[lduan@server ~]$

28.2 编写ansible.cfg和清单文件

执行 ansible 或 ansible-playbook 命令时,优先使用当前目录中 ansible.cfg 的配置。如果当前目录中没有,则使用默认的/etc/ansible.cfg 中的配置。

下面的操作都是 server上的 lduan用户操作的,先在家目录下创建ansible.cfg,内容如下。

[1duan@server ~]$ cat ansible.cfg
[defaults]
inventory = ./hosts[privilege_escalation]
become=True
become_method=sudo
become_user=root

这里在 [defaults] 字段下只添加了一句inventory =./hosts,表示把当前目录下名称为 hosts的文件当作清单文件(什么是清单文件马上就要讲到)。

在 [privilege_escalation] 字段下定义了如何提升权限,因为是使用lduan 用户登录到被管理主机的,所以需要提升权限。这个字段下写了3条,分别如下。

(1)become=True: 登录到被管理主机时要切换到其他用户。

(2)become_method=sudo: 以 sudo的方式切换。

(3)become_user=root: 切换到 root 用户。

这三句的意思是,当用ssh 登录到被管理主机时,以sudo的方式切换到 root, 这也是为什么一开始要在被管理主机上配置好 sudo 的原因。

所有的被管理机器都要写入清单文件中。在实验环境中有两台被管理主机,那么分别写在hosts 中,内容如下。

[lduan@server ~]$ cat hosts
server2
server3
[lduan@server ~]$

这里一行一台主机,我们在使用 ansible或 ansible-playbook 命令时,指定的主机名必须是这个名称才行。要确保能解析 server2 和 server3, 写成相应的IP 也可以。

如果环境中被管理的主机很多,把主机一台台地写进去太冗繁,所以可以改成如下写法。

[lduan@server ~]$ cat hosts
server2
server3
server[10:15]

这里加了一行 server[10:15], 表示 server10到 server15, 这样在清单文件中就写了8台主机(需要注意的是,在我们的练习环境中 server10 到 server15不存在)。

如果在执行 ansible 命令时只是想在部分主机上执行,那么在清单文件中可以对主机进行 分组。定义主机组时,组名写在中括号“[]”中,在[]下面写的主机名都属于这个组,直到定义下一个组的位置为止。修改清单文件的内容如下。

[lduan@server ~]$ cat hosts
server2
server3
server[10:15][db1]
server[2:5][db2]
server6
gerver7

这里定义了两个主机组db1和 db2,db1组中包括的主机有server2到server5,db2组中包括的主机有server6和server7。

如果想定义一个主机组,这个组中包括 db1和 db2 两个主机组的主机,可以用children 关键字,修改 hosts 的内容如下。

[lduaneserver ~]s cat hosts
server2
server3
server[10:15][db1]
server[2:5][db2]
server6
server7[db3:children]
db1
db2

这里定义了一个主机组 db3, 但是后面加了“:children”,则这个主机组下面的 db1 和 db2 就 不再表示主机了,而是表示主机组。所以, db3 这个主机组中所包括的主机是 server2 到 server5及server6 和 server7这6台主机。

下面查看每个主机组中有多少主机。首先查看主机组 db1 中的主机,命令如下。

[lduan@server ~]$ ansible db1 --list-hostshosts(4):server2server3server4server5
[1duan@server ~]$

共4台主机。查看主机组 db2 中的主机,命令如下。

[lduan2server ~]$ ansible db2 --list-hostshosts (2):server6server7

共2台主机。查看主机组 db3中的主机,命令如下。

[lduan2server ~]$ ansible db3 --list-hosts	hosts (6):server2server3server4server5server6server7

共6台主机,与分析的是一样的。还有一个内置主机组叫作 all,表示所有主机。

了解了清单文件的写法之后,最终把清单文件写成如下内容。

[lduaneserver ~]$ cat hosts
server2
server3
[db]
server2
server3
[lduan@server ~]$

这里就包括了一个主机组 db, 里面含有 server2 和 server3。

28.3 ansible的基本用法

ansible 的基本用法如下。

ansible 机器名 -m 模块x -a "模块的参数"

这里的机器名必须出现在清单文件中,整体的意思是在指定的机器上执行模块x 。例如,在 server2 上执行 hostname 命令,命令如下。

[lduan@server ~]$ ansible server2 -m shell -a "hostname"
server2 | CHANGED | rc=0 >>
server2.rhce.cc
[lduan@server ~]$

shell 模块用于执行操作系统命令,执行的命令就作为shell 模块的参数,这里在-a 中写 要执行的系统命令。所以,上面的命令就是在 server2上执行 hostname 命令,显示的结果是seryer2.rhce.cc.

要完成不同的任务就需要调用不同的模块来实现,系统中存在的所有ansible 模块可以通过 ansible-doc -1来查看。

不同的模块有不同的参数,模块的参数及使用方法可以通过“ansible-doc 模块名”来查看。

我们将在第29章中讲解常见的 ansible 模块。

作业

  1. 在 lduan 家目录下编写ansible.cfg, 满足如下要求。

(1) 使用文件/home/lduan/hosts作为清单文件。
(2) 当lduan 用户登录到被管理主机时,能自动通过 sudo 切换到 root 用户。

  1. 编写清单文件/home/lduan/hosts, 要求:定义一个名称为db 的主机组,里面包含2台
    主机 server2 和 server3。

  2. 在 db 主机组中的主机上执行一条系统命令 whoami。

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

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

相关文章

HDFS集群环境配置

环境如下三台服务器: 192.168.32.101 node1192.168.32.102 node2192.168.32.103 node3 一、Hadoop安装包下载,点此官网下载 二、Hadoop HDFS的角色包含: NameNode,主节点管理者DataNode,从节点工作者SecondaryNameN…

React Native: could not connect to development server

问题: 运行模拟器错误:无法连接到开发服务器 原因分析: 1、确认模拟器连接状态,是连接成功的 查看进程的端口占用,也没问题 lsof -i tcp:8081 kill pid2、检查包服务器是否运行正常 连接真机进行调试发现真机是正常…

基于springboot+vue+Mysql的“智慧食堂”设计与实现

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

Basic RNN

文章目录 回顾RNNRNN CellRNNCell的使用RNN的使用 RNN例子使用RNN Cell实现使用RNN实现 嵌入层 Embedding独热向量的缺点Embedding LSTMGRU(门控循环单元)练习 回顾 DNN(全连接):和CNN相比,拥有巨大的参数量,CNN权重共…

游泳耳机哪个牌子好?强烈推荐这4大高性能款式!

在如今的科技时代,游泳耳机已经成为了许多游泳爱好者和运动员的必备装备。一款好的游泳耳机不仅可以让你在水中享受到美妙的音乐,还可以为你提供更好的训练体验。 (下图是我测试过的一部分游泳耳机:) 但在市场上众多的…

在线文本列表差集计算器

具体请前往:在线文本差集计算工具

云计算 3月22号 (mysql的主从复制)

一、MySQL-Replication(主从复制) 1.1、MySQL Replication 主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)…

优化选址问题 | 基于禁忌搜索算法求解基站选址问题含Matlab源码

目录 问题代码问题 禁忌搜索算法(Tabu Search)是一种局部搜索算法的扩展,它通过引入一个禁忌列表来避免陷入局部最优解,并允许在一定程度上接受较差的解来跳出局部最优。在基站选址问题中,我们可以使用禁忌搜索算法来寻找满足覆盖要求且基站数量最少的选址方案。 以下是…

比赛记录:Codeforces Round 936 (Div. 2) A~E

传送门:CF [前题提要]:赛时一小时过了A~D,E感觉也不是很难(甚至感觉思维难度是小于D的),感觉这回是自己不够自信了,要是自信一点深入想一下应该也能做出来,咱就是说,如果E和D换一下,结果也是一样的,虽上大分,但是心里很不服,故记录一下 A - Median of an Array 当时网卡加载了…

手机网页视频批量提取工具可导出视频分享链接|爬虫采集下载软件

解放你的抖音视频管理——全新抖音批量下载工具震撼上线! 在这个信息爆炸的时代,如何高效地获取、管理和分享视频内容成为了许多用户的迫切需求。为了解决这一难题,我们研发了全新的视频批量下载工具,让你轻松畅享海量音视频资源。…

SQL中条件放在on后与where后的区别

数据库在通过连接两张或多张表来返回记录时,都会生成一张中间的临时表,然后再将这张临时表返回给用户。 在使用left jion时,on和where条件的区别如下: on条件是在生成临时表时使用的条件,不管on中的条件是否为真&…

2024年 前端JavaScript Web APIs 第四天 笔记

4.1-日期对象的使用 4.2-时间戳的使用 4.3-倒计时案例的制作 4.4-查找DOM节点 4.5-增加节点以及学成在线案例 4.6-克隆节点和删除节点 4.7-M端事件 4.8-swiper插件的使用 4.9-今日综合案例-学生信息表 B站 <!DOCTYPE html> <html lang"en"><head>&…

ubuntu下samba匿名读写服务器

目的&#xff1a; 局域网内&#xff0c;ubuntu下&#xff0c;创建SAMBA文件共享服务器。匿名读写权限。为了开发项目组文件共享传输方便。 环境&#xff1a; X86_64电脑一台。 操作系统&#xff1a; Ubuntu 20.04 LTS 64位。 安装samba $ sudo apt-get install samba创建…

浅谈智能微型断路器在学校改造项目中的应用-安科瑞 蒋静

南浜路初中是昆山市重点建设的教育民生项目。当地政府对于这所学校非常重视&#xff0c;当然也有着很高的期望。南浜路初中的到来能够进一步促进昆山市义务教育阶段的发展&#xff0c;提升义务教育水平。 现场图片 智能网关 可连接至多16台智能微型断路器&#xff1b;可查看各…

UNI-APP读取本地JSON数据

首先要把json文件放在static文件夹下 然后在要读取数据的页面导入 import data from ../../static/data.json读取数据&#xff1a; onLoad() {console.log(data, data)}, 打印出来的就是JSON文件里的数据了

时序预测 | Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时间序列预测

时序预测 | Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时间序列预测 目录 时序预测 | Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 1.Matlab基于BiTCN-LSTM双向时间卷积长短期记忆神经网络时…

为什么光模块会发生故障?

当SFP光模块发生故障时&#xff0c;技术人员需要立即找出原因并进行修复&#xff0c;否则&#xff0c;1G链路可能会中断。本指南将为初次接触光模块领域的企业提供一些SFP光模块修复解决方案的支持。 SFP光模块故障的主要原因 SFP光模块故障通常发生在发送端和接收端。最常见…

C++夯实基础

C在线学习笔记 第一阶段&#xff1a;基础 一、环境配置 1.1.第一个程序&#xff08;基本格式&#xff09; ​ #include <iosteam> using namespace std;int main(){cout<<"hello world"<<endl;system("pause"); }​ 模板 #include…

eth 交易案例分析9

交易hash: 先用0.26eth买入了多个GPT&#xff0c;然后用这多个GPT 在uniswap3 兑换了1.69 个eth&#xff0c; 疑问点&#xff1a;买入的 DLP 什么意思&#xff1f;

C++第十弹---类与对象(七)

✨个人主页&#xff1a; 熬夜学编程的小林 &#x1f497;系列专栏&#xff1a; 【C语言详解】 【数据结构详解】【C详解】 目录 1、再谈构造函数 1.1、构造函数体赋值 1.2、初始化列表 1.3、explicit关键字 2、static成员 2.1、概念 2.2、特性 2.3、面试题 总结 1、再…