当前位置: 首页 > news >正文

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

目录解析:

  1. nginx:存放nginx服务的yml文件
  2. default:此目录至少应该有一个名为main.yml的文件,用于设定默认变量;

  1. files:存储由copy或者script等模块调用的文件或者脚本;
  2. handlers:此目录中至少应该有一个名为main.yml的文件,用于定义各个handler;其他文件需要由main.yml进行包含调用;
  3. meta:此目录中至少应该有一个名为main.yml的文件,定义当前角色的特殊设定以及依赖关系,其他文件需要由main.yml进行包含调用;
  4. tasks:此目录中至少应该有一个名为main.yml的文件,用于定义各个task;其他文件需要由main.yml进行包含调用;
  5. templates:存储由templates模块调用的模板文件;
  6. 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

检验结果:

这里注意记得关闭服务所在主机的防火墙

通过浏览器检验:

可以正常访问页面,成功


http://www.mrgr.cn/news/80474.html

相关文章:

  • YOLOv8目标检测(四)_图片推理
  • 【JVM】JVM基础教程(四)
  • ansible自动化运维(四)jinjia2模板
  • LearnOpenGL学习(高级OpenGL -> 高级GLSL,几何着色器)
  • 12.11数据结构-图
  • ansible 自动化运维工具(三)playbook剧本
  • Web身份认证 --- Session和JWT Token
  • uniapp使用百度地图配置了key,但是显示Map key not configured
  • 【第三节】Git 基本操作指南
  • 微信小程序:实现节点进度条的效果;正在完成的节点有动态循环效果;横向,纵向排列
  • 【数据结构——内排序】二路归并排序(头歌实践教学平台习题)【合集】
  • 概率论得学习和整理24:EXCEL的各种图形,统计图形
  • 【NLP】序列到序列(seq2seq)建模工具fairseq使用详解
  • js 函数定义域
  • js 值传递与引用传递
  • OpenCV圆形标定板检测算法findGrid原理详解
  • 代码随想录算法训练营第四十八/九天 | 图 | 深度搜索 | 广度搜索
  • 试题转excel;word转excel;大风车excel
  • DockerUI info存在未授权访问漏洞
  • HB1910数字IP程控交换机generate.php存在RCE漏洞