使用ansible中的roles来管理主机。

剧本中的roles
你现在已经学过 tasks 和 handlers,那怎样组织 playbook 才是最好的方式呢?简单的回答就是:使用 roles ! Roles 基于一个已知的文件结构,去自动的加载某些 vars_files,tasks 以及 handlers。基于 roles 对内容进行分组,使得我们可以容易地与其他用户分享 roles 。

你现在已经学过 tasks 和 handlers,那怎样组织 playbook 才是最好的方式呢?简单的回答就是:使用 roles ! Roles 基于一个已知的文件结构,去自动的加载某些 vars_files,tasks 以及 handlers。基于 roles 对内容进行分组,使得我们可以容易地与其他用户分享 roles 。
如果 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/ 中的文件,不需要指明文件的路径。
所有 import  tasks 可以引用 roles/x/tasks/ 中的文件,不需要指明文件的路径。

roles的优势:

  • 目录结构比较清晰

  • 可以相互调用

  • 便于备分

roles的目录结构:

nginx/
├── files
│   └── fstab
├── handlers
│   └── main.yml
├── tasks
│   ├── copyfile.yml
│   ├── install.yml
│   ├── main.yml
│   └── start.yml
├── templates
│   └── nginx.conf
└── vars
└── main.yml

在/etc/ansible/roles目录中创建角色

cd /etc/ansible/roles

已安装nginx为例,创建一下的目录结构

cd /etc/ansible/roles

mkdir nginx

cd nginx

mkdir {tasks,files,templates,handlers,vars}

目录说明:

tasks 存放任务的
files 存放静态文件的,copy模块需要的文件
templates 存放动态文件 template 模块需要渲染变量的文件
handlers handlers 执行的文件
vars 存放变量的文件

cd etc/ansible/roles/nginx/tasks

依次写这些目录中的文件

安装nginx

[root@bogon tasks]# cat yum.yml
- name: yum install nginx
yum: name=nginx

创建nginx用户

[root@bogon tasks]# cat createuser.yml
- name: create{{user}}
user: name={{user}}

启动nginx

[root@bogon tasks]# cat start.yml
- name: start nginx
service: name=nginx state=started

copy nginx的配置文件

[root@bogon tasks]# cat copyfile.yml
- name: copy nginx.conf
template: src=nginx.conf dest=/etc/nginx/nginx.conf
tags: copyfile
notify: restart nginx

任务的执行顺序

[root@bogon tasks]# cat main.yml 
- import_tasks: yum.yml
- import_tasks: start.yml
- import_tasks: createuser.yml
- import_tasks: copyfile.yml

cd /etc/ansible/roles/nginx/handlers

[root@bogon handlers]# cat main.yml
- name: restart nginx
service: name=nginx state=restarted

cd /etc/ansible/roles/nginx/templates
[root@bogon templates]# ll
total 4
-rw-r--r-- 1 root root 2495 Jul 18 16:00 nginx.conf

cat nginx.conf

nginx 的进程数,cpu核数的2倍
worker_processes {{ansible_processor_vcpus*}};
# 线程数
events {
worker_connections ;
}

/etc/ansible/roles/nginx/vars

[root@bogon vars]# cat main.yml
{'user':'nginx'}

/etc/ansible/roles

[root@bogon roles]# cat nginx.yml
- hosts: web
remote_user: root
roles:
- nginx

执行剧本

ansible-playbook    nginx.yml

查找顺序

  • 先查找roles里面的目录

  • 找tasks里面的main.yml

  • 如果发现了import_tasks 根据引入的次序依次执行

  • 如果template,则区templates目录里面找文件

  • 如果发现copy,则区files目录里面找文件

  • 如果发现了notify,则去handlers里面找main.yml

  • 如果发现了变量,则去vars里面找main.yml

相互调用

- import_tasks: roles/nginx/tasks/install.yml

使用ansible roles可以在  https://galaxy.ansible.com/

这个网址上看到别人写好的ansible roels可以直接使用

