前言
当需要进行的任务比较繁琐时,全写在一个playbook中,会显得比较混乱,难以管理和扩展,此时,可用
role
进行分层管理。
什么是role?
role 是一种任务管理风格,或者说是文件组织方式,将任务以角色的形式进行划分管理,从而使整个任务流程更为清晰、更易维护和扩展。
role的简单使用
需求
同时安装http和nginx,指定其版本信息,使用role进行管理
文件及目录含义
名称 | 类型 | 含义 |
---|---|---|
site.yml | 文件 | 项目的入口文件 |
hosts | 文件 | 项目的主机清单,使用时用-i 指定 |
groups_vars | 目录 | 存放角色的预定义变量文件,一般以角色命名,如httpd.yml ,如果是all.yml ,则表示所有角色都可以使用 |
roles | 目录 | 项目的角色管理目录 |
common | 目录 | 公共角色,定义其他角色多数会用到的变量、文件或操作 |
files | 目录 | 存放角色需要的文件 |
handlers | 目录 | 存放触发器操作 |
tasks | 目录 | 存放角色的主要任务操作 |
main.yml | 文件 | 单个组件 的入口文件 |
templates | 目录 | 存放角色用到的模板文件xxx.j2 |
vars | 目录 | 存放角色自己的变量文件 |
个别文件示例
- site.yml
使用roles
指定本次项目中需要进行操作的角色
- hosts
- groups_vars下建all.yml
all.yml
:所有角色都可使用
- 编辑common角色的main.yml
直接写任务列表即可
执行
ansible-playbook -C -i hosts site.yml
结果: