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简单示例

posted @ 2021-10-06 19:04  那就这样吧~  阅读(85)  评论(0)    收藏  举报