ansible 使用roles简单部署LAMP平台
目录
一、了解roles目录
二、基于构建LAMP平台创建roles目录
1、在192.168.115.148创建目录
2、书写php的测试页面
3、编写httpd角色的main.yml文件
4、编写mysql角色的main.yml文件
6、编写lamp的playbook
7、启动剧本
8、访问
一、了解roles目录
在Ansible中,roles是一种组织和复用任务和变量的方式。Roles是一种可重用的模块化结构,用于将相关的任务、变量和处理逻辑组合在一起,以便在不同的剧本(playbook)中重复使用。
通过使用roles,可以将复杂的任务分解成更小的、可管理的部分,并使剧本更具可读性和可维护性。Roles还可以促进代码的复用,因为可以将角色在不同的剧本中重复使用。
一个role通常由以下组成:
1. 任务(tasks):包含要执行的操作步骤。这些任务可以是与特定角色相关的任何操作,例如安装软件、配置文件、启动服务等。
2. 变量(vars):存储角色所需的变量。这些变量可以在角色的任务中使用,以根据不同的需求进行自定义。
3. 文件(files):包含角色所需的文件。这些文件可以是配置文件、脚本文件等。
4. 模板(templates):包含用于生成配置文件等的模板文件。模板文件通常包含一些可自定义的变量,以便在生成文件时根据需要进行替换。
5. 处理器(handlers):定义角色相关的处理程序,用于在特定事件发生时触发操作。例如,在配置文件更改后重新启动服务。
通过将相关的任务、变量和文件组织在一起,roles提供了一种结构化的方式来管理和组织复杂的配置和部署任务。它们使剧本更易于编写、理解和维护,并促进了在不同的剧本中重用和分享配置和部署逻辑。
roles/
├── role_name/ # role的名称
│ ├── defaults/ # 存放变量默认值的目录
│ │ └── main.yml # 变量默认值文件
│ ├── tasks/ # 存放任务文件的目录
│ │ └── main.yml # 任务文件
│ ├── templates/ # 存放模板文件的目录
│ │ └── template.j2 # 模板文件
│ ├── vars/ # 存放特定角色变量的目录
│ │ └── main.yml # 特定角色变量文件
│ ├── handlers/ # 存放处理器文件的目录
│ │ └── main.yml # 处理器文件
│ ├── files/ # 存放文件的目录
│ │ └── file.txt # 文件
│ ├── meta/ # 存放描述文件的目录
│ │ └── main.yml # 描述文件
│ └── README.md # role的说明文件
└── playbook.yml # 包含roles的Playbook文件
二、基于构建LAMP平台创建roles目录
实验环境:
192.168.115.148 : 安装ansible、部署LAMP
192.168.115.149 : 部署LAMP
192.168.115.151 : 部署LAMP
1、在192.168.115.148创建目录
cd /etc/ansible/roles/
mkdir -p {httpd,mysql,php}/{files,tasks,handlers,templates,vars,meta}
touch {httpd,mysql,php}/{tasks,handlers,vars,meta}/main.yml
tree
######################################################################
[root@localhost roles]# tree
.
├── http
│ ├── files
│ ├── handlers
│ ├── meta
│ ├── tasks
│ ├── templates
│ └── vars
├── mysql
│ ├── files
│ ├── handlers
│ ├── meta
│ ├── tasks
│ ├── templates
│ └── vars
└── php├── files├── handlers├── meta├── tasks├── templates└── vars
2、书写php的测试页面
vim /etc/index.php
<?phpphpinfo();
?>
3、编写httpd角色的main.yml文件
vim /etc/anseble/roles/http/tasks/mian/yml
---
- name: 安装httpdyum: name=httpd state=present
- name: 分发php测试页面copy: src=/index.php dest=/var/www/html/index.php
- name: 启动httpd、设为开机自启service: name=httpd state=started enabled=yesvim /etc/ansible/roles/http/hardlers/mian.yml
---
- name: restart httpdshell: systemctl restart httpd
4、编写mysql角色的main.yml文件
vim /etc/ansible/roles/mysql/tasks/main.yml
---
- name: 安装mysqlshell: yum -y install mariadb mariadb-server
- name: 启动mariadb,并设为开机自启service: name=mariadb state=started enabled=yes
5、编写php角色的main.yml文件
vim /etc/ansible/roles/php/tasks/main.yml
---
- name: 安装php及依赖包yum: name=php,php-gd,php-ldap,php-odbc,php-pear,php-xml,php-xmlrpc,php-mbstring,php-snmp,php-soap,curl,curl-devel,php-bcmath,php-mysql state=presentnotify: restart httpdvim /etc/ansible/roles/php/hardlers/mian.yml
---
- name: restart httpdshell: systemctl restart httpd
6、编写lamp的playbook
vim /etc/ansible/lamp.yml
---
- hosts: groupremote_user: rootroles:- http- mysql- php
7、启动剧本
ansible-playbook /etc/ansible/lapm.yml
执行结果


