ansible-role
1、基本目录结构
-
编排目录结构

-
角色目录功能

# 目录结构
- some_role.yaml
- roles
- nginx
- tasks
- main.yaml
- task1.yaml
- taks2.yaml
- templ.yaml
- vars
- main.yaml
- files
- file1
- file2
- templates
- nginx.conf.j2
- redis.conf.j2
- handlers
- main.yaml
- http
- mysql
# 说明:
- 一级目录:执行文件,角色目录
- 二级目录:角色名称
- 三级目录:角色内目录,常用tasks(各种task任务)、vars(配置变量)、files(文件目录)、templates(模板目录)、handlers(触发器文件)
# some_role.yaml示例
- hosts: all
remote_user: root
roles:
- role: nginx //调用角色
- role: mysql
# 角色内的main.yaml
- include: task1.yaml //调用本角色任务
- include: task2.yaml //调用本角色任务
- include: roles/git/tasks/copy.yaml //调用其他角色的任务
注:涉及file或template的任务调用其他角色的任务时,建议写绝对路径,防止不同角色调用任务出错
# 角色内vars的main.yaml
user: nginx
group: nginx
2、roles加标签tags
# cat some_role.yaml
- hosts: all
remote_user: root
roles:
- { role: httpd , tags: ['web','httpd'] }
- { role: nginx , tags: ['web','nginx'] }
- { role: app , tags: "app" }
# ansible-playbook -t web some_role.yaml //调用web标签的角色
3、roles加条件判断when
# cat some_role.yaml
- hosts: all
remote_user: root
roles:
- { role: httpd, tags: ['web','httpd'] }
- { role: nginx, tags: ['web','nginx'] }
- { role: app, tags: "app", when: ansible_fqdn == "websrv" }
4、roles简单示例


浙公网安备 33010602011771号