在上课时我们讲解了一套 Devops 理念的工程它的CMDB是如何实现的。CMDB可以把所有的资产做一个收集python画心的源代码。有了资产,就好比一个仓库里面所有的货物已经准备好了,那么接下来该怎么去进行分门别类的管理和维护等操作呢?这个时候就涉及自动化的任务。
本课时我们就来讲解 Devops 工程剩下的部分:自动化任务平台是如何实现的。
这一套自动化任务平台工程里主要用到了Ansible 模块,我将先为你介绍Ansible 模块的基本功能,然后再详细介绍Ansible 模块和 Devops 工程是怎么进行融合的。
Ansible 模块
Ansible 是系统中的一套自动化工具,它可以支持在 Linux 终端进行命令化的执行,同时它也是Python里面的一个模块,可以通过 Python 进行模块化的调用。Ansible主要用来实现系统的管理、自动化的命令等任务。
Ansible的应用通常有两种方式,第1 种是 adhoc(命令模式),第2 种是playbook(剧本模式)。这两种方式存在差异,命令模式主要以模块的方式运行Ansible 任务,而playbook是一个剧本,相当于有一个写好的命令化执行记录文件,playbook只需要按照这个文件执行要求来作相关任务就可以了。playbook比adhoc的场景更加丰富,而且运维管理更加方便。
在playbook的基础上,如果你想要将Ansible应用得更加灵活,如有整体的工程化结构管理或者是需要更大的运维自动化场景需求,我们可以通过roles 方式来做Ansible的任务。roles 是基于playbook的一套丰富工程化结构使用方式,所以它比一般的 playbook,更适合在工程化场景所使用。
adhoc
讲到了Ansible,我们先来了解安装Ansible必要配置的两个文件,第1 个是ansible.cfg,它是一个全局性的配置文件,可以用来配置Ansible全局性的一些变量和设置。 第2 个是 hosts,这个文件主要用来配置Ansible的主机资产关系管理信息。通过Ansible来做自动化任务需要在hosts 里面配置它主机相关的资产管理信息,如IP、SSH 的连接信息、主机名、主机组分类,等等。
我们刚刚讲到了adhoc 模式,它在终端执行时是这样的:ansible [options]。举个例子,这里我用ansible 命令执行,对 testsever1 这台主机执行任务,-m 表示它执行什么样的模块化的任务;shell 是 Ansible和adhoc 里面的一个模块,-a 代表执行 shell 里面的哪个命令及参数;touch /tmp/jesonc.txt 代表它在执行创建新的文件。
playbook