异想天开 | 如何实现PXE可视化?批量主机PXE如何监控状态?

news2024/10/2 22:16:55

这个问题源于早几年前印象比较深刻的面试,面的岗位是UCloudCDN运维交付岗,当时面试官问我,在批量PXE的时候怎么才能快速确认是否已经PXE成功了?我当时的回答是可以看dhcp服务器分配的地址数量来确定。我已经忘记了为什么我会说出这样的答案,虽然后面通过了面试,但由于其他的原因没有选择去那边工作。最近在看PXE相关的东东,想了一个不太成熟的方案,以此来记录一下。

一、我的方案效果

  • PXE服务管理

图片

  • 主机PXE效果展示

图片

  • 主机PXE完成

图片

图片

  • 主机PXE失败

图片

二、实现原理

实现原理非常简单,只需要PXE执行前和执行后分别执行curl命令,将数据postPXEServer即可。以下是我在ks.cfg中使用的curl脚本

%pre --log=/var/log/kickstart_pre.log
export PXEServer=192.168.137.6
curl -X POST -H "Content-Type: application/json" -d "{\"PASSWORD\": \"PXEServer123\", \"HostUUID\": \"$(dmidecode -s system-uuid)\",\"HostMAC\":\"$(cat /sys/class/net/*/address | grep -v \"^00\" | head -n1)\",\"HostStatus\":\"0\",\"Message\":\"Start Install OS...\"}" http://${PXEServer}/PxeProcess/
%end
%post --log=/var/log/kickstart_post.log
export PXEServer=192.168.137.6
curl -X POST -H "Content-Type: application/json" -d "{\"PASSWORD\": \"PXEServer123\", \"HostUUID\": \"$(dmidecode -s system-uuid)\",\"HostMAC\":\"$(cat /sys/class/net/*/address | grep -v \"^00\" | head -n1)\",\"HostStatus\":\"100\",\"Message\":\"Install OS Complete\"}" http://${PXEServer}/PxeProcess/
%end

这里可以自定义,比如在安装比较复杂的场景,安装完HostOS后要需要执行脚本去安装第三方包、修改配置等,可以在脚本上去执行curl命令,对不同步骤安装成功或失败做定义。

三、使用到的东东

  • 后端:python3 + django4 + 原生http.server(用做repo源)

  • 前端:jQuery + bootstrap v5 + bootstrap-table (不懂前端,90%的时间都消耗在这)

  • PXE:iPXE(兼容性比PXE强)+ dnsmasq(实现dhcp+tftp)+ ks.cfg + 操作系统ISO

四、如何使用
1、修改settings配置文件

# DHCP 地址池
DHCPCONFIG = {
    'Start_IP':'192.168.137.100',
    'End_IP': '192.168.137.200',
    'Gateway': '192.168.137.1',
    'PxeServerIP':'192.168.137.6',
    'DNSServer':'8.8.8.8,114.114.114.114', # 可以填写多个,使用,分割
}

