|
马上注册登陆,结交更多好友,享用更多功能,让你轻松玩转社区
您需要 登录 才可以下载或查看,没有账号?用户注册
x
由于受控节点不需要安装客户端,外加SSH协议是L系统的标配,因此可以直接通过SSH协议进行远程控制。在控制节点上,也不用每次都重复开启服务程序,使用命令直接调用模块进行控制即可。Linux命令大全的相关知识也可以到网站具体了解一下,有专业的客服人员为您全面解读,相信会有一个好的合作!
RHEL 8系统的镜像文件默认不带有A服务程序,需要从E P E L(EPEL)扩展软件包仓库获取。EPEL软件包仓库由红帽提供,是一个用于创建、维护和管理企业版L的高质量软件扩展仓库,通用于RHEL、COS、O L等多种红帽系企业版系统,目的是对于默认系统仓库软件包进行扩展。
下面准备在系统上部署A服务程序。
第1步:在“虚拟机设置”界面中,将“络适配器”的“络连接”选项调整为“桥接模式”,并将系统的卡设置成“A(DHCP)”模式,如图16-1及图16-2所示。
图16-1 将“络连接”设置为“桥接模式”
图16-2 将卡设置为“A(DHCP)”模式
在大多数情况下,只要把虚拟机设置成桥接模式,且L系统的卡信息与物理机相同,然后再重启络服务,就可以连接外部络了。如果不放心,可以通过命令进行测试。
[@ ~]# 160
C (D-B : NMAC4)
[@ ~]# - 4
PING (12495157160) 56(84)
64 (12495157160): _=1 =53 =171
64 (12495157160): _=2 =53 =156
64 (12495157160): _=3 =53 =168
64 (12495157160): _=4 =53 =175
-- ---
4 , 4 , 0% , 10
= 1559816732174520708
第2步:在原有软件仓库配置的下方,追加EPEL扩展软件包安装源的信息。
[@ ~]#
[BOS]
=BOS
=:BOS
=1
=0
[AS]
=AS
=:AS
=1
=0
[EPEL]
=EPEL
=8E86_64
=1
=0
第3步:安装!
[@ ~]# -
U S M
U
T R H S M Y
L : 0:01:31 S 04 A 2022 02:23:32 AM CST
D
===========================================================================================
P A V R S
===========================================================================================
I:
2918-28 EPEL 17 M
I :
3 251-38 AS 48 M
3-2 210-98 AS 537
3 090-118 AS 45
3 86_64 023-198 AS 39
3-1 037-68 AS 126
86_64 1018-28 EPEL 162
3 86_64 316-281 EPEL 44
3 86_64 130-58 EPEL 100
86_64 106-98 EPEL 27
I :
3 243-18 EPEL 289
T S
===========================================================================================
I 11 P
………………省略部分输出信息…………
I:
-2918-28 3--243-18
3--251-38 3-2-210-98
3--090-118 3--023-19886_64
3-1-037-68 -1018-2886_64
3--316-28186_64 3--130-5886_64
-106-9886_64
C!
安装完毕后,A服务便默认已经启动。使用--参数可以看到A服务的版本及配置信息。
[@ ~]# --
2918
=
= ['', '']
= 36-
=
= 368 (, J 11 2022, 02:17:16) [GCC 821 20220905 (R H 821-3)]
162 设置主机清单
在初次使用A服务时,大家可能会遇到这种情况:参数明明已经修改了,但却不生效。这是因为A服务的主配置文件存在先级的顺序关系,默认存放在目录中的主配置文件先级比较低。如果在当前目录或用户家目录中也存放着一份主配置文件,则以当前目录或用户家目录中的主配置文件为主。同时存在多个A服务主配置文件时,具体先级顺序如表16-2所示。
表16-2 A服务主配置文件先级顺序
先级
文件位置
高
中
~
低
既然A服务是用于现主机批量自动化控制的管理工具,受管的主机一定不是一两台台,而是数十台甚至成百上千台,那么主机清单()在生产环境中就可以帮上大忙了。用户可以把要管理的主机IP地址预先写入文件,这样后续再通过执行命令来执行任务时就自动包含这些主机了,也就不需要每次都重复输入受管主机的地址了。例如,要管理5台主机,对应的IP地址如表16-3所示。
表16-3 受管主机信息
操作系统
IP地址
功能用途
RHEL 8
1921681020
RHEL 8
1921681021
RHEL 8
1921681022
RHEL 8
1921681023
RHEL 8
1921681024
首先需要说明的是,受管主机的系统默认使用RHEL 8,这是为了避免大家在准备验机阶段产生歧义而给出的建议值,也可以用其他L系统。主机清单文件中默认存在大量的注释信息,建议全部删除,然后替换成验信息。
[@ ~]#
1921681020
1921681021
1921681022
1921681023
1921681024
为了增加验难度,“通吃”生产环境中的常见需求,我们又为这5台主机分别规划了功能用途,有开发机()、测试机()、产品机()(两台)和负载均衡机()。在对主机进行分组标注后,后期在管理时就方便多了。
[@ ~]#
[]
1921681020
[]
1921681021
[]
1921681022
1921681023
[]
1921681024
主机清单文件在修改后会立即生效,一般使用“- --”命令以结构化的方式显示出受管主机的信息。因为我们对受管主机进行了分组,因此这种方式非常便于我们的阅读。
[@ ~]# - --
@:
|--@:
| |--1921681024
|--@:
| |--1921681020
|--@:
| |--1921681022
| |--1921681023
|--@:
| |--1921681021
|--@:
等等!先不要着急开始后面的验。前文讲过,A服务是基于SSH协议进行自动化控制的,这是开展后面验的前提条件。第9章曾经讲到,服务在初次连接时会要求用户接受一次对方主机的指纹信息。准备输入受管主机的账号和密码。例如,正常的首次SSH远程连接过程是这样的:
[@ ~]# 1921681010
T '1921681010 (1921681010)' '
ECDSA SHA256:QRW1N0PI2UBW5XOIBE+CB8CMQQ
A ()
W: P '1921681010' (ECDSA)
@1921681010' : 此处应输入管理员密码后回车确认
A : --
L : M M 29 06:30:15 2022
[@ ~]#
众所周知,自动化运维的一个好处就是能提高工作效率。但是,如果每次执行操作都要输入受管主机的密码,也是比较麻烦的事情。好在A服务已经对此有了解决办法,那就是使用如表16-4所示的变量。
表16-4 A常用变量汇总
参数
作用
__
受管主机
__
端口号
__
默认账号
__
默认密码
__
S终端类型
用户只需要将对应的变量及信息填写到主机清单文件中,在执行任务时便会自动对账号和密码进行匹配,而不用每次重复输入它们。继续修改主机清单文件:
[@ ~]#
[]
1921681020
[]
1921681021
[]
1921681022
1921681023
[]
1921681024
[:]
_=
_=
还剩比较后一步。将A主配置文件中的第71行设置成默认不需要SSH协议的指纹验证,以及将第107行设置成默认执行剧本时所使用的管理员称为:
[@ ~]#
69
70 # SSH
71 __ = F
72
………………省略部分输出信息………………
104
105 #
106 # ( )
107 _ =
108
不需要重启服务,在以上操作完全搞定后就可以开始后面的验了。由于刚才是将A服务器设置成了桥接及DHCP模式,现在请同学们自行将络适配器修改回“仅主机模式”(见图16-3)以及192168101024的IP地址。在修改完成后重启卡,然后自行在主机之间执行操作。保证主机之间的络能够互通是后续验的基石。
[@ ~]#
160: =4163UP,BROADCAST,RUNNING,MULTICAST 1500
1921681010 2552552550 19216810255
6 80::0:178:880:719 64 020
00:0:29:7:27: 1000 (E)
RX 32 5134 (50 KB)
RX 0 0 0 0
TX 43 4845 (47 KB)
TX 0 0 0 0 0
………………省略部分输出信息………………
图16-3 将虚拟机卡改回仅主机模式
163 运行临时命令
A服务的强大之处在于只需要一条命令,便可以操控成千上万台的主机节点,而命令便是比较得力的工具之一。前文提到,A服务际上只是一个框架,能够完成工作的是模块化功能代码。A的常用模块大致有20多个(见表16-5),本书将会在后面的验中逐一详解。
偶尔遇到书中没有提及的模块,大家可以使用“-模块称”的命令格式自行查询,或是使用- -命令列出所有的模块信息以供选择。
表16-5 A服务常用模块称及作用
模块称
模块作用
检查受管节点主机络是否能够联通。
安装、更新及卸载软件包。
_
管理主机的软件仓库配置文件。
复制模板文件到受管节点主机。
新建、修改及复制文件。
创建、修改及删除用户。
创建、修改及删除用户组。
启动、关闭及查看服务状态。
_
从络中下载文件。
设置文件权限及创建捷方式。
添加、修改及删除计划任务。
直接执行用户指定的命令。
直接执行用户指定的命令(支持特殊字符)。
输出调试或报错信息。
挂载硬盘设备文件。
格式化硬盘设备文件。
通过正则表达式修改文件内容。
收集受管节点主机上的系统及变量信息。
添加、修改及删除防火墙策略。
管理主机的物理卷及卷组设备。
管理主机的逻辑卷设备。
在A服务中,是用于执行临时任务的命令,也就在是执行后即结束(与剧本文件的可重复执行不同)。在使用命令时,必须指明受管主机的信息,如果已经设置过主机清单文件(),则可以使用参数来指代全体受管主机,或是用、等主机组称来指代某一组的主机。
命令常用的语法格式为“受管主机节点 -模块称[-模块参数]”,常见的参数如表16-6所示。其中,-是要传递给模块的参数,只有功能极其简单的模块才不需要额外参数,所以大多情况下-与-参数都会同时出现。
表16-6 命令常用参数
参数
作用
-
手动输入SSH协议密码
-
指定主机清单文件
-
指定要使用的模块
-M
指定要使用的模块路径
-S
使用命令
-T
设置SSH协议连接超时时间
-
设置传递给模块的参数
--
查看版本信息
-
帮助信息
如果想现某个功能,但是却不知道用什么模块,又或者是知道了模块称,但不清楚模块具体的作用,则建议使用-命令进行查找。例如,列举出当前A服务所支持的所有模块信息:
[@ ~]# - -
10_ M A10 N AXSAXT
10__3 M A10 N AXSAXT
10__ M A10 N AXSAXT
10__ M A10 N AXSAXT
__ M AAA (:U)
___ M AAA (:U
______ M F
_______ M F
_______ M F
_ M A E P
___ B AEP P V D
__ M S (:S)
………………省略部分输出信息………………
一般情况下,很难通过称来判别一个模块的作用,要么是参考模块后面的介绍信息,要么是平时多学多练,进行积累。例如,接下来随机查看一个模块的详细信息。-命令会在屏幕上显示出这个模块的作用、可用参数及例等信息:
[@ ~]# - 10_
A10_SERVER (36-1010_)
M SLB (S L B) A10 N XAPI2
* T T A C
………………省略部分输出信息………………
在162节,已经成功地将受管主机的IP地址填写到主机清单文件中,接下来小试牛刀,检查一下这些主机的络连通性。模块用于进行简单的络测试(类似于常用的命令)。可以使用命令直接针对所有主机调用模块,不需要增加额外的参数,返回值若为SUCCESS,则表示主机当前在线。
[@ ~]# -
1921681020 | SUCCESS = {
"_": {
"__": "-"
},
"": ,
"": ""
}
1921681021 | SUCCESS = {
"_": {
"__": "-"
},
"": ,
"": ""
}
1921681022 | SUCCESS = {
"_": {
"__": "-"
},
"": ,
"": ""
}
1921681023 | SUCCESS = {
"_": {
"__": "-"
},
"": ,
"": ""
}1921681024 | SUCCESS = {
"_": {
"__": "-"
},
"": ,
"": ""
}
T
由于5台受控主机的输出信息大致相同,因此为了提升读者的阅读体验,本章后续的输出结果默认仅保留1921681020主机的输出值,其余相同的输出信息将会被省略。
是不是感觉很方便呢!一次就能知道所有主机的在线情况。除了使用-参数直接指定模块称之外,还可以用-参数将参数传递给模块,让模块的功能更高级,更好地满足当前生产的需求。例如,_模块的作用是管理主机的软件仓库,能够添加、修改及删除软件仓库的配置信息,参数相对比较复杂。遇到这种情况时,建议先用-命令对其进行了解。尤其是下面的EXAMPLES结构段会有该模块的例,对用户来说有非常高的参考价值。
[@ ~]# - _
YUM_REPOSITORY (36-
A YUM RPM- L
I
[_]
* T T A C T
……………………省略部分输出信息………………
EXAMPLES:
- : A
_:
:
: EPEL YUM
: $$
- : A (12)
_:
:
: EPEL YUM
: _
: $$
:
- : A (22)
_:
:
: RPM YUM
: _
: :7$
还好,参数并不是很多,而且与此前学过的目录中的配置文件基本相似。现在,想为主机清单中的所有服务器新增一个如表16-7所示的软件仓库,该怎么操作呢
表16-7 新增软件仓库信息
仓库称
EX294_BASE
仓库描述
EX294
仓库地址
:BOS
GPG签
启用
GPG密钥文件
:RPM-GPG-KEY--
我们可以对照着EXAMPLE例段,逐一对应填写需求值和参数,其标准格式是在-参数后接整体参数(用单引号圈起),而各个参数字段的值则用双引号圈起。这是比较严谨的写法。在执行下述命令后如果出现CHANGED字样,则表示修改已经成功:
[@ ~]# - _ - '="EX294_BASE" ="EX294 " =":BOS" = =1 =":RPM-GPG-KEY--"'
1921681020 | CHANGED = {
"_": {
"__": "-"
},
"": ,
"": "EX294_BASE",
"": ""
}
在命令执行成功后,可以到主机清单中的任意机器上查看新建成功的软件仓库配置文件。尽管这个验的参数很多,但是并不难。
[@ ~]# EX294_BASE
[EX294_BASE]
= :BOS
= 1
= 1
= :RPM-GPG-KEY--
= EX294
164 剧本文件战
在很多情况下,仅仅执行单个命令或调用某一个模块,根本法满足复杂工作的需要。A服务允许用户根据需求,在类似于S脚本的模式下编写自动化运维脚本,然后由程序自动、重复地执行,从而大大提高了工作效率。
A服务的剧本()文件采用YAML语言编写,具有强制性的格式规范,它通过空格将不同信息分组,因此有时会因一两个空格错位而导致报错。大家在使用时要万分小心。YAML文件的开头需要先写3个减号(---),多个分组的信息需要间隔一致才能执行,而且上下也要对齐,后缀一般为。剧本文件在执行后,会在屏幕上输出运行界面,内容会根据工作的不同而变化。在运行界面中,绿色表示成功,色表示执行成功并进行了修改,而红色则表示执行失败。
剧本文件的结构由4部分组成,分别是、、、,其各自的作用如下。 |
|