第八单元 通过PXE实现无人值守批量部署服务器
背景:
- 在云数据中心,一次几十台甚至几百台服务器上线,系统安装将变得非常麻烦,系统安装好了,还会涉及很多配置,工作量非常大。
- 很多虚拟化平台如VMware,FusionComputs等安装一般都通过ISO逐台安装,或者通过厂商工具安装,比较麻烦。
什么是PXE
Pre-Boot Execution Environment
PXE通过网卡引导技术需要如下条件:
- BIOS支持
- 网卡支持
- 需要在BIOS中开启这个开关,服务器BMC界面打开100%支持
- 部署一台服务器,在服务器上安装DHCP+TFTP
PXE流程操作步骤
第一步:客户端启动从网卡启动,所以需要DHCP和TFTP或HTTP服务
第二步:安装syslinux将/usr/share/syslinux/pxelinux.0拷贝到/var/lib/tftpboot目录下
将/usr/share/syslinux/reboot.c32也拷贝到/var/lib/tftpboot目录下,重启文件
pxelinux.0文件作用:
从DHCP服务器获取IP地址等信息包括tftp server地址以及网络引导程序pxelinux.0
通过网卡读取到tftp server(/var/lib/tftpboot)上的pxelinux.0,读取到内存中,在内存中执行引导程序
第三步:读取引导程序配置文件(/var/lib/tftpboot/pxelinux.cfg/default),default文件是将光盘文件/media/isolinux下文件isolinux.cfg拷贝到/var/lib/tftpboot/pxelinux.cfg/default
要点:需要在/var/lib/tftpboot/目录下创建pxelinux.cfg目录,并将/media/isolinux目录下文件isolinux.cfg拷贝到pxelinux.cfg目录下,并重命名为default。
第四步:读取default中内容,default引导启动还需要其他配置文件,需要将/media/isolinux/*拷贝到/var/lib/tftpboot目录下
要点:cp -ar /media/isolinux/* /var/lib/tftpboot
第五步:文件vmlinux内核/initrd.img驱动程序(一定要匹配os),这两个文件一般可以在/media/images/pxeboot目录下;安装不同的系统就需要不同的内核和驱动程序
如上可以在/var/lib/tftpboot目录下创建不同系统的的内核文件夹,比如centos/ubuntu等,之后在修改默认配置文件/var/lib/tftpboot/pxelinux.cfg/default,查看如下例子
第六步:安装system-config-kickstart实现无人值守,yum -y install system-config-kickstart,创建ks文件
pxelinux.0
- 网络引导程序
- pxelinux.0由syslinux包提供
- 不依赖于安装的操作系统
- 在ftfpd服务中查找pxeliux.cfg/filename文件,此文件作用
安装DHCP和TFTP服务
- 在DHCP服务器上挂载光盘,并配置yum源仓库,内容如下:
1 # mount -o /dev/cdrom /media 2 # vim /etc/yum.repos.d/dvd.repo
[development]
name=rhel7
baseurl=file:///media
enabled=1
gpgcheck=0
- 安装服务
1 # yum -y install dhcp tftp-server
- 调整dhcp配置,默认dhcp会提供一个配置模版,可以将配置模版拷贝到/etc/dhcp目录下,将原有的dhcpd.conf进行覆盖。
1 # cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
- 查看配置并进行修改
1 subnet 10.5.5.0 netmask 255.255.255.224 { #子网地址 2 range 10.5.5.26 10.5.5.30; #dhcp地址范围 3 option domain-name-servers ns1.internal.example.org; #dns服务器地址 4 option domain-name "internal.example.org"; #配置域名后缀 5 option routers 10.5.5.1; #网关地址 6 option broadcast-address 10.5.5.31; #广播地址 7 default-lease-time 600; #dhcp地址租约期,默认时间 8 max-lease-time 7200; #dhcp地址租约期,最大使用时间 9 }
并在dcpu全局设置里配置增加如下两行
next-server 192.168.6.99; #指定tftp server的地址
filename "pxelinux.0"; #网络引导程序
- 查看pxelinux文件是否存在
1 # locate pxelinux.0
- 如果查不到文件,想知道文件是由那个包提供的,可以使用如下命令;
- 发现缺少syslinux包,进行yum安装即可
1 # yum -y install syslinux
1 # yum provides "*/pxelinux.0" 2 已加载插件:fastestmirror 3 Loading mirror speeds from cached hostfile 4 * base: mirrors.bfsu.edu.cn 5 * extras: mirrors.huaweicloud.com 6 * updates: mirrors.huaweicloud.com 7 base/7/x86_64/filelists_db | 7.2 MB 00:00:00 8 development/filelists_db | 305 kB 00:00:00 9 extras/7/x86_64/filelists_db | 277 kB 00:00:00 10 updates/7/x86_64/filelists_db | 9.5 MB 00:00:00 11 syslinux-4.05-15.el7.x86_64 : Simple kernel loader which boots from a FAT filesystem 12 源 :base 13 匹配来源: 14 文件名 :/usr/share/syslinux/pxelinux.0 15 16 17 18 syslinux-tftpboot-4.05-15.el7.noarch : SYSLINUX modules in /var/lib/tftpboot, available for network booting 19 源 :base 20 匹配来源: 21 文件名 :/var/lib/tftpboot/pxelinux.0
- 不要忘记关闭firewalld和selinux
- 修改tftp配置文件,vim /etc/xinetd.d/tftp
1 service tftp 2 { 3 socket_type = dgram 4 protocol = udp 5 wait = yes 6 user = root 7 server = /usr/sbin/in.tftpd 8 server_args = -s /var/lib/tftpboot 9 disable = no #将yes改成no 10 per_source = 11 11 cps = 100 2 12 flags = IPv4 13 }
- 之后对tftp重启,systemctl restart xinetd.service
安装system-config-kickstart实现无人值守安装;
第一步:执行system-config-kickstart命令,会出现如下界面;红框内容必须要勾上;
第二步:选择全新安装,之后可以在ftp服务器安装http服务,之后讲光盘挂载到/var/www/html/pub目录下,pub目录是新创建的。就可以进行如下配置;
第三步
第四步
第五步
第六步,防火墙配置
第七步,如果不勾这个勾就不会有图形界面
第八步
第九步,
第十步;点击文件保存,
第十一步:选择文件保存位置
第十二步,实现default文件与ks文件结合,实现自动安装
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 实操Deepseek接入个人知识库
· CSnakes vs Python.NET:高效嵌入与灵活互通的跨语言方案对比
· 【.NET】调用本地 Deepseek 模型
· Plotly.NET 一个为 .NET 打造的强大开源交互式图表库