PXESERVERCONFIG = {
    'PXEPassword' : 'PXEServer123', # 客户端curl post的时候需要带上密码
    'REPOPort': 8002, # 软件源的端口,要和ks.cfg中保持一致

2、安装dnsmasq和django

# Centos or redhat
yum install dnsmasq
# ubuntu or debian
apt-get install dnsmasq
# django
pip3 install django==4.2.1

3、挂载ISO

mount /dev/sr0 pxefile/ISO

4、修改pxefile/ipxe/menu.ipxe文件

#!ipxe
initrd http://${next-server}:8002/ISO/isolinux/initrd.img
kernel http://${next-server}:8002/ISO/isolinux/vmlinuz \
    initrd=initrd.img \
    inst.ks=http://${next-server}:8002/KS/ks.cfg \
    inst.repo=http://${next-server}:8002/ISO/ \
    root=live:http://${next-server}:8002/ISO/LiveOS/squashfs.img \
    ro rd.AUTO=1 rd_NO_LUKS LANG=en_US.UTF-8 SYSFONT=latarcyrheb-sun16 \
    crashkernel=auto KEYBOARDTYPE=pc KEYTABLE=us
boot

8002为REPOPort端口
initrd.img和vmlinuz路径要修改为ISO里面的路径

5、修改ks.cfg,将其上传到pxefile/KS目录下中
6、运行项目

python3 manager.py runserver 0:80

PS:本文只是记录个思路,有解但可能不是最优解~
我是运维少年,如果文章对您有帮助,欢迎关注我的同名公众号~

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Anaconda安装教程及多次安装失败原因

Anaconda下载网址 本教程包含两部分:安装教程和多次安装Anaconda导致的失败原因分析 Anaconda安装包官网下载链接 ![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/b5be0deb0aef4a81a594df79ddc1cc96.png#pic_center 安装 按以下步骤安装 红色波浪…

canvas绘制矩形和线

实现代码&#xff1a; <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><meta name"viewport" content"widthdev…

小马识途营销顾问谈如何做好网络口碑营销?

俗话说酒香不怕巷子深&#xff0c;酒香自然有一定的优势&#xff0c;但小马识途营销顾问认为&#xff0c;面对众多的产品&#xff0c;稀有性并不那么容易&#xff0c;酒香也怕巷子深&#xff0c;赢得自己的品牌口碑&#xff0c;获取客户的信任度。才能让企业在市场竞争中长期立…

codeforces E - Good Triples

分析 易得总和总是大于等于每一位之和。如果左边的每一位之和有进位那么对于两边总和的贡献不影响&#xff0c;对于左边的位之和不影响&#xff0c;对于右边的位之和有影响。有进位相当于左边位之和加 10 10 10 &#xff0c;右边位之和加 1 1 1 。两边贡献不等&#xff0c;所…

决战排序之巅(一)

决战排序之巅 插入排序直接插入排序 void InsertSort(int* arr, int n)希尔排序 void ShellSort(int* arr, int n)测试插入排序测试函数 void verify(int* arr, int n)测试 InsertSort测试 ShellSort测试速度 InsertSort & ShellSort 选择排序直接选择排序 void SelectSort…

springboot3.0更新后,idea创建springboot2.x项目

springboot3.0更新后&#xff0c;idea创建springboot2.x项目 点击以下红色框中的按钮 出现了如下图所示&#xff1a; 到这里我们发现没有jdk8的版本&#xff0c;不要慌&#xff0c;我们可以先在这里选择21&#xff0c;然后进入到真正的项目中手动去修改这个jdk的版本&#xff0…

web:[GXYCTF2019]BabyUpload(文件上传、一句话木马、文件过滤)

题目 页面显示为文件上传 随便上传一个文件看看 上传一个文本文件显示 上传了一个图片显示 上传包含一句话木马的图片 上传了一个包含php一句话木马的文件&#xff0c;显示如上 换一个写法 上传成功 尝试上传.htaccess&#xff0c;上传失败&#xff0c;用抓包修改文件后缀 …

远程服务器——如何在Conda中安装R环境

目录 1. R的安装2. VScode 配置参考文献 1. R的安装 推荐使用anaconda或者miniconda&#xff0c;创建虚拟环R_env境然后安装R&#xff1b; 使用conda search r-base查看可下载的R的版本&#xff1b;R版本比较低&#xff0c;一般可以先增加源&#xff1a; % 增加源 conda con…

解决idea 通过build project 手动触发热部署失败

在debug运行项目的过程中&#xff0c;并且保证&#xff08;不添加方法&#xff0c;不修改方法名&#xff09;一定的规则的情况下&#xff0c;可以通过build project 来手动热部署项目&#xff0c;也就是会交换class文件与resouces文件。 设置项 Edit Configurations Modify Op…

保姆级 | XSS Platform环境搭建

0x00 前言 XSS Platform 平台主要是用作验证跨站脚本攻击。该平台可以部署在本地或服务器环境中。我们可以使用 XSS Platfrom 平台搭建、学习或验证各种类型的 XSS 漏洞。 0x01 环境说明 HECS(云耀云服务器)xss platformCentOS 8.0Nginx 1.24.0MySQL 5.6.51Pure-Ftpd 1.0.49ph…

TCP通讯

TCP通信 TCP通信方式呢 主要的通讯方式是一对一的通讯方式&#xff0c;也有着优点和缺点 它的优点对比于UDP来说就是更可靠 因为它的通讯方式是需要先发送消息 看看客户端是否能够接收到消息 如果没有回复消息的话 服务端 就不会发出文件 等待客户端回复消息&#xff0c;这…

听GPT 讲Rust源代码--src/tools(8)

File: rust/src/tools/rust-analyzer/crates/ide-assists/src/handlers/add_missing_match_arms.rs 在Rust源代码中&#xff0c;rust-analyzer是一个Rust编程语言的语言服务器。它提供了代码补全、代码重构和代码导航等功能来帮助开发者提高编码效率。 在rust-analyzer的代码目…

深度解析HarmonyOS开发-活动召集令元服务【鸿蒙北向应用开发实战】

目录 一&#xff0e;元服务和ArkTS语言简介1.1 学习元服务1.2 元服务带来的变革1.3 元服务全场景流量入口1.4 ArkTS学习1.5 ArkTS特点 二&#xff0e;DevEco Studio开发工具2.1 DevEco Studio学习2.2 DevEco Studio的主要特性2.3 端云一体化开发2.3.1端云一体化开发特点 2.4 低…

华为OD机试 - 攀登者2(Java JS Python C)

题目描述 攀登者喜欢寻找各种地图,并且尝试攀登到最高的山峰。 地图表示为一维数组,数组的索引代表水平位置,数组的元素代表相对海拔高度。其中数组元素0代表地面。 例如:[0,1,2,4,3,1,0,0,1,2,3,1,2,1,0],代表如下图所示的地图,地图中有两个山脉位置分别为 1,2,3,4,5…

如何在Spring Boot中集成RabbitMQ

如何在Spring Boot中集成RabbitMQ 在现代微服务架构中&#xff0c;消息队列&#xff08;如RabbitMQ&#xff09;扮演了关键的角色&#xff0c;它不仅能够提供高效的消息传递机制&#xff0c;还能解耦服务间的通信。本文将介绍如何在Spring Boot项目中集成RabbitMQ&#xff0c;…

项目架构-六边形架构的概述和实现

使用传统的分层架构&#xff0c;我们的所有依赖项都指向一个方向&#xff0c;上面的每一层都依赖于下面的层。传输层将依赖于交互器&#xff0c;交互器将依赖于持久层。 在六边形架构中&#xff0c;所有依赖项都指向内部——我们的核心业务逻辑对传输层或数据源一无所知。尽管如…

【推荐系统】了解推荐系统的生态(重点:推荐算法的主要分类)

【大家好&#xff0c;我是爱干饭的猿&#xff0c;本文重点介绍推荐系统的关键元素和思维模式、推荐算法的主要分类、推荐系统常见的问题、推荐系统效果评测。 后续会继续分享其他重要知识点总结&#xff0c;如果喜欢这篇文章&#xff0c;点个赞&#x1f44d;&#xff0c;关注一…

【webpack】应用篇

基础应用 代码分离常用的代码分离方法方法一&#xff1a;配置入口节点方法二&#xff1a;防止重复方法三&#xff1a;动态导入 缓存原因解决思路 缓存第三方库原因解决思路 将所有js文件单独存放文件夹拆分开发环境和生产环境配置公共路径环境变量和区分环境代码压缩 拆分配置文…

2023五岳杯量子计算挑战赛数学建模思路+代码+模型+论文

目录 计算力网络&#xff08;CPN&#xff09;是一种新型的信息基础设施&#xff0c;完整论文代码见文末 问题描述 2.1 问题1 2.2 问题2 2.3 问题3 问题1的解答过程&#xff1a; 问题3的解答过程&#xff1a; 决策优化应用场景&#xff1a;人工智能模型超参数调优 背景信…

HarmonyOS系统架构及项目结构浅析

语雀知识库地址&#xff1a;语雀HarmonyOS知识库 飞书知识库地址&#xff1a;飞书HarmonyOS知识库 基本概念 UI框架 HarmonyOS提供了一套UI开发框架&#xff0c;即方舟开发框架&#xff08;ArkUI框架&#xff09;。方舟开发框架可为开发者提供应用UI开发所必需的能力&#xf…