一.初识roles

  上节中我们已经了解了playbook,详见  https://www.cnblogs.com/wangtaobiu/p/10691689.html

  当我们在配置playbook时会发现它会越来越庞大,所有的tasks,handles,templates等任务或文件都写在一个yml文件中,这样在修改中难免会浪费时间,显得缺乏条理性.而roles的出现刚好解决了这一问题.

  roles的特点 : 目录结构清晰.在使用roles的时候,我们会将不同的任务放在不同的目录下,结构一目了然,在修改的过程中也更方便寻找.

        可以相互调用.在roles中,所有的任务和文件都可以自由调用,通过import或include方法,可以将要执行的任务导入一个文件中,使roles在实现playbook功能的情况下更有条理性.下边是roles目录下安装nginx的目录结构 :

nginx/
├── files 存放静态的文件
│   └── fstab
├── handlers 存放需要触发的任务,里面必须main.yml文件
│   └── main.yml
├── tasks 存放的执行的任务 ,里面必须main.yml文件
│   ├── copyfile.yml
│   ├── install.yml
│   ├── main.yml
│   └── start.yml
├── templates 存放的模板文件
│   ├── centos6.conf
│   └── nginx.conf
└── vars 存放的是参数,里面必须main.yml文件
└── main.yml  

  从上图中可以看出handles,tasks,vars文件需要用main.yml文件来触发任务,而且针对Contos的不同版本做了相应的判断,所有任务一目了然.

二.roles入口文件设置

  当我们把roles中所有的任务都配置好以后,最后就需要在roles同级的目录下设置入口文件.入口文件的设置最好以任务名命名,方便识别.例如上边的例子中入口文件可以命名为nginx.yml,下边是文件中的内容,重点在于roles下指定nginx目录.

- hosts: web
remote_user: root
roles:
- nginx  

三.roles中任务的导入

  以下是tasks目录下的main文件 :

- import_tasks: install.yml   #下载
- import_tasks: copyfile.yml #复制文件到远程主机
- import_tasks: start.yml #启动nginx
- name: fstab
copy: dest=/tmp/wq.txt src=fstab
tags: fstab

  注意 : 因为在main文件中任务是自上而下执行的,所以在导入任务时必须按顺序进行.

四.roles的执行顺序

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

  

ansible中roles的简单使用的更多相关文章

  1. ansible中的playbook详解

    首先简单说明一下playbook,playbook是什么呢?根本上说playbook和shell脚本没有任何的区别,playbook就像shell一样,也是把一堆的命令组合起来,然后加入对应条件判断等 ...

  2. Ansible之roles模块--lnmp分布式部署

    Ansible之roles模块--lnmp分布式部署 目录 Ansible之roles模块--lnmp分布式部署 1. role模块的作用 2. roles的目录结构 3. roles内个目录含义解释 ...

  3. ansible基础-roles

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

  4. ansible中playbook使用

    palybook使用 ####yaml语法ansible中使用的yaml基础元素:变量Inventory条件测试迭代 playbook的组成结构InventoryModulesAd Hoc Comma ...

  5. ansible中的常用循环模块with_items

    ansible中的循环模块有很多,不过with_items最为常用,且较为简单,循环模块最多的功能就是将重复性的任务简单化,如下例子所示: - hosts: all remote_user: root ...

  6. ansible的安装和简单使用

    ansible是新出现的自动化运维工具,基于Python开发,集合了众多运维工具的优点,实现了批量系统配置.批量程序部署.批量运行命令等功能.ansible是基于模块工作的,本身没有批量部署的能力.真 ...

  7. Ansible的roles标准化与Jenkins持续集成(三)

    Ansible的roles标准化与Jenkins持续集成(三) 链接:https://pan.baidu.com/s/1A3Iq3gGkGS27L_Gt37_I0g 提取码:ncy2 复制这段内容后打 ...

  8. Ansible:roles初始化系统

    简介 本文介绍ansible的roles,通过roles来实现系统的初始化,其相当于将ansible的playbook拆分.本文通过Jenkins,传参,调用playbook来初始化系统. Githu ...

  9. asp.net mvc 中 一种简单的 URL 重写

    asp.net mvc 中 一种简单的 URL 重写 Intro 在项目中想增加一个公告的功能,但是又不想直接用默认带的那种路由,感觉好low逼,想弄成那种伪静态化的路由 (别问我为什么不直接静态化, ...

随机推荐

  1. [转载]oracle xml操作

    /*=====================生成\修改xml========================= */ --xmlelement多个标签层级 SELECT XMLELEMENT(&qu ...

  2. 快速创建一个SpringBoot项目并整合Mybatis

    2019-09-15 一.Maven环境搭建 1.导入jar坐标 <project xmlns="http://maven.apache.org/POM/4.0.0" xml ...

  3. Feign【@FeignClient】

    首先看一下@FeignClient注解的源码: package org.springframework.cloud.openfeign; import java.lang.annotation.Doc ...

  4. Python--一些基础内容

    1. Content-Type是什么? Content-Type描述的只是发送端;发送端既可以是服务器也可以是客户端;Content-Type代表发送端发送的实体数据的数据类型.比如:Content- ...

  5. PAT(B) 1014 福尔摩斯的约会(Java)

    题目链接:1014 福尔摩斯的约会 注意 三个字眼:"第1对","第2对","第1对",因此如果你用了循环,别忘了break,因为后面也可能 ...

  6. GBDT笔记

    GBDT笔记 GBDT是Boosting算法的一种,谈起提升算法我们熟悉的是Adaboost,它和AdaBoost算法不同: 区别如下: AdaBoost算法是利用前一轮的弱学习器的误差来更新样本权重 ...

  7. JS 04 Date_Math_String_Object

    Date <script> //1.Date对象 var d1 = new Date(); //Thu May 02 2019 14:27:19 GMT+0800 (中国标准时间) con ...

  8. luogu2657-Windy数题解--数位DP

    题目链接 https://www.luogu.org/problemnew/show/P2657 分析 第一道数位DP题,发现有点意思 DP求\([L,R]\)区间内的XXX个数,很套路地想到前缀和, ...

  9. 关于Vue中页面(父组件)下拉,页面中的子组件加载更多数据的实现方法

    一个项目中存在很多这种情况:父组件(页面)中的子组件需要做下拉加载更多的需求,但是这个下拉到底部的动作只能通过监控页面(父组件)来完成 这就需要父子组件之间的通信,代码如下: 1. 建立一个用于父子组 ...

  10. TSec《mysql client attack chain》

    从这个议题学到挺多,攻击手法的串联. 1.mysql Client Attack 这个攻击手法去年就爆出来了,本质就是mysql协议问题,在5步篡改读取客户端内容,导致任意文件读取,如下图所示. 修改 ...