Ansible playbook
Playbooks 与 adhoc 相比,是一种完全不同的运用 ansible 的方式,是非常之强大的.
简单来说,playbooks 是一种简单的配置管理系统与多机器部署系统的基础.与现有的其他系统有不同之处,且非常适合于复杂应用的部署.
Playbooks 可用于声明配置,更强大的地方在于,在 playbooks 中可以编排有序的执行过程,甚至于做到在多组机器间,来回有序的执行特别指定的步骤.并且可以同步或异步的发起任务.
使用 adhoc 时,主要是使用 /usr/bin/ansible 程序执行任务.而使用 playbooks 时,更多是将之放入源码控制之中,用之推送你的配置或是用于确认你的远程系统的配置是否符合配置规范.
playbook使用yaml语法。yaml语法可以通过yaml官方资料查看,也可以查看Ansible中文文档的相关介绍。
ansible-playbook [options] playbook.yml [playbook2 ...]
通过简单的例子来认识playbook
nginx.yml
---
- hosts: all
tasks:
- name: Install Nginx
yum: name=nginx state=present
- name: template nginx.conf
template: src=./nginx.conf.js dest=/etc/nginx/nginx.conf owner=root group=root mode=0644 validate='nginx -t -c %s'
notify:
- Restart Nginx Service
handlers:
- name: Restart Nginx Service
service: name=nginx state=restarted
- 第一行表示该文件时yaml文件,非必须
- 第二行定义了该playbook针对的主机目标,all表示针对所有主机;这个参数支持Ad-Hoc模式的所有参数也支持自定义组
- 第三行定义了这个playbook的tasks集合
- 第四行定义一个tasks的名称,非必要,在运行playbook的时候可以比较明了的显示playbook运行到哪一步,建议根据tasks实际任务命名
- 第五行定义了一个状态的action,这里使用的是yum模块安装nginx软件包
- 第六行到第九行使用template模板去管理/etc/nginx/nginx.conf文件,owner和group定义该文的属主和属组,使用validate参数指定文件生产后使用
nginx -t -c %s
命令去做nginx文件语法验证,notify是触犯handlers,如果同步后,文件的MD5值有变化会触发Restart Nginx Service这个handler。 - 第十行到十二行是定义一个handler状态让nginx服务重启,handler的名称是Restart Nginx Service。
检查playbook文件的语法
ansible-playbook nginx.yml --syntax-check
playbook: nginx.yml
执行nginx.yml剧本
ansible-playbook -i hosts nginx.yml
PLAY [all] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************************
ok: [172.16.1.11]
ok: [172.16.1.10]
TASK [Install Nginx] *************************************************************************************************************
changed: [172.16.1.10]
changed: [172.16.1.11]
TASK [template nginx.conf] *************************************************************************************************************
ok: [172.16.1.10]
ok: [172.16.1.11]
PLAY RECAP *************************************************************************************************************
172.16.1.10 : ok=3 changed=1 unreachable=0 failed=0
172.16.1.11 : ok=3 changed=1 unreachable=0 failed=0