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

results matching ""

    No results matching ""