使用PXE+Kickstart无人值守安装系统
PXE预启动执行环境(即Preboot execute environment)
是一种能够让计算机通过网络启动的引导方式,只要网卡支持PXE协议即可使用,用于在无人值守安装系统服务中引导客户机安装服务。Kickstart是一种无人值守的安装方式,工作原理就是预先把原本需要运维人员手工填写的参数保存成一个ks.cfg文件,当安装过程中出现需要填写参数时则自动匹配Kickstart生成的文件,所以只要Kickstart文件包含了安装过程中所有需要人工填写的参数,那么理论上来讲运维人员就完全不需要再进行手工操作,喝着咖啡等待系统安装完毕即可。
VirtualBox关闭DHCP功能。
准备一台服务器作为PXE服务器,并部属相关程序
1、安装所需的软件包
# yum install xinetd dhcp tftp-server httpd syslinux system-config-kickstart
2、配置:dhcp
DHCP动态主机地址管理服务程序用于为客户主机网卡分配可用的IP地址,这是服务端与客户端主机进行文件传输的基础。
# vi /etc/dhcp/dhcpd.conf
subnet 192.168.100.0 netmask 255.255.255.0 { #最后两行作用是让客户端主机网卡获取到IP地址后主动去到next-server服务器获取引导驱动文件pxelinux.0,自动进行下一步的安装过程。 [root@localhost ~]# systemctl restart dhcpd.service |
3、配置TFTP
vsftpd是一款功能丰富的文件传输服务程序,需要用户使用匿名、本地甚至虚拟用户来进行访问验证,但当前的客户端主机连系统都没有安装,如何进行登录验证呢?而TFTP是一种基于UDP协议的简单文件传输协议,用户不需要进行验证即可获取到所需的文件资源,因此接下来配置TFTP服务程序来为用户提供引导及驱动文件吧~当客户端有了基本的驱动程序后再通过vsftpd服务程序把完整的光盘镜像文件传送过去。
TFTP是一种非常精简的文件传输服务程序,它的运行和关闭时由xinted网络守护进程服务来进行统一管理的,平时xinetd服务程序会同时监听很多个系统的端口号,然后根据用户请求的端口号来调取对应的服务程序来响应用户的请求。如果咱们需要开启TFTP服务程序的话,就把xinetd服务程序对应的配置文件中disable参数改成no就可以了,意思是不要禁用TFTP服务程序,那也就是开启它了。配置文件修改好后保存退出,然后记得把xinetd服务程序重启一下,然后加入到开机启动项中(红帽RHEL7系统中xinetd服务程序默认已经启用,因此此时执行命令没有输出信息是正常情况)。
TFTP服务程序默认会占用服务器 udp 协议的69端口号,所以在生产环境中还要记得在firewalld防火墙管理工具中写入一下永久生效的允许策略,让客户端主机能够顺利的获取到引导文件。
配置文件都在/etc/xinetd.d目录下
[root@localhost ~]# cd /etc/xinetd.d/
[root@localhost xinetd.d]# ll
total 4
-rw-r--r--. 1 root root 518 Mar 2 2016 tftp
[root@localhost xinetd.d]# vi tftp [root@localhost ~]# systemctl restart xinetd.service |
4、SysLinux
SYSLinux是用于提供引导加载的服务程序,与其说SYSLinux说一个服务程序,不如说更需要里面的引导文件,安装好SYSLinux服务程序软件包后就会在/usr/share/syslinux目录中出现很多的引导文件。
把SYSLinux提供的引导文件pxelinux.0 复制到TFTP服务程序的默认目录中,这样用户就可以在无系统的情况下顺利的获取到引导文件了。
5、拷贝相关文件到/var/lib/tftpboot目录
[root@localhost ~]# ll /var/lib/tftpboot/ [root@pxeserver pxelinux.cfg]# ll |
6、修改default配置文件
[root@localhost pxelinux.cfg]# vi default … label linux #把默认的光盘镜像安装方式修改成httpd(也可以用ftp)网络文件传输方式,指定好光盘镜像的获取网址以及ks应答文件的获取路径 |
7、创建KickStart应用文件ks.cfg
这个文件可以直接修改/root/anaconda-ks.cfg 文件。但是建议system-config-kickstart图形界面来生成这个文件。
#system-config-kickstart
注意上面的配置文件default里:inst.repo=http://192.168.100.111/cdrom
是在apache默认目录下的cdrom目录下。所以后边还得在/var/www/html目录下创建cdrom目录,并且mount /dev/cdrom /var/www/html/cdrom目录。
认证方式,如果没有,可以不用选择。
建议把防火墙和Selinux关闭。
RHEL7+的包选项有bug,选择不了,只能后边再手动修改生成的文件。
安装前和安装后需要执行的脚本,如果没有需要,可以不写。
最后将ks.cfg文件保存到/var/www/html目录下。
append initrd=initrd.img ks=192.168.100.111/ks.cfg
注意配置文件default里我们修改的这一行,我们把ks.cfg文件指定到apache的默认目录/var/www/html目录,所以这一步保存文件时也必须保存到该目录下。
手动修改ks.cfg文件:把上面“Package selection”那一步选择不了的包添加进来。
从/root/anaconda-ks.cfg这个文件里去copy。
# vi /var/www/html/ks.cfg
# Clear the Master Boot Record %packages %end %post |
[root@localhost ~]# mkdir /var/www/html/cdrom
[root@localhost ~]# mount /dev/cdrom /var/www/html/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost ~]# systemctl restart httpd
[root@localhost ~]#
8、自动部署客户机
按照上面的配置方法成功部署各个相关服务程序后,咱们就可以开始用PXE+Kickstart无人值守安装系统啦,参考下面步骤建立虚拟主机时一定要把客户端网卡模式设定成与服务端一致的仅主机模式,否则两台服务器根本不能通信,也就肯定不能自动化安装系统了。
连接方式为host-only,跟PXE-SERVER服务器连接到同一块虚拟网卡上。
启动顺序勾选“网络”
然后就到下面的图形界面了,整个过程会自动完成系统安装,安装完成后会自动重启。
问题:在测试的过程中,如上图,在“NO disk selected”停住了。不知道啥原因,system-config-kickstart图形界面配置的过程中也没有这项。在对比/root/anaconda-ks.cfg文件时也没找到问题。