ansible自动化运维(五)roles角色管理
目录
Roles角色管理
创建nginx的角色目录
定义任务配置文件:
定义jinjia2模板:
定义nginx yml文件
检查语法,执行命令
检验结果:
Roles角色管理
角色(roles)是ansible自1.2版本开始引入的新特性,用于层次性,结构化地组织playbook。
roles能够根据层次型结构自动装载变量文件、tasks以及handlers等。要使用roles只需要在playbook中使用include指令即可。简单的说,roles就是通过分别将变量、文件、任务、模块及处理器放置于单独的目录中、并可以便捷地include他们的一种机制。角色一般用于基于主机构建服务的场景中、但也可以是用于构建守护进程等场景中。
一般情况下将roles写在 /etc/ansible/roles 中,也可以写在其他任意位置(写在其他位置要自己手动建立一个roles文件夹)
这里来编译安装nginx,部署一个web页面,同时对roles角色的各个功能进行解析
创建nginx的角色目录
[root@web01 roles]# mkdir -p /etc/ansible/roles/nginx/{files,tasks,handlers,vars,templates,meta,default}
目录结构:
[root@web01 roles]# tree.└── nginx├── default├── files├── handlers├── meta├── tasks├── templates└── vars8 directories, 0 files
目录解析:
- nginx:存放nginx服务的yml文件
- default:此目录至少应该有一个名为main.yml的文件,用于设定默认变量;
- files:存储由copy或者script等模块调用的文件或者脚本;
- handlers:此目录中至少应该有一个名为main.yml的文件,用于定义各个handler;其他文件需要由main.yml进行包含调用;
- meta:此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定以及依赖关系,其他文件需要由main.yml进行包含调用;
- tasks:此目录中至少应该有一个名为main.yml的文件,用于定义各个task;其他文件需要由main.yml进行包含调用;
- templates:存储由templates模块调用的模板文件;
- vars:此目录至少应该有一个名为main,yml的文件,用于定义各个variable;其他的文件需要由main.yml进行包含调用;
整个角色的一个流程:
定义任务配置文件 --> 定义jinja2模板,生成配置文件用 --> 定义变量 --> 定义触发(通知已定义在配置文件中) --> 定义nginx的yml文件 -->
检查yml语法 --> 执行nginx.yml文件 --> 查看服务启动状态
提前准备工作:传包
[root@web01 roles]# ls nginx/files/nginx-1.24.0.tar.gz 李星云.jpg
定义任务配置文件:
[root@web01 roles]# cat nginx/tasks/main.yml- name: copy nginx packagecopy:src: files/nginx-1.24.0.tar.gzdest: /tmp/- name: tarunarchive:src: /tmp/nginx-1.24.0.tar.gzdest: /usr/local/remote_src: yes- name: install 依赖yum:name: "{{ item }}"state: presentloop: "{{ install_package }}"- name: Compile and installshell: |cd /usr/local/nginx-1.24.0./configure --prefix=/usr/local/nginxmake && make install- name: copy imagecopy:src: files/李星云.jpgdest: /usr/local/nginx/html/- name: changes web pagestemplate: src=templates/web.conf.j2 dest=/usr/local/nginx/html/index.htmlnotify: restart- name: start nginxshell: |cd /usr/local/nginx/sbin/./nginx
定义jinjia2模板:
这里这个模板是一个html文件,就是简单的web页面
想达到的效果就是,把nginx服务的html目录下的页面替换成这个模板
前面说过jinjia2模板可以是支持多种数据类型,这里直接编辑一个html页面,去替换掉nginx的web页面
[root@web01 roles]# cat nginx/templates/web.conf.j2<!DOCTYPE html><html lang="en"><head><meta charset="utf-8"><title>画江湖之不良人 - 李星云</title><style>body {margin: 0;padding: 0;background-image: url('./李星云.jpg');background-size: cover;background-repeat: no-repeat;background-attachment: fixed;color: white;}font-size: 30px;
<body><a href="./luocailian" target="_blank">学习目录</a><br/><a href="https://blog.csdn.net/LCL_18?spm=1000.2115.3001.5343" target="_blank">欢迎来到我的博客</a><div id="luo"><h1>画江湖之不良人 - 李星云</h1><p>李星云,身世神秘,身负奇学。</p><p>身世:李星云是唐昭宗李晔的第十子,唐哀帝李祚的胞弟。朱温篡位后,李晔将李星云托付给心腹大臣李焕,李焕带着李星云隐姓埋名,拜在阳叔子门下学艺。</p><p>成长经历:李星云在成长过程中结识了师妹陆林轩和好友张子凡,三人一起闯荡江湖。在江湖中,李星云逐渐揭开了自己的身世之谜,并肩负起了光复唐室的使命。</p><p>性格特点:李星云性格开朗、幽默风趣,十分宠爱自己的师妹陆林轩。他口才出众,常常用机智的语言逗得大家捧腹大笑。他为人正直,对朋友、对伴侣、对不良人、对天下苍生都十分有责任心。</p><p>武功技能:李星云的武功技能包括天罡诀、华阳针法、青莲剑歌、龙泉剑诀、易容术、气经等。</p>position: relative;left: 50px;margin-top: 20px;color: lightblue;top:100px;}#two {font-size: 30px;position: relative;left: 50px;margin-top: 20px;color: lightblue;top:100px;}</style></head>
<p>武器装备:李星云的武器装备包括长剑、龙泉剑、华阳针、唐刀等。</p><p>李星云的背景故事充满了传奇色彩,他的成长经历和性格特点也深受观众喜爱</p></div></body></html>h1 {text-align: center;margin-bottom: 200px;font-size: 48px;text-shadow: 2px 2px 4px black;float: none;}p {text-align: center;font-size: 16px;text-shadow: 2px 2px 4px black;}a {
定义变量配置文件:
[root@web01 roles]# cat nginx/vars/main.ymlinstall_package:- gcc- gcc-c++- pcre- pcre-devel- zlib- zlib-devel- make
定义触发器文件:
root@web01 roles]# cat nginx/handlers/main.yml- name: restartshell:cd /usr/local/nginx/bin./nginx -s reload
定义nginx yml文件
[root@web01 roles]# cat nginx/nginx.yml---- hosts: web02remote_user: rootroles:- nginx
检查语法,执行命令
[root@web01 roles]# ansible-playbook --syntax-check nginx/nginx.ymlplaybook: nginx/nginx.yml

