Linux就该这么学第十四节课学习心得

Ansible是最近几年特别火的一款开源运维自动化工具,它能够帮助运维人员肉眼可见地提高工作效率,并减少人为失误。Ansible有上千个功能丰富且实用的模块,而且有详尽的帮助信息可供查阅,因此即便是小白用户也可以轻松上手。

本章首先介绍了Ansible服务的产生背景、相关术语以及主机清单的配置,期间会带领大家深入学习ping、yum、firewalld、service、template、setup、lvol、lvg、copy、file、debug等十余个常用的Ansible模块,以满足日常工作中的需要。然后,本章采用动手实操的方式介绍了从系统中加载角色、从外部环境获取角色以及自行创建角色的方法,旨在让读者能够学到如何在生产环境中掌控任务工作流程。此外,本章借助于通过精心编写的playbook(剧本)文件,以动手实操的方式介绍了创建逻辑卷设备,依据主机改写文件、管理文件属性的方法。本章最后以使用Ansible的vault对变量以及剧本文件进行加密来收尾。

本章全面涵盖了Ansible的使用细节,且内容环环相扣,相信读者在学完本章内容之后会有酣畅淋漓之感。

本章目录结构

16.1 Ansible介绍与安装

Ansible目前是运维自动化工具中最简单、容易上手的一款优秀软件,能够用来管理各种资源。用户可以使用Ansible自动部署应用程序,以此实现IT基础架构的全面部署。例如,借助于Ansible,我们可以轻松地对服务器进行初始化配置、安全基线配置,以及进行更新和打补丁操作。相较于Chef、Puppet、SaltStack等C/S(客户端/服务器)架构的自动化工具来讲,尽管Ansible的性能并不是最好的,但由于它基于SSH远程会话协议,不需要客户端程序,只要知道受管主机的账号密码,就能直接用SSH协议进行远程控制,因此使用起来优势明显。

2012年2月,程序员Michael DeHaan发布了Ansible的第一个版本。Michael DeHaan在配置管理和架构设计方面拥有丰富的经验,他此前红帽公司任职时,就研发了Cobbler自动化系统安装工具。在就职于红帽公司的期间,他被各种自动化软件折磨了好久,最终决定自己打造一款集众多软件的优点于一身的自动化工具。Ansible由此诞生。由于Ansible实在太好用了,以至于它在GitHub上的star和fork数量是SaltStack的两倍多,这足以看出受欢迎的程度。2015年,Ansible正式被红帽公司收购,其发展潜力更是不可估量。

使用自动化运维工具,可以肉眼可见地提高运维人员的工作效率,并减少人为错误。Ansible服务本身并没有批量部署的功能,它仅仅是一个框架,真正具有批量部署能力的是其所运行的模块。Ansible内置了上千个模块,会在安装Ansible时一并安装,通过调用指定的模块,就能实现特定的功能。Ansible内置的模块非常丰富,几乎可以满足一切需求,使用起来也非常简单,一条命令甚至影响上千台主机。如果需要更高级的功能,也可以运用Python语言对Ansible进行二次开发。

当前,Ansible已经被Amazon、Google、Microsoft、Cisco、HP、VMware、Twitter等大科技公司接纳并投入使用。红帽公司更是对自家产品进行了不遗余力的支持。从2020年8月1日起,RHCE考试的内容由配置多款服务转变成Ansible专项考题内容。现在,要想顺利拿到RHCE认证,真的有必要好好学习一下本章了。

在正式介绍Ansible之前,我们先普及一下相关的专用术语,好让大家对术语有统一的理解,以便在后续实验时能直奔主题。这里整理的与Ansible相关的专用术语如表16-1所示。

表16-1                                      Ansible服务专用术语对照表

术语 中文叫法 含义
Control node 控制节点 指的是安装了Ansible服务的主机,也被称为Ansible控制端,主要是用来发布运行任务、调用功能模块,对其他主机进行批量控制。
Managed nodes 受控节点 指的是被Ansible服务所管理的主机,也被称为受控主机或客户端,是模块命令的被执行对象。
Inventory 主机清单 指的是受控节点的列表,可以是IP地址、主机名称或者域名。
Modules 模块 指的是上文提到的特定功能代码,默认自带有上千款功能模块,在Ansible Galaxy有超多可供选择。
Task 任务 指的是Ansible客户端上面要被执行的操作。
Playbook 剧本 指的是通过YAML语言编写的可重复执行的任务列表,把常做的操作写入到剧本文件中,下次可以直接重复执行一遍。
Roles 角色 从Ansible 1.2版本开始引入的新特性,用于结构化的组织Playbook,通过调用角色实现一连串的功能。

