first commit
This commit is contained in:
commit
ba848e218d
1001 changed files with 152333 additions and 0 deletions
52
Ansible/角色(Role).md
Normal file
52
Ansible/角色(Role).md
Normal file
|
@ -0,0 +1,52 @@
|
|||
角色(role)用于层次化,结构化组织playbook。roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单的说,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。角色一般用于基于主机构建服务的场景中、但也可以是用于构建守护进程等场景中。
|
||||
目录结构如下:
|
||||
```
|
||||
site.yml
|
||||
webservers.yml
|
||||
fooservers.yml
|
||||
roles/
|
||||
common/
|
||||
files/
|
||||
templates/
|
||||
tasks/
|
||||
handlers/
|
||||
vars/
|
||||
defaults/
|
||||
meta/
|
||||
webservers/
|
||||
files/
|
||||
templates/
|
||||
tasks/
|
||||
handlers/
|
||||
vars/
|
||||
defaults/
|
||||
meta/
|
||||
```
|
||||
yml文件,用于定义此角色用到的各handler:在handler中使用include包含的其他的handler文件也应该位于此目录中;
|
||||
files目录:存放由copy或script等模块调用的文件;
|
||||
templates目录:templates模块会自动在此目录中寻找Jinja2模板文件;
|
||||
tasks目录:至少应该包含一个名为main.yml的文件,其定义了此角色的任务列表;此文件可以使用include包含其他的位于此目录中的task文件;
|
||||
handlers目录:此目录中应当包含一个main;
|
||||
vars目录:应当包含一个main.yml文件,用于定义此角色用到的变量;
|
||||
meta目录:应当包含一个main.yml文件,用于定义此角色的特殊设定及其依赖关系;ansible 1.3及其以后的版本才支持
|
||||
default目录:为当前角色设定默认变量时使用此目录;应当包含一个main.yml文件;
|
||||
|
||||
那么一个playbook就可以这样写
|
||||
```
|
||||
---
|
||||
- hosts: webservers
|
||||
roles:
|
||||
- common
|
||||
- webservers
|
||||
```
|
||||
|
||||
这个 playbook 为一个角色 ‘x’ 指定了如下的行为:
|
||||
|
||||
如果 roles/x/tasks/main.yml 存在, 其中列出的 tasks 将被添加到 play 中
|
||||
如果roles/x/handlers/main.yml 存在, 其中列出的 handlers 将被添加到 play 中
|
||||
如果roles/x/vars/main.yml 存在, 其中列出的 variables 将被添加到 play 中
|
||||
如果roles/x/meta/main.yml 存在, 其中列出的 “角色依赖” 将被添加到 roles 列表中 (1.3 andlater)
|
||||
所有 copy tasks 可以引用 roles/x/files/ 中的文件,不需要指明文件的路径。
|
||||
所有 scripttasks 可以引用 roles/x/files/ 中的脚本,不需要指明文件的路径。
|
||||
所有 template tasks 可以引用roles/x/templates/ 中的文件,不需要指明文件的路径。
|
||||
所有 include tasks 可以引用roles/x/tasks/ 中的文件,不需要指明文件的路径。
|
Loading…
Add table
Add a link
Reference in a new issue