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…...
项目烂尾的魔咒:为什么你的物联网系统总是“上线即落后”?
在物联网行业有一个令人沮丧的“3-6-12”现象:3个月调研,6个月开发,12个月后项目烂尾或重构。 为什么投入巨资打造的智慧园区或工业互联系统,往往在验收通过的那一刻,就已经开始走向僵化?问题往往不出在硬…...
5个关键场景下如何选择DINOv2模型:从ViT-S到ViT-G的完整指南
5个关键场景下如何选择DINOv2模型:从ViT-S到ViT-G的完整指南 【免费下载链接】dinov2 PyTorch code and models for the DINOv2 self-supervised learning method. 项目地址: https://gitcode.com/GitHub_Trending/di/dinov2 DINOv2是Meta AI Research开发的…...
昇腾平台上的异构编程
昇腾平台作为国产化 AI 算力核心底座,采用CPUNPU 异构计算架构,异构编程是充分释放昇腾硬件算力、实现高性能计算与 AI 推理融合加速的关键技术。异构编程指在同一计算任务中,协同调度通用处理器(CPU)与神经网络处理器…...
从动画原理到嵌入式实现:赋予机器人生命感的设计与工程实践
1. 项目概述:当技术遇见灵魂在数字世界和物理世界的交汇处,我们总在尝试创造一些能与我们对话、甚至能触动我们内心的存在。无论是屏幕里那个让你牵挂的动画角色,还是面前这个试图与你眼神交流的服务机器人,一个核心的挑战始终横亘…...
BilibiliDown:一键下载B站音频的跨平台神器
BilibiliDown:一键下载B站音频的跨平台神器 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader 😳 项目地址: https://gitcode.com/gh_mirrors/bi/Bilibili…...
英雄联盟回放播放器终极指南:用ROFL-Player解锁你的游戏记忆
英雄联盟回放播放器终极指南:用ROFL-Player解锁你的游戏记忆 【免费下载链接】ROFL-Player (No longer supported) One stop shop utility for viewing League of Legends replays! 项目地址: https://gitcode.com/gh_mirrors/ro/ROFL-Player 还在为英雄联盟…...
3步构建企业级数据平台:从零到百万级数据管理的NocoDB实战指南
3步构建企业级数据平台:从零到百万级数据管理的NocoDB实战指南 【免费下载链接】nocodb 🔥 🔥 🔥 A Free & Self-hostable Airtable Alternative 项目地址: https://gitcode.com/GitHub_Trending/no/nocodb 在数字化转…...
PowerVR Series2NX NNA架构解析:终端AI加速器的能效与工程实践
1. 项目概述:从“看得见”到“看得懂”的芯片革命在移动设备、智能摄像头乃至汽车座舱里,我们早已习惯了人脸解锁、实时美颜、物体识别这些功能。这些功能背后,都离不开一个核心引擎:神经网络加速器。今天要聊的,就是I…...
AI提示词设计指南:从原理到实践的高效人机协作范式
1. 项目概述:一个高质量的AI提示词仓库如果你经常和ChatGPT、Midjourney这类AI工具打交道,肯定有过这样的体验:明明想让它写一份专业的商业计划书,结果它给你生成了一篇小学生作文;或者想让AI画一幅赛博朋克风格的城市…...
VR技术如何革新无障碍设计:Empath-D系统实践
1. VR技术赋能无障碍设计的创新实践作为一名长期关注人机交互技术的开发者,我亲历了VR技术从娱乐工具到专业设计辅助的转型过程。Empath-D系统的出现标志着无障碍设计进入了"共情式开发"的新阶段——开发者不再需要凭空想象用户需求,而是能真正…...
