1.playbook简介
Playbook与ad-hoc相比,是一种完全不同的运用
playbook是一种简单的配置管理系统与多机器部署系统的基础,且非常适合于复杂应用的部署
playbook中可以编排有序的执行过程,甚至于做到在多组机器间
来回有序的执行特别指定的步骤,并且可以同步或异步的发起任务
使用playbook可以方便的重用这些代码,可以移植到不同的机器上面
2.playbook语法
playbook由YMAL语言编写,以下为playbook常用到的YMAL格式:
(1)文件的第一行应该以"—"三个连字符开始,表明YMAL文件的开始。
(2)在同一行中,#之后的内容表示注释,类似于shell,python和ruby。
(3)YMAL中的列表元素以”-”开头然后紧跟着一个空格,同一个列表中的元素应该保持相同的缩进:
(4)一个字典是由一个简单的 键: 值 的形式组成(这个冒号后面必须是一个空格),字典也可以使用缩进形式来表示
例如
![在这里插入图片描述](https://img-blog.csdnimg.cn/2019101622282677.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1JhcGlnMQ==,size_16,color_FFFFFF,t_70)
主机与用户
- hosts: server2 #指定主机组,可以是一个或多个组,逗号分隔。
remote_user: root #指定远程主机执行的用户名
---
- hosts: webservers
remote_user: root
become: yes #切换用户运行
become_user: mysql #指定sudo用户为mysql
Tasks 列表
Play的主体部分是task列表,task列表中的各任务按次序逐个在hosts中指定的主机上执行,
即在所有主机上完成第一个任务后再开始第二个任务。如果一个host执行task失败,整个tasks都会回滚。
每一个task必须有一个名称name,这样在运行playbook时,从其输出的任务执行信息中可以很好的辨别出是属于哪一个task的。
tasks:
- name: install apache #定义任务名
执行playbook
ansible-playbook apache.yml 直接执行
ansible-playbook apache.yml --syntax-check #检查yaml文件的语法是否正确
ansible-playbook apache.yml --list-task 检查tasks任务
ansible-playbook apache.yml --list-hosts 检查生效的主机
ansible-playbook a.yml --start-at-task=“xxxx” #指定从某个task开始运行
3.编写playbook实现自动安装服务
(1)由于yml文件语法的要求,我们先编写一个特定的vim,一个tab等于两个空格
(2)开始编写yml文件
server2上查看
playbook语法检查
playbook执行host的检查
playbook tasks的检查
在server3上配置apache
可以这样写,用item变量,loop循环httpd和firewalld