大茂名网

 找回密码
 用户注册

QQ登录

只需一步,快速开始

查看: 151|回复: 0

[【编导】] 看一看第16章 使用Ansible服务现自动化运维 2023/2/2 10:19:32

[复制链接]

2万

主题

2万

帖子

9万

积分

钻石元老

Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24Rank: 24

积分
98065
发表于 2023-2-2 10:19 | 显示全部楼层 |阅读模式

马上注册登陆,结交更多好友,享用更多功能,让你轻松玩转社区

您需要 登录 才可以下载或查看,没有账号?用户注册

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部分组成,分别是、、、,其各自的作用如下。
爱上大茂名,喜当大猫友,吃喝玩乐事,天天乐开怀!
您需要登录后才可以回帖 登录 | 用户注册

本版积分规则

QQ|客服:0668-2886677QQ:75281068|大茂微博|小黑屋|手机版|Archiver|大茂名网 ( 粤ICP备18149867号 )茂名市大茂科技有限公司 版权所有 

GMT+8, 2025-2-12 09:06 , Processed in 0.084482 second(s), 23 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表