[RHEL]-27-使用Kickstart实现无人值守安装

引言

这篇文章介绍如何使用DHCP+TFTP+Vsftpd+PXE+Kickstart搭建出可批量部署客户机的无人值守安装环境。

文章目录

0×1.PXE介绍

PXE启动流程:

支持PXE网络引导的计算机开机后(现在大多数网卡都默认支持PXE),首先通过ARP协议广播请求IP地址与TFTP服务器地址,在获取到IP后,尝试向TFTP服务器发起TFTP请求,并将TFTP服务器根目录中的pxelinux.0文件下载到本地并执行,pxelinux.0引导程序执行后,会从TFTP根目录的pxelinux.cfg文件夹中下载default配置文件,然后根据default配置文件中指定的位置,去下载操作系统内核,同时default配置文件中还指明了ks.cfg文件的位置,ks.cfg也会被一并下载到本地,在通过网络下载操作系统安装的过程中,PXE引导程序会尝试读取ks.cfg文件内容,用于初始化系统配置,实现全自动无人值守安装。

0×2.无人值守环境部署实例

实验环境介绍:

两台VMware虚拟机设备(最好先关闭虚拟机VMnet1的DHCP);
RHEL7,配置成TFTP服务器,网卡1,连接到VMnet1模拟内部网络,IP 192.168.100.233/24(不要配置网关),网卡2,桥接(或NAT),IP 192.168.1.233/24,网关192.168.1.1,接入真实网络环境,模拟外部网络;
初始化一台空虚拟机,只需要将网卡接入VMnet1(仅主机)即可,开机后会自动从TFTP服务器获取系统并自动安装;

在进行配置前,最好清空iptables:

					[root@qingsword.com ~]# iptables -F
					[root@qingsword.com ~]# service iptables save
					

a.配置DHCP

根据本文第一部分PXE启动流程的介绍,我们首先需要配置一下DHCP服务,来为客户机分配IP地址:

					#1.安装DHCP
					[root@qingsword.com ~]# yum -y install dhcp
					
					#2.修改主配置文件
					[root@qingsword.com ~]# vim /etc/dhcp/dhcpd.conf

					#将下面的内容写入配置文件中

					#响应客户端的启动查询(开机时发送的DHCP请求)
					allow booting;
					allow bootp;
					
					#不使用DNS动态更新,忽略客户端DNS更新
					ddns-update-style none;
					ignore client-updates;

					#子网区域
					subnet 192.168.100.0 netmask 255.255.255.0 {
					 option subnet-mask 255.255.255.0;
					 #客户机IP地址池
					 range dynamic-bootp 192.168.100.100 192.168.100.200;
					 #tftp服务器的地址
					 next-server 192.168.100.233;
					 #需要从tftp服务器下载并执行的PXE引导文件
					 filename "pxelinux.0";
					 default-lease-time 3600;
					 max-lease-time 7200;
					}

					#3.重启dhcp服务并设置为开机自启动
					[root@qingsword.com ~]# systemctl restart dhcpd
					[root@qingsword.com ~]# systemctl enable dhcpd

					#4.配置防火墙允许dhcp服务
					[root@qingsword.com ~]# firewall-cmd --permanent --zone=public --add-service=dhcp
					[root@qingsword.com ~]# firewall-cmd --reload
					

b.配置TFTP

TFTP十分的轻量级,以至于没有一个主服务程序,它依靠系统的xinetd服务启动,xinet是一个网络守护进程,它监听着不同的网络端口,并根据不同的端口将数据发送给对应的程序(本例安装好TFTP后,xinetd就监听着udp的69端口,从这个端口收到的所有数据,都直接发送给TFTP主程序处理):

					#1.安装xinetd与tftp
					[root@qingsword.com ~]# yum -y install xinetd tftp-server

					#2.编辑tftp配置文件,开启tftp
					[root@qingsword.com ~]# vim /etc/xinetd.d/tftp
					#将配置文件中disable后面的yes改成no
					disable = no

					#3.重启配置xinetd并设置成开机自启动
					[root@qingsword.com ~]# systemctl restart xinetd
					[root@qingsword.com ~]# systemctl enable xinetd

					#4.将udp69端口加入防火墙配置
					[root@qingsword.com ~]# firewall-cmd --permanent --zone=public --add-port=69/udp
					[root@qingsword.com ~]# firewall-cmd --reload
					