8、访问



相关文章:
ansible 使用roles简单部署LAMP平台
目录 一、了解roles目录 二、基于构建LAMP平台创建roles目录 1、在192.168.115.148创建目录 2、书写php的测试页面 3、编写httpd角色的main.yml文件 4、编写mysql角色的main.yml文件 6、编写lamp的playbook 7、启动剧本 8、访问 一、了解roles目录 在Ansible中&#…...
如何使用Web Storage对页面中数据进行监听?
当使用Web Storage存储的数据发生变化时,会触发Window对象的storage事件,我们可以监听该事件并指定事件处理函数,当其他页面中的localStorage或 sessionStorage中保存的数据发生改变时,就会执行事件处理函数。 监听storage事件的…...
GO语言网络编程(并发编程)runtime包
GO语言网络编程(并发编程)runtime包 1. runtime包 1.1.1. runtime.Gosched() 让出CPU时间片,重新等待安排任务(大概意思就是本来计划的好好的周末出去烧烤,但是你妈让你去相亲,两种情况第一就是你相亲速度非常快,见…...
MR源码解析和join案例
MR源码解析 new Job(): 读取本地文件, xml配置job.start(): 启动线程job的run():线程方法 runTasks(): 传入对应的接口,启动map或者reduceMapTask类的run(): 设置map阶段的参数,初始化任务,创建上下文对象 创建读取器LineRecordReader判断是…...
ML+LLMs:利用LLMs大语言模型赋能或者结合ML机器学习算法进行具体应用的简介、具体案例之详细攻略
ML+LLMs:利用LLMs大语言模型赋能或者结合ML机器学习算法进行具体应用的简介、具体案例之详细攻略 目录 利用LLMs赋能或者结合ML算法进行具体应用的简介...
python GIL锁
1、GIL是什么 GIL:Global Interpreter Lock又称全局解释器锁。简单来说是一个互斥锁,每个线程在执行的过程中都需要先获取GIL,作用就是限制多线程同时执行,使得在同一进程内任何时刻仅有一个线程在执行。 由于GIL的存在࿰…...
git打tag和版本控制规范
我们在开发中经常会遇到要打tag的情况,但这个tag应该如何打呢?我不知道大家平时是怎么打的,但我基本就是从1.0.0开始进行往上递增,至于如何递增,基本凭感觉。今天同事新打了一个tag进行发版,然后被架构点名…...
php版 短信跳转微信小程序
实现这功能首先,小程序端添加业务域名 php代码 <?php declare (strict_types1);namespace app\controller\Admin;use app\model\Set; use app\Request;class Admin_Url_Scheme {public function getScheme(Request $request) {$appid 小程序appid;$secret 小…...
leetcode127单词接龙刷题打卡
127. 单词接龙 字典 wordList 中从单词 beginWord 和 endWord 的 转换序列 是一个按下述规格形成的序列 beginWord -> s1 -> s2 -> ... -> sk: 每一对相邻的单词只差一个字母。对于 1 < i < k 时,每个 si 都在 wordList 中。注意&am…...
基于SSM的物流管理系统
末尾获取源码 开发语言:Java Java开发工具:JDK1.8 后端框架:SSM 前端:采用JSP技术开发 数据库:MySQL5.7和Navicat管理工具结合 服务器:Tomcat8.5 开发软件:IDEA / Eclipse 是否Maven项目&#x…...
EagleSDR USB HAT FT600
给EagleSDR做了个USB 3.0的子卡,采用FT600方案,实物如下: 用FT600DataStreamerDemoApp测试,速度如下: 由于FT600是16bit的接口,如果用FT601的32bit接口,性能应该还会有大幅提升。 测试代码很简…...
Java多线程(四)锁策略(CAS,死锁)和多线程对集合类的使用
锁策略(CAS,死锁)和多线程对集合类的使用 锁策略 1.乐观锁VS悲观锁 2.轻量级锁VS重量级锁 3.自旋锁VS挂起等待锁 4.互斥锁VS读写锁 5.可重入锁vs不可重入锁 死锁的第一种情况 死锁的第二种情况 死锁的第三种情况 CAS 1.实现原子类 …...
基于spring boot+ vue+ mysql开发的UWB室内外定位系统源码
现代制造业厂区面积大、人员数量多、物资设备不断增加,随着工业信息化技术的发展,大型制造企业中对人员、车辆、物资的管理要求越来越细致。 高精度定位管理系统使用UWB室内定位技术,通过在厂区安装定位基站,为人员或设备佩戴定位…...
第2章_瑞萨MCU零基础入门系列教程之面向过程与面向对象
本教程基于韦东山百问网出的 DShanMCU-RA6M5开发板 进行编写,需要的同学可以在这里获取: https://item.taobao.com/item.htm?id728461040949 配套资料获取:https://renesas-docs.100ask.net 瑞萨MCU零基础入门系列教程汇总: ht…...
数字图像处理:亮度对比度-几何变换-噪声处理
文章目录 数字图像增强亮度与对比度转换几何变换图像裁剪尺寸变换图像旋转 噪声处理添加噪声处理噪声 数字图像增强 亮度与对比度转换 图像变换可分为以下两种: 点算子:基于像素变换,在这一类图像变换中,仅仅根据输入像素值计算…...
maven报错:[ERROR] 不再支持源选项 7。请使用 8 或更高版本。
解决方案 pom.xml文件中增加maven编译的java.version jdk版本设置,以及maven.compiler.source 资源编译jdk版本设置和maven.compiler.target 资源构建jdk版本设置 JDK:6~8 一般都是1.6,1.7,1.8的写法。 <properties><…...
MySQL基础3-约束
MySQL基础3-约束 一. 约束概述1.1 概念1.2 目的1.3 分类 二. 约束演示三. 外键约束3.1 概念3.2 语法三. 删除/更新行为 一. 约束概述 1.1 概念 约束是作用于表中字段上的规则,用于限制存储在表中的数据 1.2 目的 保证数据库中数据的正确、有效性和完整…...
OJ练习第166题——课程表(拓扑排序问题)
课程表 力扣链接:207. 课程表 题目描述 你这个学期必须选修 numCourses 门课程,记为 0 到 numCourses - 1 。 在选修某些课程之前需要一些先修课程。 先修课程按数组 prerequisites 给出,其中 prerequisites[i] [ai, bi] ,表…...
单臂路由实现VLAN间路由
单臂路由实现VLAN间路由 单臂路由 概述拓扑图PC配置LSW2 接入层交换机LSW3 接入层交换机LSW1 汇聚层交换机R1 路由器ping 测试 单臂路由 概述 单臂路由的原理是通过一台路由器,使 VLAN 间互通数据通过路由器进行三层转发。 如果在路由器上为每个 VLAN 分配一个单独…...
【VSCode】文件模板创建及使用.md
背景 最近使用VSCode学习Vue项目比较频繁,每次创建Vue文件都要手动写重复代码,特别麻烦,就上网查找自动生成代码的说明,结果发现VSCode有代码模板,怪怪,感觉发现新大陆了(low!)。 配置 打开配置 方式一&a…...
DownKyi如何成为B站视频下载的智能管家?8K高清+批量处理全解析
DownKyi如何成为B站视频下载的智能管家?8K高清批量处理全解析 【免费下载链接】downkyi 哔哩下载姬downkyi,哔哩哔哩网站视频下载工具,支持批量下载,支持8K、HDR、杜比视界,提供工具箱(音视频提取、去水印等…...
Mod5实战:从零构建大气辐射传输模拟与辐照度计算全流程
1. 从零开始:为什么需要大气辐射传输模拟? 第一次接触大气辐射传输模拟的朋友可能会问:这玩意儿到底有什么用?简单来说,就像给地球大气层做CT扫描。我在做光伏电站选址评估时,就深刻体会到它的价值——通过…...
Cesium.js实战:用自定义Shader给无人机轨迹加上酷炫流动尾线(附完整代码)
Cesium.js实战:用自定义Shader给无人机轨迹加上酷炫流动尾线(附完整代码) 在三维地理信息可视化领域,动态轨迹的表现力直接影响数据传达效率。想象一下,当无人机飞越城市上空时,一条普通的静态线条很难直观…...
告别黑苹果配置噩梦:5大核心优势让开源工具OpCore-Simplify成为新手救星
告别黑苹果配置噩梦:5大核心优势让开源工具OpCore-Simplify成为新手救星 【免费下载链接】OpCore-Simplify A tool designed to simplify the creation of OpenCore EFI 项目地址: https://gitcode.com/GitHub_Trending/op/OpCore-Simplify 黑苹果配置一直是…...
视觉定位模型Chord实战:基于Qwen2.5-VL,快速搭建多模态目标检测服务
视觉定位模型Chord实战:基于Qwen2.5-VL,快速搭建多模态目标检测服务 1. 项目概述 视觉定位技术正在改变我们与图像交互的方式。Chord模型基于Qwen2.5-VL多模态大模型,能够理解自然语言指令并在图像中精确定位目标对象。想象一下,…...
如何用SlopeCraft实现Minecraft地图艺术创作:5个实用技巧
如何用SlopeCraft实现Minecraft地图艺术创作:5个实用技巧 【免费下载链接】SlopeCraft Map Pixel Art Generator for Minecraft 项目地址: https://gitcode.com/gh_mirrors/sl/SlopeCraft 在Minecraft的方块世界中,将现实图像转化为立体地形艺术曾…...
3个关键步骤解决INAV VTOL模式切换抖动问题
3个关键步骤解决INAV VTOL模式切换抖动问题 【免费下载链接】inav INAV: Navigation-enabled flight control software 项目地址: https://gitcode.com/gh_mirrors/in/inav 垂直起降(VTOL)无人机融合了固定翼的续航优势与多旋翼的起降灵活性&…...
白帽 SEO 与网站分析数据的关系是什么
<h3 id"seo">白帽 SEO 与网站分析数据的关系是什么</h3> <p>在当今互联网时代,搜索引擎优化(SEO)已经成为了每个网站提升流量和品牌知名度的关键因素。而在众多的SEO策略中,白帽SEO(White…...
LightGBM实战:极速梯度提升框架的多变量时序预测深度解析
LightGBM实战:极速梯度提升框架的多变量时序预测深度解析 【免费下载链接】LightGBM microsoft/LightGBM: LightGBM 是微软开发的一款梯度提升机(Gradient Boosting Machine, GBM)框架,具有高效、分布式和并行化等特点,…...
从零到一:彻底搞懂Anaconda,打造完美的Python开发环境
别再为Python环境搞得焦头烂额了,这篇教程带你一次性解决所有烦恼。 作为Python开发者,你是否曾经遇到过这样的场景:项目A需要Python 3.6和旧版本的TensorFlow,而项目B却要求Python 3.12和最新的PyTorch。如果只在系统里装一个Pyt…...
