5.ansible 剧本playbook编写规范
1.什么是playbook
playbook是ad-hoc的编排工具,是由yaml语法编写的文本文件,它是由 play 和 book两部分组成。可以把它看陈shell脚本
paly 主要定义的是主机和主机组
book 主要定义的是task(任务),它可以是一个或多个任务
2.为什么用Ansible playbook
- 2.1 执行一些简单的任务,使用ad-hoc命令可以方便的解决问题,但是有时一个设施过于复杂,需要大量的操作的时候,执行的ad-hoc命令是不合适的,这时候最好使用playbook。
- 2.2 就像执行shell命令与写shell脚本一样,也可以理解为批处理任务,不过playbook有自己的语法格式
- 2.3 使用playbook可以方便的重复使用这些代码,可以移植到不同的机器上面,像函数一样,最大化的利用代码。在你使用Ansible的过程中,你也会发现,你所处理的大部分操作都是编写playbook。可以把常见的应用都编写playbook,之后管理服务器会变得很简单
3.playbook编写格式
三种规范原则:
语法 | 含义 |
---|---|
空格 | 缩进信息 两个空格 PS:编写剧本时,将tab键扣掉 |
冒号 | key-value(键值关系) hosts: 172.16.1.41冒号后面不需要有空格情况 |
短横线 | - 生成列表信息 - hosts: 172.16.1.41 - hosts: 172.16.1.31 |
1.编写示例
cat test.yaml
- hosts: 192.168.1.203
tasks:
- yum: name=cowsay state=installed
- copy: src=/etc/hosts dest=/tmp/hosts.bak remote_src=yes
2.语法检查 检查语法有没有错误
ansible-playbook --syntax-check test.yaml
3.模拟执行
ansible-playbook -C test.yaml
4.剧本模拟执行 检查剧本是否能执行
ansible-playbook -C test.yaml
PLAY [192.168.1.203] ****************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************
ok: [192.168.1.203]
TASK [yum] **************************************************************************************************************************************************
changed: [192.168.1.203]
TASK [copy] *************************************************************************************************************************************************
ok: [192.168.1.203]
PLAY RECAP **************************************************************************************************************************************************
192.168.1.203 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
5.剧本执行
ansible-playbook test.yaml
PLAY [192.168.1.203] ****************************************************************************************************************************************
TASK [Gathering Facts] **************************************************************************************************************************************
ok: [192.168.1.203]
TASK [yum] **************************************************************************************************************************************************
changed: [192.168.1.203]
TASK [copy] *************************************************************************************************************************************************
ok: [192.168.1.203]
PLAY RECAP **************************************************************************************************************************************************
192.168.1.203 : ok=3 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
rsync 示例
cat rsync.yaml
- hosts: 172.16.1.41
tasks:
- name: 01:install rsync software
yum: name=rsync state=installed
- name: 02:push client
copy: src=./rsyncd.conf dest=/etc/
- name: 03:create user
user: name=rsync shell=/sbin/nologin create_home=no
- name: 04:create password file
copy: content='rsync_backup:oldboy123' dest=/etc/rsync.password mode=600
- name: 05:create backup dir
file: path=/backup state=directory owner=rsync group=rsync
- name: 06:重启rsync服务
service: name=rsyncd state=restarted enabled=yes
- hosts: rsync_client
tasks:
- name: 01:ceate password file
copy: content='oldboy123' dest=/etc/rsync.password mode=600