一.Ansible playbook简介
playbook是ansible用于配置,部署,和管理被节点的剧本
通过playbook的详细描述,执行其中的一些列tasks,可以让远端的主机达到预期的状态。playbook就像ansible控制器给被控节点列出的一系列to-do-list,而且被控节点必须要完成
playbook顾名思义,即剧本,现实生活中演员按照剧本表演,在ansible中,这次由被控计算机表演,进行安装,部署应用,提供对外的服务等,以及组织计算机处理各种各样的事情。
二.Ansible playbook使用场景
执行一些简单的任务,使用ad-hoc命令可以方便的解决问题,但是有时一个设施过于复杂,需要大量的操作的时候,执行的ad-hoc命令是不合适的,这时候最好使用playbook。
就像执行shell命令与写shell脚本一样,也可以理解为批处理任务,不过playbook有自己的语法格式使用playbook可以方便的重复使用这些代码,可以移植到不同的机器上面,像函数一样,最大化的利用代码。
在你使用Ansible的过程中,你也会发现,你所处理的大部分操作都是编写playbook。可以把常见的应用都编写playbook,之后管理服务器会变得很简单。

三.基本语法

大小写敏感

使用缩进表示层级关系

缩进时不允许使用 Tab 键,只允许使用空格

缩进的数目不重要,只要相同层级的元素左侧对齐即可

四.参数解析

playbooks是使用yaml语法格式,所以看起来比较通俗易懂。通过上面的示例可以看出一个play可以包含如下内容:

  • hosts:主机组,后面定义的task将作用于该主机组的所有主机
  • vars:变量定义,在后面的task中可以引用
  • remote-user:连接参数,例如remote-user,become,become-user等等,这些参数将会覆盖ansible.cfg配置文件里的参数
  • tasks:任务,可以看作很多modules的集合,这些modules可以使用vars定义的变量
  • handlers:触发才会执行的task,很多情况下,当其他task被执行并且状态有改变后,我们希望会触发一些任务,那些被触发的任务可以写在这里

五.完整实例

#脚本解析
1、|| /bin/true 表示该条脚本执行失败了,也继续执行下发的脚本
2、vars 参数定义,也可以直接下面执行时候带入参数替换当前参数的值
[root@manager roles]# more fb.yml 
- hosts: all
  vars:
     - cont_name: nginx
     - prot: 8080:80
     - tag: latest
  tasks:
     - name: delete content
       shell: docker rm -f {{ cont_name }} || /bin/true
     - name: pull images
       shell: docker pull {{ cont_name }}:{{ tag }} || /bin/true
     - name: run docker rongqi
       shell: docker run --name {{ cont_name }} -p {{ prot }} -d {{ cont_name }}:{{ tag }} || /bin/true
#执行脚本
[root@manager roles]# ansible-playbook fb.yml -e cont_name=nginx -e prot=8002:80 -e tag=latest

PLAY [all] ********************************************************************************************************************************************************

TASK [Gathering Facts] ********************************************************************************************************************************************
ok: [100.98.100.186]

TASK [delete content] *********************************************************************************************************************************************
changed: [100.98.100.186]

TASK [pull images] ************************************************************************************************************************************************
changed: [100.98.100.186]

TASK [run docker rongqi] ******************************************************************************************************************************************
changed: [100.98.100.186]

PLAY RECAP ********************************************************************************************************************************************************
100.98.100.186             : ok=4    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

  

  

做一个决定,并不难,难的是付诸行动,并且坚持到底。