Ansible-roles学习

目录

  • 一.roles角色介绍
  • 二.示例
    • 一.安装httpd服务

一.roles角色介绍

roles能够根据层次型结构自动装载变量文件,tasks以及handlers登。要使用roles只需在playbook中使用include指令即可。roles就是通过分别将变量,文件,任务,模块以及处理器放置于单独的目录中,并可以便捷的include他们的一种机制。角色一般用于基于主机构建服务的场景中,但是也可以用于构建守护进程等场景中。

ROLES目录结构
https://img2018.cnblogs.com/blog/1210730/201906/1210730-20190604093514442-703615703.png

目录含义
roles所有脚色都必须放在roles目录下,这个目录可以自定义,默认位置/etc/ansible/roles
project具体角色项目名称,比如nginx,tomcat,php
files用来存放copy模块过scripit模块调用文件
templates用来存放jinjia2模板,template模块会自动在此目录寻找jinjia2模板文件
tasks此目录应当包含一个main.yml文件,用于定义此角色的任务列表,此文件可以使用include包含其他的位于此目录的task文件
handlers此目录应当包含一个main.yml文件,用于定义此角色中触发条件时执行的动作
vars此目录应当包含一个main.yml文件,用于定义此角色用到的变量
defaults此目录应当包含一个main.yml文件,用于为当前角色设定默认变量
meta此目录应当包含一个main.yml文件,用于定义此角色的特授及其依赖关系

二.示例

一.安装httpd服务

1.创建目录

[root@tdm1 ~]# cd /etc/ansible/roles/
# 创建需要用到的目录
[root@tdm1 roles]# mkdir -p httpd/{handlers,tasks,templates,vars}
[root@tdm1 roles]# cd httpd/
[root@tdm1 httpd]# tree .
.
├── handlers
├── tasks
├── templates
└── vars4 directories, 0 file

2.准备变量文件

[root@tdm1 httpd]# vim vars/main.yml
PORT: 8088        #指定httpd监听的端口
USERNAME: www     #指定httpd运行用户
GROUPNAME: www    #指定httpd运行组

3.配置文件模板

# copy一个本地的配置文件放在templates/下并已j2为后缀
[root@ansible httpd]# cp /etc/httpd/conf/httpd.conf templates/httpd.conf.j2# 找到一下几个参数,进行一些修改,调用上面定义的变量
[root@tdm1 httpd]# vim templates/httpd.conf.j2
Listen {{ PORT }} 
User {{ USERNAME }}
Group {{ GROUPNAME }}

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

# 创建组的task
[root@tdm1 httpd]# vim tasks/group.yml
- name: Create a Startup Groupgroup: name: www gid: 60 system: yes# 创建用户的task
[root@tdm1 httpd]# vim tasks/user.yml
- name: Create Startup Usersuser: name: www uid: 60 system: yes shell: /sbin/nologin# 安装软件的task
[root@tdm1 httpd]# vim tasks/install.yml
- name: Install Package Httpdyum: name: httpd state: installed# 配置软件的task
[root@tdm1 httpd]# vim tasks/config.yml
- name: Copy Httpd Template Filetemplate: src: httpd.conf.j2 dest: /etc/httpd/conf/httpd.confnotify: Restart Httpd# 启动软件的task
[root@tmd1 httpd]# vim tasks/start.yml
- name: Start Httpd Serviceservice: name: httpd state: started enabled: yes# 编写main.yml,将上面的这些task引入进来
[root@tdm1 httpd]# vim tasks/main.yml
- include: group.yml
- include: user.yml
- include: install.yml
- include: config.yml
- include: start.ym

5.编写handlers

[root@tdm1 httpd]# vim handlers/main.yml
# 这里的名字需要和task中的notify保持一致
- name: Restart Httpdservice: name: httpd state: restarted

6.编写yml文件调用httpd角色

[root@tdm1 httpd]# cd ..
[root@tdm1 roles]# vim httpd_roles.yml
---
- hosts: allremote_user: rootroles:- role: httpd        #指定角色名称

7.查看整个目录

[root@tdm1 roles]# tree
.
└── httpd├── handlers│   └── main.yml├── httpd_roles.yml├── tasks│   ├── config.yml│   ├── group.yml│   ├── install.yml│   ├── main.yml│   ├── start.yml│   └── user.yml├── templates│   └── httpd.conf.j2└── vars└── main.yml5 directories, 10 files

