一、Roles概述

(1)Roles简介

  1. Roles又称为角色,playbook被称为剧本。Roles角色是自1.2版本之后引入的新特性,用于层次性、结构化的组织剧本。在ansible中,roles是playbooks的一部分。playbooks模块化之后,成为roles的组织结构,易读,代码可重用,层次清晰。
  2. 简单的说,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。
  3. 角色一般用于基于主机构建服务的场景中、但也可以是用于构建守护进程等场景中,主要是使用在代码复用度较高的场景下
  4. 以特定的层级目录结构进行组织的tasks、variables、handlers、templates、files等;

(2)Roles目录结构

各目录的作用:

  • roles: 所有的角色必须放到roles目录下,这个目录可以自定义,默认的位置就在/etc/ansible/roles,并且和剧本是同级目录
  • project: 具体的角色项目命令,比如nginx、tomcat、php
  • files #角色名称,用来存放配置文件或者源代码包的
  • handlers #存放静态文件,此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作,可以不用写
  • tasks #具体任务,此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用
  • templates #模板文件,用来存放配置文件,跟files目录不同的是,这里的配置文件可以调用变量
  • vars #存放变量, 此目录应当包含一个main.yml文件,用于定义此角色用到的变量

role执行顺序:pre_tasks > role > tasks > post_tasks

二、使用Roles

通过roles安装配置nginx服务

(1)创建目录

[root@ansible1 ~]# mkdir /roles

[root@ansible1 roles]# mkdir nginx/   角色叫什么就创建什么(我这里叫nginx)

在nginx目录下,就是分开的那些功能,每个功能一个目录,文件在哪创建一个目录,处理器在哪就创建一个目录。目录创建好,还有一个site.yaml的文件,这个文件名字可以随意写。

[root@ansible1 nginx]# mkdir files handlers tasks templates vars

[root@ansible1 roles]# touch site.yaml       最终执行的东西,最后写

[root@ansible1 ~]# tree /roles/   查看目录树

(2)定义任务

任务剧本编写,创建用户、组、安装软件、配置、启动等

[root@ansible1 nginx]# vim tasks/main.yaml

---     在这个位置可以不写
- name: install nginx package    名字的命名相当于描述,很长
  yum: name={{ item }} state=latest   item是一个变量 安装一个  latest/installed/present,latest直接安装最新版   删除removed/absent
  with_items:        当有需要重复性执行的任务时,可以使用迭代机制。按照从上到下的顺序依次执行,当把值执行完了,任务就完了。先安装epel,再安装nginx
    - epel-release    源的名字  
    - nginx
- name: copy nginx.conf template    名字随便写,
  template: src=nginx.conf.j2 dest=/etc/nginx/nginx.conf   调用模板template,拷贝nginx配置文件的模板,不是拷贝配置文件,是拷贝模板文件
  notify: restart nginx   调用一个处理器,这个名字要和处理器name保持一致
- name: copy index.html     
  copy: src=index.html dest=/usr/share/nginx/html/index.html  拷贝它的主页文件
- name: make sure 
  service: name=nginx state=started   启动服务

【注意】epel源,如果最后下载不了,z'j

(3)定义处理器

因为刚才在编写配置文件的剧本时添加了触发,所以需要写触发相应的动作

[root@ansible1 nginx]# vim handlers/main.yaml

---
- name: restart nginx   这个名字要和 notify保持一致
  service: name=nginx state=restarted

(4)定义变量的目录

[root@ansible1 nginx]# vim vars/main.yaml  变量文件准备

worker_connections: 10240   我只定义了一个变量,就算是100个也是这样,一行一个。

在模板文件用,把它的连接数改掉,就改成这个变量存储的值。我现在只改了一个,将来可能你去修改可能要改,发布网站的目录,日志文件的路径,keepalived,tomcat的值,但是修改之前,在模板文件要把它定义成变量。

(5)配置模板文件

准备nginx.conf.j2 

我们会把它放在templates里,模板文件可以手动写,但一般不会手动写,它就是在原来nginx配置文件的基础上做了修改。直接拷贝一个nginx的配置文件。

[root@ansible1 templates]# cp /etc/nginx/nginx.conf nginx.conf.j2 
[root@ansible1 templates]# vim nginx.conf.j2

ansible_processor_cores  用这个变量,这个没有定义,是从 facts,setup模块会获取对面机器的基本信息,基本信息里就有这么一个变量,这个变量的值是预定义变量,就已经定义好了,facts组件自动获取的变量。

worker_connections  调用变量,10240

(6)编写主的nginx的角色文件,调用nginx角色

[root@ansible1 roles]# vim site.yaml  创建剧本,就是执行程序的入口。

---
- hosts: 192.168.22.172
  roles:           (要是有多个roles,就接着往下写)
  - nginx

