playbook:
playbook(剧本):是ansible用于配置、部署和管理被控节点的剧本,用于Ansible操作的编排。
使用的是yaml格式,(saltstack、elk、docker、docker-compose、k8s都会使用到yaml格式。)
这种格式对我们运维的人员还是非常重要的。
YAML格式:
以.yaml结尾或者yml结尾。
1)文件的第一行以---开始,表明YAML文件的开始;(可选)
2)以#开头表示注释;<!-- -->
3)列表中的所有成员都开始于相同的缩进格式,并以使用一个"-"作为开头。
4)一个字典是由简单的 键: 值 的形式组成(冒号后面必须有一个空格。)
注意的是:写这种文件不要使用tab键,都必须使用空格。我们正常使用两个空格。
看一个示例:
字典和列表的格式:
示例:
[root@localhost playbook]# cat example.yaml
---
- hosts: group1
remote_user: root
tasks:
- name: ensure apache is at the latest version
yum: name=httpd,httpd-devel state=latest
- name: write the apache config file
copy: src=/etc/httpd/conf/httpd.conf dest=/etc/httpd/conf/httpd.conf
notify:
- restart apache
- name: ensure apache is running (and enable it at boot)
service: name=httpd state=started enabled=yes
handlers:
- name: restart apache
service: name=httpd state=restarted
说明:
1)tasks任务。
2)安装httpd;
3)copy模块,同步配置文件;
4)notify是配置文件修改之后,调用restart apache的handlers:这种格式要留心下。
[root@localhost ~]# ansible-playbook /etc/ansible/playbook/example.yaml
PLAY [group1] *************************************************************************************
TASK [Gathering Facts] ****************************************************************************
ok: [192.168.17.106]
ok: [192.168.17.105]
TASK [ensure apache is at the latest version] *****************************************************
changed: [192.168.17.105]
changed: [192.168.17.106]
TASK [write the apache config file] ***************************************************************
changed: [192.168.17.105]
changed: [192.168.17.106]
TASK [ensure apache is running (and enable it at boot)] *******************************************
changed: [192.168.17.105]
changed: [192.168.17.106]
RUNNING HANDLER [restart apache] ******************************************************************
changed: [192.168.17.106]
changed: [192.168.17.105]
PLAY RECAP ****************************************************************************************
192.168.17.105 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
192.168.17.106 : ok=5 changed=4 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
说明:绿色表示的没有更新。黄色的表示有更新。红色表示的failed。
步骤和错误都是可视化。这个是playbook的一个优点。
playbook有个专业术语:幂等性。
幂等性的概念:一次或多次请求某一个资源本身应该具有同样的结果。(网络超时等问题除外。)
1)出错不用推导重做。
2)剧本执行一百次,结果只有一个。
3)避免了万一出错,需要重来的问题。我们可以先写个剧本,万一某一步出错,我们不需要推导重来。