playbook简介
playbook是一个由yml语法编写的文本文件,它由play和task两部分组成。
play: 主要定义要操作主机或者主机组
task: 主要定义对主机或主机组具体执行的任务,可以是一个任务,也可以是多个任务
playbook简单理解就是把ad-hoc多个模块都统一写到一个文件里面,然后根据自己的需求来自定义编排要使用哪些功能,第一步使用哪些功能,第二步使用哪些功能……
Playbook通过yaml语法识别描述的状态文件,扩展名是yaml。
yamI三板斧
缩进: yaml使用一个固定的缩进风格表示层级结构,每个缩进由两个空格组成,不能使用tab键
冒号: 以冒号结尾的除外,其他所有冒号后面所有必须有空格。
短横线: 表示列表项,使用一个短横线加一个空格作为一个列表项,多个项使用同样的缩进级别作为同一列表。
#比如我们写了一个yaml文件
vim apache_install.yaml
#文件内容如下:
#这是一个ansible的playbook
#第一步: 找到谁,hosts: 定义主机清单,ansible的hosts文件里定义的主机清单模块名
#第二步: 大概做的任务: 安装,配置,启动
#第三步: 具体怎么做
#name: 描述信息,task里有3个同级别的列表步骤
#yum: 远端安装服务,yum模块安装服务(installed)
#copy: 远端拷贝文件,copy模块传送文件到远端
#service: 远端启动服务(started)
#remote user: root 是指定远程主机上使用的用户
#gather facts: no 是默认执行playbook时候,默认会收集目标主机的信息,禁用掉能提高效率- hosts: test #第一行,定义主机清单test
remote user: root #第二行写入就需要空两个空格,表示本行内容属于上面第一行
gather facts: no #注意冒号后面都需空格,以冒号为变量定义相关内容
tasks:
- name: install apache fuwu #一个横杆+一个空格代表一个任务
yum: name=apache,apache-tools state=installed #调用yum模块
- name: configure apache fuwu #第二个任务
copy: src=/root/apache.conf dest=/etc/apache/conf/apache.conf #调用copy模块notify: Restart apache fuwu #重启定义的apache服务
- name: create share data directory #创建一个共享目录,file模块创建目录赋予权限
file: path=/data state=directory recurse=yes owner=root group=root mode=755
- name: qidong apache fuwu #第三个任务
service: name=apache state=started enabled=yes #调用service模块handlers:
- name: Restart apache fuwu #名字定义为重启Apache服务
service: name=apache state=restarted #调用service服务,名字是apache,任务是重启
ansible-playbook常用命令
#执行yaml文件,格式:ansible-playbook "yaml文件"
ansible-playbook apache_install.yaml
#检查语法是否错误,格式:ansible-playbook --syntax-check "yaml文件"
ansible-playbook --syntax-check apache_install.yaml
#模拟执行,不是真的直接执行,格式:ansible-playbook -C "yaml文件"
ansible-playbook -C apache_install.yaml
案例:批量安装源码nginx服务