Ansible 角色(Roles)介绍
Ansible 自1.2版本引入的新特性,用于层次性、结构化地组织 Playbook。
Roles 能够根据层次型结构自动装载变量(vars)文件、tasks 以及 handlers 等。
简单来讲,Roles 就是分别将变量、文件、任务、模板及处理器放置于单独的目录中,并可以便捷的调用它们的一种机制。
从表面上看,Roles 就是一个目录。目录的名字也就是 Role 的名字。例如:
[root@wpf roles]# tree ./
./
└── nginx #角色项目名称
├── defaults #为当前角色设定默认变量
│ └── main.yml
├── files #存放由copy模块或script模块调用的文件
├── handlers #定义此角色中触发条件时执行的动作
│ └── main.yml
├── tasks #定义此角色的任务列表,此文件可以使用include包含其它的位于此目录的task文件。
│ └── main.yml
├── templates #存放jinjia2模板,template模块会自动在此目录中寻找jinjia2模板文件。
├── vars #定义此角色用到的变量
│ └── main.yml
└── meta #为此角色定义一些元数据
└── main.yml
注意: defaults、handlers、tasks、vars、meta,这几个子目录里面必须包含一个main.yml文件。
PS: 角色必须至少包含这些目录之一,但是最好排除任何未使用的目录。
·
制作一个 Role
·
分解的 Playbook
---
- name: task control playbook example
hosts: wpf002
vars:
createuser:
- tomcat
- www
- mysql
tasks:
- name: create user
user