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步:检查是否可以连接外部网络了。如果不放心,可以通过ping命令进行测试。
[root@localhost ~]# ping -c 4 www.baidu.com
第2步:安装EPEL源,EPEL是一个由Fedora社区维护的额外软件包源,包含了许多CentOS默认源中没有的软件包。
[root@localhost ~]# yum install -y epel-release dnf
第3步:安装!
[root@localhost ~]# dnf install -y ansible ………………省略部分输出信息…………
安装完毕后,Ansible服务便默认已经启动。使用--version参数可以看到Ansible服务的版本及配置信息。