参考:  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
hosts

相关文章: