Skip to content

Commit 2ce79cc

Browse files
committed
Updated 'src/usage/playbook/using/roles.md'.
1 parent 9b3644f commit 2ce79cc

File tree

3 files changed

+63
-2
lines changed

3 files changed

+63
-2
lines changed

src/SUMMARY.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@
4040

4141
- [建立 Anisble 仓库](usage/inventories_building.md)
4242
- [运用动态仓库](usage/dynamic_inventory.md)
43-
- [模式:选择主机与组别](usage/patterns.md)
43+
- [模式:选取主机与组别](usage/patterns.md)
4444
- [连接方式与细节](usage/connection.md)
4545
- [使用 Anisble 命令行工具](usage/cli.md)
4646
- [`ansible`](usage/cli/ansible.md)

src/usage/playbook/using/reuse.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,7 @@ Ansible 提供了两种于 playbook 中,重用文件和角色的方式:动
118118
| 处理 playbook | 没有 `include_playbook` | 可以导入完整的 playbook |
119119
| 处理变量文件 | 可以包含变量文件 | 使用 `vars_files: ` 来导入变量 |
120120
121-
> **注意**:二者在资源消耗和性能方面也有很大差异,导入就相当精简和快速,而包括则需要大量的管理和审计
121+
> **注意**:二者在资源消耗和性能方面也有很大差异,导入就相当精简和快速,而包含则需要大量的管理和审计
122122
123123
124124
## 将任务重用为处理程序

src/usage/playbook/using/roles.md

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1 +1,62 @@
11
# 角色
2+
3+
角色让咱们,可以根据已知文件结构,自动加载相关变量、文件、任务、处理程序和其他 Ansible 工件。在咱们将咱们的内容,分组到角色后,咱们就可以轻松地重用他们,并与其他用户共享。
4+
5+
## 角色目录结构
6+
7+
Ansible 角色有个定义好的目录结构,有 7 个主要标准目录。在每个角色中,咱们必须至少包含其中一个目录。咱们可以省略角色未用到的所有目录。例如:
8+
9+
```console
10+
# playbooks
11+
site.yml
12+
webservers.yml
13+
fooservers.yml
14+
```
15+
16+
```console
17+
roles/
18+
common/ # 这个层次结构,表示某个 “角色”
19+
tasks/ #
20+
main.yml # <-- 如有必要,任务文件可包含一些较小文件
21+
handlers/ #
22+
main.yml # <-- 处理程序文件
23+
templates/ # <-- 用于使用模板资源的文件
24+
ntp.conf.j2 # <------- 以 .j2 结尾的模板
25+
files/ #
26+
bar.txt # <-- 用于 copy 模组资源的文件
27+
foo.sh # <-- 用于 script 模组资源的脚本文件
28+
vars/ #
29+
main.yml # <-- 与本角色相关的变量
30+
defaults/ #
31+
main.yml # <-- 本角色的默认较低优先级变量
32+
meta/ #
33+
main.yml # <-- 角色依赖项
34+
library/ # 角色也可以包含定制模组
35+
module_utils/ # 角色也可以包含定制的 module_utils
36+
lookup_plugins/ # 或其他插件类型,比如这种情形下的查找
37+
38+
webtier/ # 如同上面 "common" 这种同类型的结构,用于 webtier 角色
39+
monitoring/ # ""
40+
fooapp/ # ""
41+
```
42+
43+
默认情况下,Ansible 会在大多数角色目录中,查找 `main.yml` 文件以获取相关内容(也包括 `main.yaml``main`):
44+
45+
- `tasks/main.yml` - 角色提供给 play 用于执行的任务列表;
46+
- `handlers/main.yml` - 导入到父 play 中,供该角色,或 play 中的其他角色及任务使用的处理程序;
47+
- `defaults/main.yml` - 该角色提供的变量的低优先级值(更多信息请参阅 [“使用变量”](vars.md))。角色自身的默认值,将优先于其他角色的默认值,但任何/所有其他变量来源,都将优先于此;
48+
- `vars/main.yml` - 角色提供给 play 的高优先级变量(更多信息请参阅 [“使用变量”](vars.md));
49+
- `files/stuff.txt` - 对角色及其子角色可用的一或多个文件;
50+
- `templates/something.j2` - 在角色或子角色中使用的模板;
51+
- `meta/main.yml` - 角色的元数据,包括角色的依赖项及可选的 Galaxy 元数据,如支持的平台等。对于以独立角色上传到 Galaxy,这是必须的,但在咱们的 play 中使用角色时,则不需要。
52+
53+
54+
> **注意**
55+
>
56+
> - 对于某个角色来说,上述任何文件都不是必需的。例如,咱们可以只提供 `files/something.txt``vars/for_import.yml`,其仍然是个有效的角色;
57+
>
58+
> - 在独立角色中,咱们也可以包含自定义模组和/或插件,例如 `library/my_module.py`,这些模组和/或插件可在该角色中使用(更多信息,请参阅 [在角色中嵌入模组和插件](#在角色中嵌入模组和插件));
59+
>
60+
> - 所谓 “独立” 角色,指的是不属于某个专辑,而是作为可单独安装内容的角色;
61+
>
62+
> - `vars/``defaults/` 中的变量,会被导入到 play 的作用域中,除非咱们通过 `import_role`/`include_role` 中的 `public` 选项禁用他。

0 commit comments

Comments
 (0)