2.4 Ansible Role
Ansible 在 1.2 版本以后就支持了 role,在实际工作中有很多不同业务需要编写很多 playbook 文件,时间长了以后,对这些 playbook 很难进行维护,这个时候我们就可以采用 role 的方式管理 playbook 。其实 role 只是对我们日常使用的 playbook 的目录进行一些规范,与日常的 playbook 没有什么区别。
role 的目录结构
site.yml
webservers.yml
fooservers.yml
roles/
common/
tasks/
handlers/
files/
templates/
vars/
defaults/
meta/
webservers/
tasks/
defaults/
meta/
- default/:设定默认变量时使用此目录中的main.yml文件
- tasks/:定义task,role的基本元素,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
- handlers/:至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
- vars/:定义变量,至少应该包含一个名为main.yml的文件;其它的文件需要在此文件中通过include进行包含
- meta/:定义当前角色的特殊设定及其依赖关系,至少应该包含一个名为 main.yml的文件,其它文件需在此文件中通过include进行包含
- files/ :存放由copy或script模块等调用的文件
- templates/: template模块查找所需要模板文件的目录
role 的使用
role 最经典的使用方式是创建一个 roles 来使用,如下:
---
- hosts: web
roles:
- common
- webservers