跨平台自动化部署工具 Ansible 学习2 Playbooks
- 一、Playbook 介绍
- 二、Playbook的关键概念
- 三、Playbook语法
- 四、一个示例说明
- 1. `/etc/ansible/hosts`设置
- 2. playbook.yml
- 3. 执行一个shell的示例
- 4. task示例,添加自启动
- 5. task 示例,拷贝文件
- 6. task示例 service
一、Playbook 介绍
- Playbook可以运行多任务,比直接使用Module能实现更强大的功能。
- Playbook和roles都使用YAML文件格式。
- Playbook里包含一个或多个play,每个play中定义task。
- 可以理解为Playbook就是通过task调用module的集合。
二、Playbook的关键概念
- Hosts 受控主机
- Tasks 任务集合
- Varniables 内置变量或自定义变量
- Templates 模板
- Handlers,和notity结合使用,定义触发条件
- tags 标签,标记Playbook中的一段代码
三、Playbook语法
- playbook 使用yaml格式,文件扩展名为yaml或yml
- 在一个playbook文件中,
---
用来区分多个play。 -
...
用来表示一个play结束(可以省略)。 - 缩进是严格、有意义的,不能随便混用。
-
#
表示注释 - yaml中主要定义方式是键值对,使用
:
分隔;值可以同行或换行写。 - 冒号后、值前要有一个空格。
四、一个示例说明
1. /etc/ansible/hosts
设置
[webs]
jenkins ansible_ssh_host=192.9.200.182
2. playbook.yml
--- # 固定格式
hosts jenkins # 定义需要执行主机
remote_user root
tasks
name append
shell echo `date +"%Y-%m-%d %H:%M:%S"` begin >> /home/a.log
以上示例向目标主机的/home/a.log写入当前时间。
目标主机执行结果:
执行过程:
3. 执行一个shell的示例
--- # 固定格式
- hosts: jenkins # 定义需要执行主机
remote_user: root
tasks:
- name: execute app
shell: bash /opt/run_app.sh
4. task示例,添加自启动
- name: autorun
lineinfile: dest=/etc/rc.d/rc.local line="bash /opt/run_app.sh"
5. task 示例,拷贝文件
- name: copy run script
shell: cp /home/run_app.sh /opt/
6. task示例 service
# 启动
- name: Start Nginx
service:
name: nginx
state: started
# 重启
- name: Reload Nginx
service:
name: nginx
state: reloaded