一.为什么要引入playbook
我们完成一个任务,例如安装部署一个httpd服务,我们需要多个模块(一个模块也可以称之为task)提供的功能来完成。而playbook就是组织多个task的容器,它的实质就是一个文件,有着特定的组织格式,它采用的语法格式是YAML(Yet Another Markup Language)。YAML语法能够简单的表示散列表,字典等数据结构。
二.yuml基本语法
1.列表:每一个列表成员都要有一个短横线和空格
fruits:
- Apple
- Orange
- Strawberry
- Mango
或者:
fruits: ['Apple', 'Orange', 'Strawberry', 'Mango']
2.字典:每一个成员由键值对组成,注意冒号后面要有空格
martin:
name: Martin D'vloper
job: Developer
skill: Elite
或者
martin: {name: Martin D'vloper, job: Developer, skill: Elite}
列表和字典可以混用
3.yaml文件中短杠和冒号后面默认为2个空格,配置本地用户在yaml配置文件中使用tab自动补齐2个空格
[devops@server1 ~]$ vim .vimrc
autocmd filetype yaml setlocal ai ts=2 sw=2 et
三.playbook的基础组件
- Hosts:运行执行任务(task)的目标主机
- remote_user:在远程主机上执行任务的用户
- tasks:任务列表
- handlers:任务,与tasks不同的是只有在接受到通知时才会被触发
- templates:使用模板语言的文本文件,使用jinja2语法。
- variables:变量,变量替换{ { variable_name }}
整个playbook是以task为中心,表明要执行的任务。hosts和remote_user表明在哪些远程主机以何种身份执行。其他组件让其能够更加灵活。
四.playbook的应用
部署httpd服务:
1.编辑yaml文件
[devops@server1 ansible]$ vim playbook.yml
文件编辑内容如下:
--- 必须有的
#deploy apache 操作说明
- hosts: webservers 定义主机
tasks: 任务
- name: install httpd 任务起名可任意
yum: 任务调用的模块
name: httpd
state: latest 安装最新版的
- name: create index.html
copy:
content: "www.westos.org\n"
dest: /var/www/html/index.html
- name: configure httpd
copy:
src: files/httpd.conf 需要在当前目录下建立files目录并且将httpd.conf文件放入该目录
dest: /etc/httpd/conf/httpd.conf
owner: root