第八单元 通过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文件结合,实现自动安装

 

posted @ 2022-09-24 12:04  摩天居士-谢烟客  阅读(151)  评论(0编辑  收藏  举报