8.测试playbook语法是否正确

[root@tdm1 roles]# ll
total 4
drwxr-xr-x 6 root root 4096 Sep  6 14:13 httpd
[root@tdm1 roles]# ansible-playbook httpd/httpd_roles.yml  -CPLAY [web] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************ok: [47.93.98.117]TASK [httpd : create group] ********************************************************************************************changed: [47.93.98.117]TASK [httpd : create user] *********************************************************************************************changed: [47.93.98.117]TASK [install httpd] ***************************************************************************************************ok: [47.93.98.117]TASK [httpd : configure template file] *********************************************************************************changed: [47.93.98.117]TASK [start httpd] *****************************************************************************************************changed: [47.93.98.117]RUNNING HANDLER [restart httpd] ****************************************************************************************changed: [47.93.98.117]PLAY RECAP *************************************************************************************************************47.93.98.117               : ok=7    changed=5    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0  

9.执行剧本

[root@tdm1 httpd]# ansible-playbook httpd_roles.yml PLAY [web] *************************************************************************************************************
TASK [Gathering Facts] *************************************************************************************************ok: [47.93.98.117]TASK [httpd : create group] ********************************************************************************************ok: [47.93.98.117]TASK [httpd : create user] *********************************************************************************************ok: [47.93.98.117]TASK [install httpd] ***************************************************************************************************ok: [47.93.98.117]TASK [httpd : configure template file] *********************************************************************************changed: [47.93.98.117]TASK [start httpd] *****************************************************************************************************changed: [47.93.98.117]RUNNING HANDLER [restart httpd] ****************************************************************************************changed: [47.93.98.117]PLAY RECAP *************************************************************************************************************47.93.98.117               : ok=7    changed=3    unreachable=0    failed=0    skipped=0    rescued=0    ignored=0

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/123483.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java基础知识点汇总

一、Java基础知识点整体框架 详细知识点见链接资源,注:框架是用Xmind App完成,查看需下载。 二、基础知识各部分概况 2.1 认识Java 2.2 数据类型和变量 2.3 运算符 2.4 程序逻辑控制 2.5 方法的使用 2.6 数组的定义和使用 2.7 类和对象 2.8 …

【HTML专栏2】VSCode的使用(新建HTML文件)

本文属于HTML/CSS专栏文章,适合WEB前端开发入门学习,详细介绍HTML/CSS如果使用,如果对你有所帮助请一键三连支持,对博主系列文章感兴趣点击下方专栏了解详细。 博客主页:Duck Bro 博客主页系列专栏:HTML/CS…

ChatGPT集锦

目录 1. 一条指令让ChatGPT变的更强大2. 对ChatGPT提问时,常见的10种错误描述3. Custom instructions如何设置1. 一条指令让ChatGPT变的更强大 在使用GPT的过程中,如何让AI更清晰地了解你的需求很重要?今天分享一个指令,可以让GPT成为你的好同事,与你一起分析和解决问题,…

torch.nn中的L1Loss和MSELoss

我们打开Pytorch官网,找到torch.nn中的loss function,进去如下图所示。 L1LOSS 我们先来看看 L1LOSS 损失函数的使用。下图是官网给出的描述。 L1loss有两种方式,一种是将所有误差累加作为总损失,另一种是将所有误差累加之后求平…

2023年高教社杯全国大学生数学建模竞赛参赛事项注意

MathClub数模资源,含专属思路 资源链接:点击这里获取众多数模资料、思路精讲、论文模板latex和word、学习书籍等 2023高教社杯数学建模国赛–赛前准备 一年一度的数学建模国赛要来啦!!!小编仔细阅读了比赛官方网站上…

附录1-爬虫的一些技巧

目录 1 寻找url与显示内容的关系 2 修改请求头 3 局部刷新 4 阅读返回信息 5 多尝试页面其他的使用方式 6 尝试不同类型参数 7 表单类型的post多用data发,接口类型的post多用json发 8 消除degger 9 你在浏览器上看到的html与你下载下来的html不一…

【LeetCode-中等题】47. 全排列 II

