1. playbooks简介
- playbook与ad-hoc相比,是一种完全不同的运用
- playbook是一种简单的配置管理系统与多机器部署系统的基础,且非常适合于复杂应用的部署
- playbook中可以编排有序的执行过程,甚至做到在多组机器间,来回有序的执行特别指定的步骤,并且可以 同步或异步的发起任务
- 使用playbook可以方便的重用代码,可以移植到不同的机器上面
- playbook才是ansible真正强大之处
playbook的作用
- 将多个模块操作的功能进行整合
- 实现重复工作简单化(提高工作效率)
- 实现特殊需求
3. playbooks的语法规范
playbook是由YMAL语言编写,以下为playbook常用到的ymal格式规范
(1)yml文件第一行以"---"
三个连字符开始;"#"
之后的内容表示注释
(2)注意缩进的关系:两个空格一个缩进关系
(3)创建键值对 :使用冒号和空格(如 age: 18);如果没有空格是错误的;(如 age:18(错误))
有两种特殊情况除外:
- 冒号结尾
- 冒号出现在描述和注释当中
(4)列表:相同的信息或类别出现多次
列表元素以"-"开头然后紧跟着一个空格,同一列表中的元素应该保持相同的缩进
如:
- team1 zhangsan lisi
- team2 zhangsan lisi
4. ansible-playbook常用命令
参数 | 作用 |
---|---|
- - list-hosts | 列出所有hosts对象信息 |
- -list-tags | 列出所有标签 |
- -list-tasks | 列出所有任务 |
-t TAGS | 运行某一标签模块 |
- -syntax-check | 语法检测 |
5. playbooks的简单示例
配置apache服务示例:
[devops@server1 ansible]$ cat apache.yml
---
- hosts: test
tasks:
- name: install apache
yum:
name: httpd
state: present
- name: config apache
copy:
src: httpd.conf
dest: /etc/httpd/conf/httpd.conf
notify: restart apache
- name: create index.html
file:
path: /var/www/html
state: touch
mode: u=rw,g=r,o=r
- name: start apache
service:
name: httpd
state: started
- name: config firewalld
firewalld:
service: http
permanent: yes
state: enabled
handlers:
- name: restart apache
service:
name: httpd
state: restarted
[devops@server1 ansible]$ ansible-playbook apache.yml --syntax-check
playbook: apache.yml
[devops@server1 ansible]$ ls
ansible.cfg hosts lin.repo test_roles.yml
apache.yml httpd.conf ##copy模块用到的src文件要与yml文件在同一目录下