由于受控节点不需要安装客户端,外加SSH协议是Linux系统的标配,因此可以直接通过SSH协议进行远程控制。在控制节点上,也不用每次都重复开启服务程序,使用ansible命令直接调用模块进行控制即可。

RHEL 8系统的镜像文件默认不带有Ansible服务程序,需要从Extra Packages for Enterprise Linux(EPEL)扩展软件包仓库获取。EPEL软件包仓库由红帽公司提供,是一个用于创建、维护和管理企业版Linux的高质量软件扩展仓库,通用于RHEL、CentOS、Oracle Linux等多种红帽系企业版系统,目的是对于默认系统仓库软件包进行扩展。

下面准备在系统上部署Ansible服务程序。

第1步:在“虚拟机设置”界面中,将“网络适配器”的“网络连接”选项调整为“桥接模式”,并将系统的网卡设置成“Automatic(DHCP)”模式,如图16-1及图16-2所示。

图16-1 将“网络连接”设置为“桥接模式”

图16-2 将网卡设置为“Automatic(DHCP)”模式

在大多数情况下,只要把虚拟机设置成桥接模式,且Linux系统的网卡信息与物理机相同,然后再重启网络服务,就可以连接外部网络了。如果不放心,可以通过ping命令进行测试。

[root@linuxprobe ~]# nmcli connection up ens160 
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/4)
[root@linuxprobe ~]# ping -c 4 www.linuxprobe.com
PING www.linuxprobe.com.w.kunlunno.com (124.95.157.160) 56(84) bytes of data.
64 bytes from www.linuxprobe.com (124.95.157.160): icmp_seq=1 ttl=53 time=17.1 ms
64 bytes from www.linuxprobe.com (124.95.157.160): icmp_seq=2 ttl=53 time=15.6 ms
64 bytes from www.linuxprobe.com (124.95.157.160): icmp_seq=3 ttl=53 time=16.8 ms
64 bytes from www.linuxprobe.com (124.95.157.160): icmp_seq=4 ttl=53 time=17.5 ms

--- www.linuxprobe.com.w.kunlunno.com ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 10ms
rtt min/avg/max/mdev = 15.598/16.732/17.452/0.708 ms

第2步:在原有软件仓库配置的下方,追加EPEL扩展软件包安装源的信息。

[root@linuxprobe ~]# vim /etc/yum.repos.d/rhel.repo
[BaseOS]
name=BaseOS
baseurl=file:///media/cdrom/BaseOS
enabled=1
gpgcheck=0

[AppStream]
name=AppStream
baseurl=file:///media/cdrom/AppStream
enabled=1
gpgcheck=0

[EPEL]
name=EPEL
baseurl=https://dl.fedoraproject.org/pub/epel/8/Everything/x86_64/
enabled=1
gpgcheck=0

第3步:安装!

[root@linuxprobe ~]# dnf install -y ansible
Updating Subscription Management repositories.
Unable to read consumer identity
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
Last metadata expiration check: 0:01:31 ago on Sun 04 Apr 2021 02:23:32 AM CST.
Dependencies resolved.
===========================================================================================
 Package                          Arch             Version            Repository        Size
===========================================================================================
Installing:
 ansible                          noarch           2.9.18-2.el8       EPEL               17 M
Installing dependencies:
 python3-babel                    noarch           2.5.1-3.el8        AppStream         4.8 M
 python3-jinja2                   noarch           2.10-9.el8         AppStream         537 k
 python3-jmespath                 noarch           0.9.0-11.el8       AppStream          45 k
 python3-markupsafe               x86_64           0.23-19.el8        AppStream          39 k
 python3-pyasn1                   noarch           0.3.7-6.el8        AppStream         126 k
 libsodium                        x86_64           1.0.18-2.el8       EPEL              162 k
 python3-bcrypt                   x86_64           3.1.6-2.el8.1      EPEL               44 k
 python3-pynacl                   x86_64           1.3.0-5.el8        EPEL              100 k
 sshpass                          x86_64           1.06-9.el8         EPEL               27 k
Installing weak dependencies:
 python3-paramiko                 noarch           2.4.3-1.el8        EPEL              289 k

Transaction Summary
===========================================================================================
Install  11 Packages

………………省略部分输出信息…………

Installed:
  ansible-2.9.18-2.el8.noarch            python3-paramiko-2.4.3-1.el8.noarch
  pyth
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值