参考: ansible中文权威指南
1. 动态Include
结合when等判断,在满足某个条件的时候加载。
- include: test.yml
when: ......
handler 中也可以使用include
2. ansible role 结构
roles目录结构一般如下,可以根据实际情况减少:
. ├── group_vars #定义主机组的变量,虽然可以写在playbook和hosts中,但是提倡分离.文件用组名命名. │ ├── all.yml │ ├── seawar_server.yml │ ├── seawar.yml │ └── test1.yml ├── hosts ├── host_vars #定义特定主机的变量,文件以主机命名, │ └── ios-cn-58.yml ├── main.yml #整个playbook的入口文件,组织多个role的任务执行。任务总调度文件。主要指定远程主机,执行用户,调用的roles等。 └── roles ├── base #roles的名字 │ ├── files #存放要传输文件的目录,不用在tasks/main.yml中写绝对路径就可以用 │ │ └── server.sh │ ├── handlers │ │ └── main.yml │ ├── meta │ ├── tasks │ │ ├── fileup.yml #分离出来的任务,main.yml中include直接引用。 │ │ ├── main.yml #任务主函数,整个role的任务入口。 │ │ └── sql.yml #分离出来的任务,main.yml中include直接引用。 │ ├── templates # 模版文件,一般用于配置文件的变更 │ └── vars # 变量 │ └── main.yml #一般定义templates中要用到的变量 └── create_dir.sh
roles说明:
这个 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 and later)
- 所有 copy tasks 可以引用 roles/x/files/ 中的文件,不需要指明文件的路径。
- 所有 script tasks 可以引用 roles/x/files/ 中的脚本,不需要指明文件的路径。
- 所有 template tasks 可以引用 roles/x/templates/ 中的文件,不需要指明文件的路径。
- 所有 include tasks 可以引用 roles/x/tasks/ 中的文件,不需要指明文件的路径。
hosts定义如下:
[ios_cn] iOS-CN-1-16 iOS-CN-17-32 iOS-CN-33-52 iOS-CN-53-54 iOS-CN-55-56 iOS-CN-57 iOS-CN-58 [ios_tw] 121.40.20.132 [an_360] 360-1 360-2 360-3 [googleplay] android-TW-1-6 [jp_ios] gNetop-iOS-JP-1-2 gNetop-iOS-JP-3-5 gNetop-iOS-JP-6-9 gNetop-iOS-JP-10-11 gNetop-iOS-JP-12-13 gNetop-iOS-JP-14-17 gNetop-iOS-JP-18-22 gNetop-iOS-JP-23-24 gNetop-iOS-JP-25 [jp_an] gNetop-android-JP-1-4 gNetop-android-JP-5-8 gNetop-android-JP-9-10 gNetop-android-JP-11 [na] gNetop-NA-S1 gNetop-NA-S2 gNetop-NA-S3 gNetop-NA-39 [eu] gNetop-EU-1 gNetop-EU-2 gNetop-EU-3 [sea] gNetop-SEA-M1 gNetop-SEA-M2 [seawar_server:children] ios_cn ios_tw jp_ios na eu sea [seawar:children] googleplay an_360 jp_an [test] 172.10.30.239 [test1:children] test