文章目录 组合并集问题汇总:题目方法一:递归回溯去重 组合并集问题汇总: 1、子集去重版本 2、组合非去重版本 3、子集非去重版本 题目 相比较46题:不需要去重:【LeetCode-中等题】46. 全排列 需要做出的改变就是&a…

C++ continue 语句

C 中的 continue 语句有点像 break 语句。但它不是强迫终止,continue 会跳过当前循环中的代码,强迫开始下一次循环。 对于 for 循环,continue 语句会导致执行条件测试和循环增量部分。对于 while 和 do…while 循环,continue 语句…

CVE-2023-3836:大华智慧园区综合管理平台任意文件上传漏洞复现

文章目录 CVE-2023-3836:大华智慧园区综合管理平台任意文件上传漏洞复现0x01 前言0x02 漏洞描述0x03 影响范围0x04 漏洞环境0x05 漏洞复现1.访问漏洞环境2.构造POC3.复现 CVE-2023-3836:大华智慧园区综合管理平台任意文件上传漏洞复现 0x01 前言 免责声…

虚拟机的ubuntu 22.04无法联网问题解决

问题:虚拟机的ubuntu 22.04无法联网 解决: 找到一种配置的方式,使用命令:sudo dhclient -v

maven本地安装jar包install-file,解决没有pom的问题

背景: 公司因为权限问题,没有所有的代码,内部maven还在搭建,所以需要拿到同事的jar包,本地install: mvn install:install-file -DgroupIdcom..framework -DartifactIdcloud-api -Dversion1.0.0-SNAPSHOT …

Vue echarts 饼图 引导线加小圆点,文字分行展示

需求 重点代码 完整代码 initChart() {// 创建 echarts 实例。var myChartOne this.$echarts.init(this.$refs.Echart);myChartOne.setOption({tooltip: {trigger: "item",},title: {top: center,text: [{name| this.chartTitle.name },{value| this.chartTitle.…

数学建模--G(1,1)型的灰色预测模型的Python实现

目录 1.算法适用情况 2.算法推演步骤 3.算法核心代码 4.算法效果展示 1.算法适用情况 #1.灰色预测模型简介 """ 1.灰色预测是对既含有已知信息又含有不确定信息的系统进行预测,就是对在一定范围内变化的、与时间有关的灰色过程进行预测。 2.灰色预测…

学妹学Java(一)

⭐简单说两句⭐ 作者:后端小知识 CSDN个人主页:后端小知识 🔎GZH:后端小知识 🎉欢迎关注🔎点赞👍收藏⭐️留言📝 Hello,亲爱的各位友友们,好久不见&#xff0…

如何实现小程序与h5页面间的跳转

接到新需求,要在小程序页面内点击按钮实现跳转h5,一开始没接触过,还挺头疼的,但真正做起来,也就那么一回事啦,废话少说,直接上 1. 配置域名 先登录小程序开发平台,将页面需要跳转的…

使用 UPFC 计算电力系统网络潮流(Matlab代码实现)

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 ⛳️座右铭&a…

redis 配置与优化

目录 一、关系数据库和非关系型数据库 二、关系型数据库和非关系型数据库区别 三、非关系型数据库产生背景 四、redis 1、概念 2、redis的优点 3、redis为什么这么快 五、redis安装与配置 一、关系数据库和非关系型数据库 关系型数据库:关系型数据库是一个结…

美客多平台经营秘籍:为何测评补单操作是必要的?

许多经营美客多平台的商家有一种观念,他们认为美客多平台的规则与亚马逊有所区别。在美客多上,店铺比产品更重要,而且平台的竞争相对较小。因此,他们认为在美客多平台进行补单操作是不必要的。 然而,根据美客多平台的…

基于SSM的医院门诊预约挂号系统的设计与

✌全网粉丝20W,csdn特邀作者、博客专家、CSDN新星计划导师、java领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ 🍅文末获取项目下载方式🍅 一、项目背景介绍: 随着医院管理的日益复…

前端基础(Vue Router路由的使用)

前言:很多网站都有页面的跳转,那具体页面跳转是怎样实现的?今天学习前端SPA(Single page Application)单页面应用,不反复请求后端资源,而是通过路由实现页面的跳转。 目录 路由的创建 main.ts导入路由 App.vue文件 …