Ansible除了命令行模式外,还有另一种执行方式——playbook模式。
一、什么是playbook模式
playbook模式,也称为剧本模式。如同拍戏的剧本,将一部戏化分为一个个小场景,一 一进行拍摄后从而得到完整的电影或电视剧一般。在playbook中,将原本复杂的任务划分做一个个子任务,调用对应的模块进行处理,最后完成所期望的功能。
二、playbook的基本语法
playbook使用的是yaml语法,语法要求较为严格,文件后缀名为 yml。
- 文件顶行写 — ,三个短横
- 每个除了属性之外的name前都需有 - ,一个短横
- - 与 : 后至少空一格
- 同层级的元素缩进必须相同,即必须左对齐!
- 子级的缩进至少比父级多两个空格!
三、实例
需求:在agent
主机组下的主机上安装http服务
编写playbook如下:
元素分析:
- name:一般用作任务描述,yum之后的name是yum模块的name属性
- hosts:需要执行任务的主机组名称
- tasks:任务列表
- yum/copy/service:功能模块
步骤分析:
-
调用
yum
模块安装httpd包 -
调用
copy
模块复制本地的httpd.conf配置文件到agent组的主机上进行替换 -
调用
service
模块启动http服务,并设置enable,允许开机自启动
四、执行playbook
编写完playbook后,一般会按照以下步骤执行。
例如有任务文件为 inst_httpd.yml
-
检查语法正确性
ansible-playbook --syntax-check inst_httpd.yml
-
预执行,查看执行过程是否有报错
ansible-playbook -C inst_httpd.yml
注意是大写的 C
预执行的方式,会将任务流程在任务主机中走一遍,但不会产生任何直接结果,如同彩排一般,极大避免了直接执行可能出现的意外风险,对执行过程中的错误能及时调整。 -
直接执行
ansible-playbook inst_httpd.yml
不加任何参数