ansible-playbook 使用
一.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
做一个决定,并不难,难的是付诸行动,并且坚持到底。