系列课程之基础入门-playbook基础

2015-12-06  本文已影响1871人  stanleylst

系列课程之基础入门-playbook基础

课程指数

难度指数: 4星(满星5星)
技术指数: 5星(满星5星)
理论指数: 3星(满星5星)
面向人群: 自动化运维&初中级运维

分享目录


1.1 playbook简介 1
1.2 Playbook使用场景 1
1.3 playbook格式 2
1.4 playbook语法介绍 3
1.5 Playbook执行结果解析 4
1.5.1 收集facts 5
1.5.2 执行tasks 6
1.5.3 报告结果 6
1.6 ansible-playbook实战小技巧 6
1.6.1 例子一 7
1.6.2 例子二 7
1.6.3 例子三 8

1.1playbook简介


playbook是ansible用于配置,部署,和管理被控节点的剧本。通过playbook的详细描述,执行其中的一系列tasks,可以让远端主机达到预期的状态。playbook就像Ansible控制器给被控节点列出的的一系列to-do-list,而被控节点必须要完成。

也可以这么理解,playbook 字面意思,即剧本,现实中由演员按照剧本表演,在Ansible中,这次由计算机进行表演,由计算机安装,部署应用,提供对外服务,以及组织计算机处理各种各样的事情。

1.2 Playbook使用场景


执行一些简单的任务,使用ad-hoc命令可以方便的解决问题,但是有时一个设施过于复杂,需要大量的操作时候,执行的ad-hoc命令是不适合的,这时最好使用playbook,就像执行shell命令与写shell脚本一样,也可以理解为批处理任务,不过playbook有自己的语法格式,一会会介绍。

使用playbook你可以方便的重用这些代码,可以移植到不同的机器上面,像函数一样,最大化的利用代码。在你使用Ansible的过程中,你也会发现,你所处理的大部分操作都是编写playbook。

1.3 playbook格式


playbook由YMAL语言编写。YAML参考了其他多种语言,包括:XML、C语言、Python、Perl以及电子邮件格式RFC2822,Clark Evans在2001年5月在首次发表了这种语言,另外Ingy döt Net与Oren Ben-Kiki也是这语言的共同设计者。

YMAL格式是类似于JSON的文件格式,便于人理解和阅读,同时便于书写。首先学习了解一下YMAL的格式,对我们后面书写playbook很有帮助。以下为playbook常用到的YMAL格式。

示例1..png

关于YMAL的更多信息,请参考百度百科

1.4 playbook语法介绍


对比上述格式,下面我们看一个安装部署mysql服务的案例。


3mysql.png

在mysql.yml中,主要由三个部分组成。

1.5 Playbook执行结果解析


使用ansible-playbook运行playbook文件,得到如下输出信息,输出内容为JSON格式。并且由不同颜色组成,便于识别。一般而言

4playrun.png

在被控节点可以看到软件包已经安装并且mysqld服务以及启动。


5mysqlrpm.png

对比playbook文件内容与执行结果,可以得出playbook的执行步骤。


6playtype.png
下面依次分析执行步骤

1.5.1 收集facts


首先默认的第一个task就是收集远端被管主机的ansible元数据信息,也被称为facts,facts信息包括,远端主机发行版,IP地址,CPU核数,系统架构,主机名等等,然后这些元数据可以作为变量供后面的task使用。你可以使用如下命令查看元数据的具体信息。
ansible <hostpattern> -m setup [-i inventory_file]
如下所示

7fact.png

在你执行的过程中,你会看到有大量的facts信息,这里我只是截取一小部分。你也可以禁止ansible收集facts,在playbook中的hosts指令下面设置gather_facts指令即可。如下


8mysqlyml.png 收集fact信息.png

facts经常被用在条件语句模板当中,也可以用于根据指定的标准根据group_by模块创建动态主机组,我们后面会详细介绍,这里我简单列出一个facts的用法实例,使用条件判断语句关闭指定发行版的主机。

9ubuntu.png

1.5.2 执行tasks


这里为实际执行的task,每个任务都给出了它们的执行状态,是否改变了机器的状态。


10task.png

我们可以看到每个task都有自己定义的名称,我们也可以去除task的名称。


10-1task.png 然后查看输出信息
11yum.png 可以看到task没有名称了,一般我们建议使用name来标示任务,便于人更好的阅读。

1.5.3 报告结果


执行结果报告。第一次运行,系统状态改变了两次。


12result1.png

第二次运行,系统状态不再发生改变,这也说明了,ansible的幂等性,我们可以多次的重复执行一个playbook。而不用考虑系统重复执行task。


12result2.png

1.6 ansible-playbook实战小技巧

上面执行playbook的过程中,我们使用了ansile-playbook命令,为了灵活的控制playbook,ansible提供了ansible-playbook命令行工具,可以一些调整playbook执行流的选项,这里举出一些有用的实例。更多用法请参考ansible-playbook –h

1.6.1 例子一

查看当前任务,然后指定从哪里开始执行任务

161-1.png
161-2.png

1.6.2 例子二
执行或者跳过playbook中指定的tag,修改mysql.yml增加tags指令。

162-1.png

如下,结果,可以知道—tags与—skip-tags的区别。

162-2.png

1.6.3 例子三

使用—step来一步一步的确认命令。

163-1.png

提示:如果你感觉输出信息不够详细,使用-v选项,使用-vv选项,信息更加详细,信息最详细的为-vvvv选项,自行尝试。


回顾下今天所讲内容:
1、 playbook是什么
2、 playbook的基本格式
3、 playbook剧本组成
4、 playbook执行过程
5、 ansibel-playbook的几个基本案例


今天的分享到此结束,以上只是playbook的基础用法,更多高级用法敬请期待下一期。

上一篇 下一篇

猜你喜欢

热点阅读