Ansible role
一、Roles概述
(1)Roles简介
- Roles又称为角色,playbook被称为剧本。Roles角色是自1.2版本之后引入的新特性,用于层次性、结构化的组织剧本。在ansible中,roles是playbooks的一部分。playbooks模块化之后,成为roles的组织结构,易读,代码可重用,层次清晰。
- 简单的说,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。
- 角色一般用于基于主机构建服务的场景中、但也可以是用于构建守护进程等场景中,主要是使用在代码复用度较高的场景下
- 以特定的层级目录结构进行组织的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相关推荐
- 基于ansible Role实现批量部署lamp平台
一.ansible Role介绍 # ansilbe自1.2版本引入的新特性,用于层次性.结构化地组织playbook. # roles能够根据层次型结构自动装载变量文件.tasks以及handler ...
- Ansible Role详解
Ansible Role 详解 Roles介绍 ansible自1.2版本引入的新特性,用于层次性.结构化地组织playbook.roles能够根据层次型结构自动装载变量文件.tasks以及handl ...
- 基于ansible role实现LAMP平台批量部署 - 推酷
基于ansible role实现LAMP平台批量部署 - 推酷 基于ansible role实现LAMP平台批量部署 - 推酷 posted on 2016-04-07 17:17 lexus 阅读( ...
- ansible role中常代码块
https://www.yuque.com/docs/share/1ba5577f-8902-4381-a6a9-2828f160fa80 1. 查看服务是否是运行状态 - name: Check d ...
- ansible使用教程(4W字长文,保姆级别教程,建议收藏)
目录 一.介绍 1.Ansible发展史 2.特性 3.架构 4.ansible的作用以及工作结构 5.ansible主要组成部分 二.安装 1.rpm包安装: EPEL源 2.编译安装: 3.Git ...
- Ansible:Ansibl项目生产环境快速布局
Tips:与前文 <进击的 Ansible(一):Ansible 快速入门> 一样,本文使用的 Ansible 版本 2.5.4,项目演示环境 MacOS.由于 Ansible 项目开发活 ...
- DevOps—持续部署Ansible(二)
目录 介绍 安装 默认配置文件结构 Ansible服务配置 Inventory 介绍 Inventory 参数 Inventory配置案例 Ansible常用模块 Ansible执行方式 执行ad-h ...
- html5之role作用
role属性作用是告诉Accessibility类应用(比如屏幕朗读程序,为盲人提供的访问网络的便利程序),这个元素所扮演的角色,主要是供残疾人使用.使用role可以增强文本的可读性和语义化. 在ht ...
- Ansible配置文件ansible.cfg详解
Ansible是一个系列文章,我会尽量以通俗易懂.诙谐幽默的总结方式给大家呈现这些枯燥的知识点,让学习变的有趣一些. 前言 此时外面小雨淅淅沥沥的下着,周末,慵懒的周末,无聊到极点才打开电脑,回头一看 ...
最新文章
- python与MySQL交互
- 一个Win32 API实例类(代码收集)
- BZOJ4044 Luogu P4762 [CERC2014]Virus Synthesis (回文自动机、DP)
- Playfab开发(一)如何调用PlayFab接口
- jquery选择器《-》
- 使用缓冲字节流:BufferedInputStream与BufferedOutputStream读写数据
- 拉勾发布互联网社畜输入法报告:市场人每日打字7300个
- JDBC操作(基础篇)
- 图形化服务端svn(win 10)
- 【游戏】基于matlab GUI万年历【含Matlab源码 257期】
- 【答题助手】只用2秒!搞定百万英雄 芝士超人 冲顶大会
- 如何搭建清晰易懂的数据看板?
- ecshop模板支持php,ecshop模板支持php数据运算的代码实例
- Android 仿2016版京东筛选
- IC授权卡和复制卡的区别_信用卡小知识【芯片卡磁条卡的区别】
- java中获取一个集合(Set)的子集的方法
- Suzy找到实习了吗 Day 1 | 704. 二分查找、27. 移除元素
- table隐藏列与colgroup标签
- 微信小程序-入门到入土-01
- 十一、opencv-python图像处理顶级操作(3)——SIFT/SURF算法