(7)创建主页文件

[root@ansible1 files]# vim index.html 

三、执行

(1)监测剧本是否有问题

[root@ansible1 roles]# ansible-playbook -C site.yaml    -C测试运行,但不会产生运行结果

(2) 执行剧本

[root@ansible1 roles]# ansible-playbook site.yaml

(3)验证

人工检查一遍,看看nginx,它应该是启动状态。访问一下没问题,

vim /etc/nginx/nginx.conf  看模板有没有生效,之前定义了10240

Ansible role相关推荐

  1. 基于ansible Role实现批量部署lamp平台

    一.ansible Role介绍 # ansilbe自1.2版本引入的新特性,用于层次性.结构化地组织playbook. # roles能够根据层次型结构自动装载变量文件.tasks以及handler ...

  2. Ansible Role详解

    Ansible Role 详解 Roles介绍 ansible自1.2版本引入的新特性,用于层次性.结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handl ...

  3. 基于ansible role实现LAMP平台批量部署 - 推酷

    基于ansible role实现LAMP平台批量部署 - 推酷 基于ansible role实现LAMP平台批量部署 - 推酷 posted on 2016-04-07 17:17 lexus 阅读( ...

  4. ansible role中常代码块

    https://www.yuque.com/docs/share/1ba5577f-8902-4381-a6a9-2828f160fa80 1. 查看服务是否是运行状态 - name: Check d ...

  5. ansible使用教程(4W字长文,保姆级别教程,建议收藏)

    目录 一.介绍 1.Ansible发展史 2.特性 3.架构 4.ansible的作用以及工作结构 5.ansible主要组成部分 二.安装 1.rpm包安装: EPEL源 2.编译安装: 3.Git ...

  6. Ansible:Ansibl项目生产环境快速布局

    Tips:与前文 <进击的 Ansible(一):Ansible 快速入门> 一样,本文使用的 Ansible 版本 2.5.4,项目演示环境 MacOS.由于 Ansible 项目开发活 ...

  7. DevOps—持续部署Ansible(二)

    目录 介绍 安装 默认配置文件结构 Ansible服务配置 Inventory 介绍 Inventory 参数 Inventory配置案例 Ansible常用模块 Ansible执行方式 执行ad-h ...

  8. html5之role作用

    role属性作用是告诉Accessibility类应用(比如屏幕朗读程序,为盲人提供的访问网络的便利程序),这个元素所扮演的角色,主要是供残疾人使用.使用role可以增强文本的可读性和语义化. 在ht ...

  9. Ansible配置文件ansible.cfg详解

    Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. 前言 此时外面小雨淅淅沥沥的下着,周末,慵懒的周末,无聊到极点才打开电脑,回头一看 ...

最新文章

  1. python与MySQL交互
  2. 一个Win32 API实例类(代码收集)
  3. BZOJ4044 Luogu P4762 [CERC2014]Virus Synthesis (回文自动机、DP)
  4. Playfab开发(一)如何调用PlayFab接口
  5. jquery选择器《-》
  6. 使用缓冲字节流:BufferedInputStream与BufferedOutputStream读写数据
  7. 拉勾发布互联网社畜输入法报告:市场人每日打字7300个
  8. JDBC操作(基础篇)
  9. 图形化服务端svn(win 10)
  10. 【游戏】基于matlab GUI万年历【含Matlab源码 257期】
  11. 【答题助手】只用2秒!搞定百万英雄 芝士超人 冲顶大会
  12. 如何搭建清晰易懂的数据看板?
  13. ecshop模板支持php,ecshop模板支持php数据运算的代码实例
  14. Android 仿2016版京东筛选
  15. IC授权卡和复制卡的区别_信用卡小知识【芯片卡磁条卡的区别】
  16. java中获取一个集合(Set)的子集的方法
  17. Suzy找到实习了吗 Day 1 | 704. 二分查找、27. 移除元素
  18. table隐藏列与colgroup标签
  19. 微信小程序-入门到入土-01
  20. 十一、opencv-python图像处理顶级操作(3)——SIFT/SURF算法

热门文章

  1. Ubuntu 手机开发培训准备
  2. android移动体感 pc,android pc模拟器推荐 腾讯手游助手
  3. x264和fdk-aac的编译和FFmpeg的链接
  4. 在南京怎么购买退房的资格
  5. Android OTA 相关工具(四) 查看 payload 文件信息
  6. 2021年安全员-C证(陕西省)找解析及安全员-C证(陕西省)考试总结
  7. Postman用JS正则截取字符串方法
  8. 汽车电子学习笔记---RZ、NRZ、NRZ1、曼彻斯特编码
  9. 与小我11岁的人一次PK
  10. 裸辞8个月后入职跨境电商