Ansible 概览
时间:2022-03-27 06:18:02 | 来源:行业动态
时间:2022-03-27 06:18:02 来源:行业动态
前面说的方法论大家会觉得云里雾里,下面我们深入Ansible里面,因为Ansible本身部署起来就是非常简单的。看这个图中间画了笔记本,就是Ansible整个运行时的环境,这部分程序代码是可以跑在你的任何一个设备上,基本上只要是一台机器就可以跑Ansible这样的软件。
那Ansible这个软件是管理大多数机器的,它是管理端,是管到若干台机器,它通过SSH这个通道管理这么多台机器。这里面有一个好处,它最大程度地利用本身的功能,所以说我们讲Ansible要管理另外一台机器,如果另外一台机器没有和你对应的接口,你是没有办法管理的。对于不同的网络设备、存储设备也会有对外暴露的接口,通过这样的接口管理。左边有Inventory,也就是说我们做什么事情,我们像一个剧本一样,所有事情都写在这个文件里面,通过这台机器就可以分散到不同机器上执行了。当然了,对于里面细节的东西,比如这个东西你要推到一千台机器或者一万台机器上,你是一起推还是分批推,也里面有细节的东西,就不再深入太多了。
我们看一下Inventory这里,这是静态的列表,是不变的。另外一种情况是动态的,我被管理的机器是发生变化的,现实中我们也经常遇到这样的问题,比如我将机器放到里面,需要做同样的配置,这里面Inventory比较方便的地方就是列表的格式,实际上就直接解析为这样的文件,如果你是可执行的脚本。右边我是简单把流程写了一下,如果是简单的脚本,会通过你脚本取得你当前的列表。大家如果这个环节里面,对接不同的底下的平台,实际上通过这个脚本你就可以取得当前的动态节点列表。
这里面可能大家会问这样的问题,静态的很好理解,静态就三台机器,如果是动态,有可能我取的时候,把节点取出来了,然后运行了,再取就不一样了,这样同步的一致性肯定是需要考虑的。这个里面实际上就印证了我开始说了Ansible简洁的设计。对于这里面的运维操作,实际上就像互联网很多应用的推送一样,我不一定所有东西都是实时的,所以这里面让你业务部需要那么强的实时性。
第二点,简单说一下Ansible的模块,在第一张简单架构图里面没有显现出来,另外就是playbook要执行哪些剧本,这些最基本的功能模块。通过这两条简单的命令,就很容易熟悉Ansible各个模块,以及他们是怎样使用的。
接下来说一下幂等性,就是这个东西是可重复的,我们不管执行多少遍,结果都是一致的。这里面举了一个简单的例子,比如我们要启这样的服务,实际上这里面我们对应了Ansible里面是以模块指定名字和它的状态是Started。这是简单的例子,可能这个例子太简单了。我举另外一个例子,比如你拷贝一个文件,在你拷贝的时候,我要确认你在目标有没有这样的文件,如果有就不用拷贝了,如果没有就拷贝一下。所有的功能都在这里的模块实现的。
模块过去之后,我们对模块进行编排,这样的话,我们就有剧本这样的概念,也就是playbook。playbook是以YAML的格式写的,实际上在Ansible里面,我们有这样的一个执行引擎,解释引擎解释这个YAML文件。
我们简单看一下剧本长什么样子,这里就是简单的一个playbook,我大概从上到下捋一下,几个关键的东西,当然里面可能有其他的关键字,这里面简单的playbook,我是了解Ansible,我不了解Ansible也理解了八九不离十,但是我们理解了里面的关键字,可能我们就里面的程序是语言关键字:name、host、vars、tasks,这是一个简单的playbook。