PXE实现无人值批量部署服务器
一、PXE概述
1.1 什么是PXE
- PEX (Pre-Boot Execution E nvironment 预启动执行环境),是一种引导方式,并不是一种安装方式。
- 基于 Client/Server的工作模式
- PXE在网卡的ROM 中,当计算机引导时,BIOS把PXE Client调入内存执行,PXE Client 将放置在远端的文件通过网络下载到本地运行。
1.2 什么是KickStart
-
KickStart 是一种无人值守的安装方式,KickStart 的工作原理是通过 记录典型的安装过程中记录所需要填写的各种参数(语言、时区、密码、分区、键盘等),并生成一个ks.cfg的文件。(名字可以修改,默认ks.cfg) -
在其后的安装过程中,当出现要求填写参数的情况时,安装程序会首先去查找KickStart 生成的文件,当找到合适的参数时,就采用找到的参数,当没有找到合适的参数,就会卡着,需要人工干预。 -
如果KickStart 文件涵盖安装过程中所有需要填写的参数时,只需要告诉安装程序从何处取得 ks.cfg文件。安装完毕后,安装程序会根据ks.cfg中设置的重启选项重启系统,并结束安装。
1. 3 安装的必要条件
-
BIOS 支持PXE,需要在BIOS开启 -
NIC 网卡支持
二、PXE工作原理
2.1 工作原理
2.2 本次实验环境
-
实验环境
主机名 | 网络模式 | IP地址 |
---|
Server | 仅主机 vmware 需要关闭DHP | 10.0.0.100 | Client | 仅主机 | DHCP分配 |
2.3 执行PXE+KiskStart安装需要准备内容
三、安装步骤
3.1 配置YUM源
-
YUM 源配置 [root@Server~]# cd /etc/yum.repos.d/
[root@Server/etc/yum.repos.d]# ls
rivers.repo
[root@Server/etc/yum.repos.d]# mv rivers.repo rivers.repo.bak
[root@Server/etc/yum.repos.d]# vim dvd.repo
[development]
name=Centos7.6
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@Server~]# mount /dev/cdrom /mnt/
mount: /dev/sr0 is write-protected, mounting read-only
[root@Server~]#
[root@Server~]# yum clean all
Loaded plugins: fastestmirror
Cleaning repos: development
Other repos take up 137 M of disk space (use --verbose for details)
[root@Server~]#
3.2 关闭防火墙、selinux
3.3 安装DHCP 、tftp(tftp-server、xinetd)
3.3.1 安装dhcp、tftp-server、xinetd
3.3.2 配置DHCP服务
-
配置DHCP文件
[root@Server~]
[root@Server/etc/dhcp]
dhclient.d dhcpd6.conf scripts
dhclient-exit-hooks.d dhcpd.conf
[root@Server/etc/dhcp]
[root@Server/etc/dhcp]
[root@Server/etc/dhcp]
cp: overwrite ‘/etc/dhcp/dhcpd.conf’? y
subnet 10.0.0.0 netmask 255.255.255.0 {
range 10.0.0.120 10.0.0.200;
option domain-name-servers 10.0.0.5, 10.0.0.6;
option domain-name "example.com";
option routers 10.0.0.254;
option broadcast-address 10.0.0.255;
default-lease-time 600;
max-lease-time 7200;
next-server 10.0.0.100;
filename "pxelinux.0";
}
subnet 10.0.0.0 netmask 255.255.255.0
range 10.0.0.120 10.0.0.200;
option domain-name-servers:
option routers 10.0.0.254;
option broadcast-address 10.0.0.255;
default-lease-time 600;
max-lease-time 7200;
next-server 10.0.0.100;
filename "/pxelinux.0";
[root@Server/etc/dhcp]
Created symlink from /etc/systemd/system/multi-user.target.wants/dhcpd.service to /usr/lib/systemd/system/dhcpd.service.
[root@Server/etc/dhcp]
[root@Server/etc/dhcp]
[root@Server/etc/dhcp]
udp 0 0 0.0.0.0:67 0.0.0.0:* 8503/dhcpd
[root@Server/etc/dhcp]
[root@Server/etc/dhcp]
[root@Server~]
@补充:如果全局配置了,子配置没配置,那么将读取全局设置
如果全局配置了,子的也配置了,那么将以自配置为准。
3.3.3 配置tftp服务
3.3.4 安装syslinux,拷贝pxelinux.0文件
-
配置tftp-server在哪里
[root@Server~]
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
syslinux-4.05-15.el7.x86_64 : Simple kernel loader
...: which boots from a FAT filesystem
Repo : development
Matched from:
Filename : /usr/share/syslinux/pxelinux.0
syslinux-tftpboot-4.05-15.el7.noarch : SYSLINUX
...: modules in /var/lib/tftpboot, available for
...: network booting
Repo : development
Matched from:
Filename : /var/lib/tftpboot/pxelinux.0
[root@Server~]
[root@Server~]
/usr/share/doc/syslinux-4.05/pxelinux.txt
/usr/share/syslinux/gpxecmd.c32
/usr/share/syslinux/gpxelinux.0
/usr/share/syslinux/gpxelinuxk.0
/usr/share/syslinux/pxechain.com
/usr/share/syslinux/pxelinux.0
[root@Server~]
[root@Server~]
[root@Server/var/lib/tftpboot]
pxelinux.0
[root@Server/var/lib/tftpboot]
[root@Server/var/lib/tftpboot]
pxelinux.cfg pxelinux.0
[root@Server/var/lib/tftpboot]
[root@Server/var/lib/tftpboot/pxe.cfg]
/var/lib/tftpboot/pxelinux.cfg
[root@Server/var/lib/tftpboot]
[root@Server~]
[root@Server/mnt/isolinux]
[root@Server/mnt/isolinux]
-
验证 -
1.客户端启动系统,选择从网卡启动
2.就会从DHCP服务器(10.0.0.81)中获取IP地址,同时还获取了 tftp-server IP(10.0.0.81)地址和网络引导程序(pxelinux.0)
3.通过网卡读取到tftp-server(/var/lib/tftpboot目录)上的pxelinux.0,读取到内存中
4.在内存中执行引导程序
5.读取引导程序的配置文件(/var/lib/tftpboot/pxe.cfg/default)
3.4 编写kickstart.cfg配置文件
3.4.1安装system-config-kickstart
-
安装 system-config-kickstart [root@Server/etc/yum.repos.d]
[root@Server~]
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
……
[root@Server~]
详解界面如下:
3.4.2 system-config-kickstart 界面配置
3.5 配置 HTTP镜像源
3.5.1 安装http
-
安装httpd
[root@Server ~]
已加载插件:fastestmirror, langpacks
Loading mirror speeds from cached hostfile
……
[root@Server ~]
[root@Server ~]
[root@Server ~]
[root@Server/var/www/html]
[root@Server/var/www/html]
[root@Server/var/www/html]
[root@Server~]
[development]
name=rhce7
baseurl=http://10.0.0.100/pub
enabled=1
gpgcheck=0
[root@Server~]
3.5.2 将iso 镜像文件挂在设置开机自启动
-
设置iso开机自启动
[root@Server~]
/dev/cdrom /var/www/html/pub iso9660 defaults,loop 0 0
[root@Server~]
/dev/cdrom /var/www/html/pub iso9660 defaults,loop 0 0
[root@Server~]
[root@Server~]
[root@Server~]
@ 7版本上,模式可以识别loop,defaults,loop 后面的loop可以省略
3.6 配置开机菜单 default
3.6.1 将ks6.cfg移动到 /var/www/html/ks
3.6.2 配置开机菜单
3.6.3 将客户机 设置网络启动(raid等),开机启动即可
四、总结
所谓的无人值守,就是自动应答,当安装过程中需要人机交互提供某些选项的答案时(如如何分区),自动应答文件可以根据对应项自动提供答案。但是,无人值守并不完全是无人值守,至少设置bios从网卡启动是必须人为设置的,且安装完系统后设置不从网卡启动也是需要人为设置的。除此之外,其他的基本上都可以实现无人值守安装。
在部署时,建议使用 Kickstart+DHCP+HTTP(FTP)+TFTP,安装dhcp、tftp-server、xinetd、httpd、system-config-kickstart等软件。
在真实环境中,通常我们会发现一台服务器好几块硬盘,做完raid,整个硬盘有等10T,如果来使用kickstart自动安装并分区呢;一般服务器硬盘超过2T,如何来使用kickstart安装配置呢?这里就不能使用MBR方式来分区,需要采用GPT格式来引导并分区。需要在ks.cfg末尾添加如下命令来实现需求:
%pre
parted -s /dev/sdb mklabel gpt
%end
|