ansiblle---roles的更多相关文章

  1. MongoDB的内置角色 Built-In Roles

    关于芒果的权限控制说白了就是定义 Role(角色) 来控制对数据库进行的操作(调用的方法比如查询方法find). 系统内置的Role分为 以下几大类: Database User Roles 这个是针 ...

  2. Apple Developer Program Roles Overview

    Apple Developer Program Roles Overview There are three roles that can be assigned to Apple Developer ...

  3. Show Roles Assigned to a Specific User

     Here is a query that I often use to lookup Roles assigned to a specific PeopleSoft user. At run tim ...

  4. Developers, do consider different user roles! - A bad experience with cron

    The Story: Last week, I found one of our embedded arm linux device  ran out of flash space( totally ...

  5. [Hive - LanguageManual] Create/Drop/Grant/Revoke Roles and Privileges / Show Use

    Create/Drop/Grant/Revoke Roles and Privileges Hive Default Authorization - Legacy Mode has informati ...

  6. Ansible系列(五):playbook应用和roles自动化批量安装示例

    html { font-family: sans-serif } body { margin: 0 } article,aside,details,figcaption,figure,footer,h ...

  7. IdentityServer4 指定角色授权(Authorize(Roles="admin"))

    1. 业务场景 IdentityServer4 授权配置Client中的AllowedScopes,设置的是具体的 API 站点名字,也就是使用方设置的ApiName,示例代码: //授权中心配置 n ...

  8. ansible roles

    roles 特点 目录结构清晰 重复调用相同的任务 目录结构相同 web - tasks - install.yml - copfile.yml - start.yml -  main.yml - t ...

  9. ansible基础-roles

    一 简介 注:本文demo使用ansible2.7稳定版 在我看来,role是task文件.变量文件.handlers文件的集合体,这个集合体的显著特点是:可移植性和可重复执行性. 实践中,通常我们以 ...

  10. Ansible系列之roles使用说明

    roles(角色)介绍 ansible自1.2版本开始引入的新特性,用于层次性,结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handlers等.要使用ro ...

随机推荐

  1. 微信小程序登录获取手机号

    一,发送请求携带 code 到后台换取 openid var that = this; wx.login({ success(res) { console.log(res); var code = r ...

  2. golang在linux后台执行的方法

    go build ./index.go 会生成一个index的运行文件 nohup index & 后台运行index文件 killall index 你可能还要关闭index set GOA ...

  3. Webstorm2017.3.3软件的安装使用

    下载 ▶进入jetbrains的官方网站点击download,即下载开始.官方网站链接:http://www.jetbrains.com/webstorm/ 安装 ▶双击刚下载完成的.exe文件开始进 ...

  4. 使用jMeter构造大量并发的随机HTTP请求

    在前一篇文章使用jMeter构造大量并发HTTP请求进行微服务性能测试里,我介绍了如何用jMeter构造并发HTTP请求.但是通过文中介绍的方式构造的并发请求,其请求参数都是硬编码的'Wang'. 有 ...

  5. 玩转springcloud(二):注册中心-Eureka

    一.简介 注册中心 注册中心是服务发现的核心.它保存了各个可用服务实例的网络地址(IP Address和Port).服务注册中心必须要有高可用性和实时更新功能. Netflix Eureka 就是一个 ...

  6. C和指针--动态内存分配

    1.为什么需要使用动态内存分配 数组的元素存储于内存中连续的位置上,当一个数组被声明时,它所需要的内存在编译时就被分配.当你声明数组时,必须用一个编译时常量指定数组的长度.但是,数组的长度常常在运行时 ...

  7. VMware无法连接MKS:套接字连接尝试次数太多解决

    粘贴自:https://jingyan.baidu.com/article/425e69e61eb578be15fc16ae.html VMware在开启虚拟机的时候,突然弹出[无法连接MKS:套接字 ...

  8. 2018 牛客网暑期ACM多校训练营(第一场) E Removal (DP)

    Removal 链接:https://ac.nowcoder.com/acm/contest/139/E来源:牛客网 题目描述 Bobo has a sequence of integers s1, ...

  9. vector和list插入性能对比

    int main() { clock_t t1 =clock(); vector<string> vec_Str; ;i<;i++) { vec_Str.push_back(&quo ...

  10. anguar @input绑定的属性变化

    Intercept @Input property change in Angular Bharat TiwariFollow Mar 15, 2018 this post is good for A ...