c.配置syslinux

					#1.下载syslinux,这个软件包中就包含了我们所需要的PXE引导文件
					[root@qingsword.com ~]# yum -y install syslinux

					#2.将pxe引导文件复制到TFTP根目录中
					[root@qingsword.com ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/

					#3.挂载RHEL安装光盘镜像,复制几个引导系统必要的文件到TFTP目录中供pxe调用
					[root@qingsword.com ~]# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
					[root@qingsword.com ~]# cp /mnt/isolinux/{vesamenu.c32,boot.msg} /var/lib/tftpboot/

					#4.创建引导模板文件
					[root@qingsword.com ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
					[root@qingsword.com ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default

					#5.编辑引导模板文件(因为复制时这是一个只读文件,所以保存时需要使用wq!强制写入)
					[root@qingsword.com ~]# vim /var/lib/tftpboot/pxelinux.cfg/default

					#需要修改下面两处

					#将第一行default后面改成linux标签,意思是,引导时使用这个标签下指定的内容去查找操作系统的位置
					default linux

					#找到linux标签
					label linux
					  menu label ^Install Red Hat Enterprise Linux 7.0
					  kernel vmlinuz
					  #修改inst.stage2后面的配置配置,指向ftp服务器地址,并且设置ks文件位置(这个文件稍后会创建,ftp服务稍后会搭建)
					  append initrd=initrd.img inst.stage2=ftp://192.168.100.233 ks=ftp://192.168.100.233/pub/ks.cfg quiet
					

d.配置Vsftpd

安装Vsftpd,并将光盘中所有数据全部拷贝到ftp根目录中:

					#1.安装Vsftpd
					[root@qingsword.com ~]# yum -y install vsftpd

					#2.重启vsftpd服务并设置成开机自启动
					[root@qingsword.com ~]# systemctl restart vsftpd
					[root@qingsword.com ~]# systemctl enable vsftpd

					#3.将光盘数据拷贝到ftp根目录下
					[root@qingsword.com ~]# cp -r /mnt/* /var/ftp/

					#4.配置selinux策略允许ftp访问
					[root@qingsword.com ~]# setsebool -P ftpd_connect_all_unreserved=on
					
					#5.配置防火墙允许ftp服务
					[root@qingsword.com ~]# firewall-cmd --permanent --zone=public --add-service=ftp
					[root@qingsword.com ~]# firewall-cmd --reload
					

e.配置Kickstart

通过上面的配置之后,现在只差一个kickstart自动化配置文件了,在RHEL系统中有一个十分好用的工具system-config-kickstart(这是一个图形化的ks.cfg文件生成工具,据说在RHEL7的光盘中没有提供,但可以通过CentOS的网络源获取到),有兴趣的朋友可以尝试去使用它生成一个ks文件,然后再添加一些我们自定义的内容:

					[root@qingsword.com ~]# vim /var/ftp/pub/ks.cfg
					#platform=x86, AMD64, or Intel EM64T
					#version=DEVEL
					#Install OS instead of upgrade
					install
					#键盘配置
					keyboard 'us'# Reboot after installation
					reboot
					#root用户密码
					rootpw --iscrypted $1$/d1DHHLV$9prsMzEjIl6Hf3WM3z10J1
					#系统时区
					timezone Asia/Shanghai --isUtc
					#使用ftp安装系统
					url --url="ftp://192.168.100.233/"
					#系统语言
					lang en_US
					#防火墙配置
					firewall --disabled
					#系统验证模式
					auth  --useshadow  --passalgo=sha512
					#使用图形界面安装
					graphical
					firstboot --disable
					#SELinux配置
					selinux --enforcing
					#主机名
					network  --hostname=qingsword.com
					#普通用户名与密码
					user --name=qing --password=$6$o4Jq.lXYKi5kovZi$XWuJs0WGo36sG78KeJFwiDsRrAP/Hmfityv826Nf8AvDOrwSgRwz9UuLLOQFoHk/N0hl9DCgSDTCE1CdpyDRG/ --iscrypted --gecos="qing"
					#网卡配置
					network  --bootproto=dhcp
					#启动引导配置
					bootloader --location=mbr
					#清空mbr
					zerombr
					#清空所有分区信息
					clearpart --all --initlabel
					#分区信息
					# /boot分区200M
					# /分区20G
					# /home分区--grow参数会将磁盘剩下的所有空间都划分给/home
					part /boot --fstype="xfs" --size=200
					part / --fstype="xfs" --size=20000
					part /home --fstype="xfs" --grow --size=1

					#安装系统时会安装的软件包列表,下面是安装desktop环境的完整软件包列表,如果不需要安装图形化界面,只需要@base与@core两个软件包即可
					%packages
					@base
					@core
					@desktop-debugging
					@dial-up
					@fonts
					@gnome-desktop
					@guest-agents
					@guest-desktop-agents
					@input-methods
					@internet-browser
					@multimedia
					@print-client
					@x11
					%end
					

Ps:如果不使用system-config-kickstart工具生成,可以复制上面这个模板,root用户与普通用户的密码,大家可以直接在本地机器上创建两个用户分别设置密码后,在/etc/passwd文件中找到对应加密的密码字符串替换上面的密码部分即可;分区信息也可以按照上面的格式逐行自定义。

这一切配置完成后,新建一台虚拟机设备,选择稍后安装系统,将网络设置成仅主机,移除光驱,然后启动这台设备,之后这台设备会从TFTP服务器上自动获取系统安装。