最后的目录结构:
.└── nginx├── default├── files│ ├── nginx-1.24.0.tar.gz│└── 李星云.jpg├── handlers│ └── main.yml├── meta├── nginx.yml├── tasks│ └── main.yml├── templates│└── web.conf.j2└── vars└── main.yml8 directories, 7 files
[root@web01 roles]# tree
[root@web01 roles]# ls nginx/files/
nginx-1.24.0.tar.gz 李星云.jpg
检验结果:
这里注意记得关闭服务所在主机的防火墙
通过浏览器检验:
可以正常访问页面,成功

相关文章:
ansible自动化运维(五)roles角色管理
目录 Roles角色管理 创建nginx的角色目录 定义任务配置文件: 定义jinjia2模板: 定义nginx yml文件 检查语法,执行命令 检验结果: Roles角色管理 角色(roles)是ansible自1.2版本开始引入的新特性&…...
前端学习一
一 进程与线程 线程是进程执行的最小单位,进程是系统分配任务的最小单位。 一个进程可执行最少一个线程。线程分为子线程和主线程。 主线程关闭则子线程关闭。 二 浏览器进程 浏览器是多进程多线程应用。 进程包括: 浏览器进程 负责程序交互渲染…...
【OSS】php使用oss存储
阿里云oss官方文档:文档 1、前期工作 创建阿里云账号,登录创建bucket,注意修改权限,要不然可能读取不到 申请accessKeyId和accessKeySecret accessKey 2、项目中安装OSS扩展 composer require aliyuncs/oss-sdk-php3、基础使…...
UE5 C+、C++、C# 构造方法区别示例
我们对比一下UE C、C 、C#的构造方法: 1. UE4 C例子: // 声明和构造合并在一起static ConstructorHelpers::FObjectFinder<UTexture2D> CrosshairTexObj(TEXT("/Game/Path"));// 使用加载的资源UTexture2D* Texture CrosshairTexObj.…...
leetcode-146.LRU缓存(易理解)
为了实现一个满足 LRU(最近最少使用)缓存约束的数据结构,我们需要在 (O(1)) 时间复杂度内完成 get 和 put 操作。这通常可以通过结合使用哈希表和双向链表来实现: 哈希表:用于在 (O(1)) 时间复杂度内实现对缓存中元素…...
JavaSe部分总结
我们先来了解一下Java语言,JavaSE是Java编程语言的标准版,主要是来学习Java的基本语法,书写方式,以及一些简单的逻辑循环和判断,包括一些关键字,特殊类(抽象类),特殊的方法(static修饰的方法,final修饰的方法)等等,最重要的是Java语言是比较C语言和C语言是比较简单的,Java是面向…...
iPhone批量删除照片的方法
对于每一个iPhone用户来说,照片管理是一项日常而重要的任务。随着时间的积累,无数的照片快速填满了我们的存储空间,从美丽的风景到重要的家庭聚会,每一张照片都记录着我们生活中的瞬间。然而,当存储空间即将耗尽时&…...
红日靶场vulnstack 7靶机的测试报告[细节](一)
目录 一、测试环境 1、系统环境 2、注意事项 3、使用工具/软件 二、测试目的 三、操作过程 1、信息搜集 2、Redis未授权访问漏洞获取web1靶机系统权限 3、获取docker靶机系统权限 ①Laravel框架漏洞利用getshell ②Laravel主机的提权&&docker容器逃逸 提权…...
ubuntu+ros新手笔记(二):古月·ROS2入门21讲学习笔记
系统ubuntu22.04 ros2 humble 按照如下视频教程学习的:【古月居】古月ROS2入门21讲 | 带你认识一个全新的机器人操作系统 此处仅记录我报错的地方,以及相应的解决方案,没有出错的略过! 对应的古月居ROS2入门21讲源码下载地址&a…...
Harmonyos之深浅模式适配
Harmonyos之换肤功能 概述实现原理颜色适配颜色资源配置工具类编写界面代码编写适配效果 概述 深色模式(Dark Mode)又称之为暗色模式,是与日常应用使用过程中的浅色模式(Light Mode)相对应的一种UI主题。 换肤功能应…...
牛客网 SQL2查询多列
SQL2查询多列 select device_id,gender,age,university //查询哪些字段 from user_profile //从哪个表中查找 每日问题 C 中面向对象编程如何处理异常? 在C中,面向对象编程(OOP)处理异常主要通过异常处理机制来实现。C 提供了…...
Angular由一个bug说起之十二:网页页面持续占用CPU过高
随着网络日益发达,网页的内容也更加丰富,形式也更加多样化。而随之而来的性能问题也不容小觑。这篇文章我会根据我在实践中遇到的一个问题来总结,我在面对性能问题的一些解决步骤,希望能对大家有所启发。 查找问题原因 我接触的…...
【从零开始入门unity游戏开发之——C#篇05】转义字符、@处理多行文本或者不使用转义字符、随机数
文章目录 一、转义字符1、什么是转义字符?2、常见的转义字符3、总结 二、使用处理多行文本或者不使用转义字符1、多行字符串2、不使用转义字符 三、随机数1、Random.Next()生成随机整数示例:生成一个随机整数生成指定范围内的随机整数 2、Random.NextSin…...
我们来对接蓝凌OA --报文格式
题记 数智化办公专家、国家高新技术企业、知识管理国家标准制定者、信创供应商10强…等等,这些和咱们有关系吗!!不好意思,走错片场了,刚和项目经理在甲方那边吹牛B想想刚刚的大饼,看看支付宝余额ÿ…...
旅游系统旅游小程序PHP+Uniapp
旅游门票预订系统,支持景点门票、导游产品便捷预订、美食打卡、景点分享、旅游笔记分享等综合系统 更新日志 V1.3.0 1、修复富文本标签 2、新增景点入驻【高级版本】3、新增门票核销【高级版】4、新增门票端口【高级版】...
Pytest-Bdd-Playwright 系列教程(15):背景(Background)
Pytest-Bdd-Playwright 系列教程(15):背景(Background) 前言一、什么是背景(Background)二、特性文件三、测试脚本四、运行测试总结 前言 在测试的过程中,我们往往会遇到这样的问题&…...
ionic V6 安装ios所需
npm install capacitor/ios添加ios平台 ruby要求3.0以上 rvm use ruby-3.1.0 --default npx cap add ios打开xcode看看创建的项目 npx cap open ios没有capacitor指定的位置, 估计之前pod(cocoapods)安装搞得Ruby环境很乱了......cocoapods整的我麻了... App/App/capacitor…...
3d模型展示-初探
由于工作原因,近一年没怎么写代码,有朋友问你做过3D模型展示吗,之前都是做以vue为框架做定制业务,这次抽时间试试3d模型展示。 软件功能 使用ThreeJS框架实现加载GLB模型,并添加动画效果,实现3d展示模型。…...
OpenLinkSaas 2025年1月开发计划
先来看看OpenLinkSaas的大目标 在OpenLinkSaas的产品目标中,让开发人员更加方便的使用云资源是目标之一。通过各大云厂商的API,来可视化云上基础设施的数据是远远不够的。我们准备在2025年1月份增加方便管理和运营研发场景下服务器的能力。 这部分的功能…...
C# 用封装dll 调用c++ dll 使用winapi
这里用c net 封装winapi函数 pch.h // pch.h: 这是预编译标头文件。 // 下方列出的文件仅编译一次,提高了将来生成的生成性能。 // 这还将影响 IntelliSense 性能,包括代码完成和许多代码浏览功能。 // 但是,如果此处列出的文件中的任何一个…...
Docker 离线安装指南
参考文章 1、确认操作系统类型及内核版本 Docker依赖于Linux内核的一些特性,不同版本的Docker对内核版本有不同要求。例如,Docker 17.06及之后的版本通常需要Linux内核3.10及以上版本,Docker17.09及更高版本对应Linux内核4.9.x及更高版本。…...
Android Wi-Fi 连接失败日志分析
1. Android wifi 关键日志总结 (1) Wi-Fi 断开 (CTRL-EVENT-DISCONNECTED reason3) 日志相关部分: 06-05 10:48:40.987 943 943 I wpa_supplicant: wlan0: CTRL-EVENT-DISCONNECTED bssid44:9b:c1:57:a8:90 reason3 locally_generated1解析: CTR…...
内存分配函数malloc kmalloc vmalloc
内存分配函数malloc kmalloc vmalloc malloc实现步骤: 1)请求大小调整:首先,malloc 需要调整用户请求的大小,以适应内部数据结构(例如,可能需要存储额外的元数据)。通常,这包括对齐调整,确保分配的内存地址满足特定硬件要求(如对齐到8字节或16字节边界)。 2)空闲…...
进程地址空间(比特课总结)
一、进程地址空间 1. 环境变量 1 )⽤户级环境变量与系统级环境变量 全局属性:环境变量具有全局属性,会被⼦进程继承。例如当bash启动⼦进程时,环 境变量会⾃动传递给⼦进程。 本地变量限制:本地变量只在当前进程(ba…...
PHP和Node.js哪个更爽?
先说结论,rust完胜。 php:laravel,swoole,webman,最开始在苏宁的时候写了几年php,当时觉得php真的是世界上最好的语言,因为当初活在舒适圈里,不愿意跳出来,就好比当初活在…...
day52 ResNet18 CBAM
在深度学习的旅程中,我们不断探索如何提升模型的性能。今天,我将分享我在 ResNet18 模型中插入 CBAM(Convolutional Block Attention Module)模块,并采用分阶段微调策略的实践过程。通过这个过程,我不仅提升…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
工业自动化时代的精准装配革新:迁移科技3D视觉系统如何重塑机器人定位装配
AI3D视觉的工业赋能者 迁移科技成立于2017年,作为行业领先的3D工业相机及视觉系统供应商,累计完成数亿元融资。其核心技术覆盖硬件设计、算法优化及软件集成,通过稳定、易用、高回报的AI3D视觉系统,为汽车、新能源、金属制造等行…...
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别
OpenPrompt 和直接对提示词的嵌入向量进行训练有什么区别 直接训练提示词嵌入向量的核心区别 您提到的代码: prompt_embedding = initial_embedding.clone().requires_grad_(True) optimizer = torch.optim.Adam([prompt_embedding...
安宝特案例丨Vuzix AR智能眼镜集成专业软件,助力卢森堡医院药房转型,赢得辉瑞创新奖
在Vuzix M400 AR智能眼镜的助力下,卢森堡罗伯特舒曼医院(the Robert Schuman Hospitals, HRS)凭借在无菌制剂生产流程中引入增强现实技术(AR)创新项目,荣获了2024年6月7日由卢森堡医院药剂师协会࿰…...
