Ansible之roles

roles介绍

Roles 基于一个已知的文件结构,去自动的加载某些 vars_files,tasks 以及 handlers。基于 roles 对内容进行分组,使得我们可以容易地与其他用户分享 roles 。

1. 目录结构清晰
2. 可以相互调用

nginx与uwsgi代理: https://blog.51cto.com/wangfeng7399/2341281

目录结构

/data
├── nginx.yml                    # 执行playbook的入口文件, 要与nginx文件夹同级
└── roles                        # roles目录: 存放分组的内容
    ├── mariadb
    ├── nginx                    # nginx分组, 存放关于nginx要执行的 yml 文件
    ├── redis
    └── uwsgi
/nginx
    ├── files                    # 存放静态文件
    │   └── fstab
    ├── handlers                 # 存放需要触发的任务,里面必须main.yml文件
    │   └── main.yml
    ├── tasks                    # 存放的执行的任务 ,里面必须main.yml文件
    │   ├── copyfile.yml
    │   ├── install.yml
    │   ├── main.yml
    │   └── start.yml
    ├── templates                # 存放的模板文件
    │   └── nginx.conf
    └── vars                     # 存放参数,里面必须main.yml文件
        └── main.yml

查找循序

- 先查找当前目录下roles目录里面指定的对应文件夹
- 找tasks目录下面的main.yml文件, 通过 import_tasks 导入要执行的yaml文件, 按照导入顺序执行
- 如果遇到了templates, 去找templates文件夹下面的对应文件
- 如果遇到了notify,去找handlers里面的main.yml文件
- 如果遇到了copy, 去找files里面的对应文件
- 如果看到了变量, 如果是setup收集的变量就去setup, 如果不是就去vars里面的main.yml文件查找

编辑内容

tasks

# tasks中 main.yml 文件, 按照import_tasks 导入的顺序执行

- import_tasks: install.yml          # 导入要执行的的文件
- import_tasks: copyfile.yml
- import_tasks: start.yml
- name: fstab                        # 自定义要执行的任务
  copy: dest=/tmp/fs.txt src=fstab
  tags: fstabaz
# tasks中 install.yml 文件

- name: installnginx                 # 直接书写任务
  yum: name=nginx

handlers

# handlers中 main.yml 文件

- name: restart
  service: name=nginx state=restarted

vars

# vars中 main.yml 文件

{port: 80}                       # 要导入的配置文件的参数: 如 nginx.conf -> {{port}}
posted @ 2019-07-15 16:17  言值  阅读(227)  评论(0编辑  收藏  举报