使用Kickstart实现无人值守安装

2020-05-12 17:26:24 浏览数 (1)

引言

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

文章目录

  • 0×1.PXE介绍
  • 0×2.无人值守环境部署实例
  • a.配置DHCP
  • b.配置TFTP
  • c.配置syslinux
  • d.配置Vsftpd
  • e.配置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:

代码语言:javascript复制
[root@qingsword.com ~]# iptables -F
[root@qingsword.com ~]# service iptables save

a.配置DHCP

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

代码语言:javascript复制
#1.安装DHCP
02	[root@qingsword.com ~]# yum -y install dhcp
03	
04	#2.修改主配置文件
05	[root@qingsword.com ~]# vim /etc/dhcp/dhcpd.conf
06	
07	#将下面的内容写入配置文件中
08	
09	#响应客户端的启动查询(开机时发送的DHCP请求)
10	allow booting;
11	allow bootp;
12	
13	#不使用DNS动态更新,忽略客户端DNS更新
14	ddns-update-style none;
15	ignore client-updates;
16	
17	#子网区域
18	subnet 192.168.100.0 netmask 255.255.255.0 {
19	 option subnet-mask 255.255.255.0;
20	 #客户机IP地址池
21	 range dynamic-bootp 192.168.100.100 192.168.100.200;
22	 #tftp服务器的地址
23	 next-server 192.168.100.233;
24	 #需要从tftp服务器下载并执行的PXE引导文件
25	 filename "pxelinux.0";
26	 default-lease-time 3600;
27	 max-lease-time 7200;
28	}
29	
30	#3.重启dhcp服务并设置为开机自启动
31	[root@qingsword.com ~]# systemctl restart dhcpd
32	[root@qingsword.com ~]# systemctl enable dhcpd
33	
34	#4.配置防火墙允许dhcp服务
35	[root@qingsword.com ~]# firewall-cmd --permanent --zone=public --add-service=dhcp
36	[root@qingsword.com ~]# firewall-cmd --reload

b.配置TFTP

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

代码语言:javascript复制
#1.安装xinetd与tftp
02	[root@qingsword.com ~]# yum -y install xinetd tftp-server
03	
04	#2.编辑tftp配置文件,开启tftp
05	[root@qingsword.com ~]# vim /etc/xinetd.d/tftp
06	#将配置文件中disable后面的yes改成no
07	disable = no
08	
09	#3.重启配置xinetd并设置成开机自启动
10	[root@qingsword.com ~]# systemctl restart xinetd
11	[root@qingsword.com ~]# systemctl enable xinetd
12	
13	#4.将udp69端口加入防火墙配置
14	[root@qingsword.com ~]# firewall-cmd --permanent --zone=public --add-port=69/udp
15	[root@qingsword.com ~]# firewall-cmd --reload
c.配置syslinux
01	#1.下载syslinux,这个软件包中就包含了我们所需要的PXE引导文件
02	[root@qingsword.com ~]# yum -y install syslinux
03	
04	#2.将pxe引导文件复制到TFTP根目录中
05	[root@qingsword.com ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
06	
07	#3.挂载RHEL安装光盘镜像,复制几个引导系统必要的文件到TFTP目录中供pxe调用
08	[root@qingsword.com ~]# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
09	[root@qingsword.com ~]# cp /mnt/isolinux/{vesamenu.c32,boot.msg} /var/lib/tftpboot/
10	
11	#4.创建引导模板文件
12	[root@qingsword.com ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
13	[root@qingsword.com ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
14	
15	#5.编辑引导模板文件(因为复制时这是一个只读文件,所以保存时需要使用wq!强制写入)
16	[root@qingsword.com ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
17	
18	#需要修改下面两处
19	
20	#将第一行default后面改成linux标签,意思是,引导时使用这个标签下指定的内容去查找操作系统的位置
21	default linux
22	
23	#找到linux标签
24	label linux
25	  menu label ^Install Red Hat Enterprise Linux 7.0
26	  kernel vmlinuz
27	  #修改inst.stage2后面的配置配置,指向ftp服务器地址,并且设置ks文件位置(这个文件稍后会创建,ftp服务稍后会搭建)
28	  append initrd=initrd.img inst.stage2=ftp://192.168.100.233 ks=ftp://192.168.100.233/pub/ks.cfg quiet

c.配置syslinux

代码语言:javascript复制
#1.下载syslinux,这个软件包中就包含了我们所需要的PXE引导文件
02	[root@qingsword.com ~]# yum -y install syslinux
03	
04	#2.将pxe引导文件复制到TFTP根目录中
05	[root@qingsword.com ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
06	
07	#3.挂载RHEL安装光盘镜像,复制几个引导系统必要的文件到TFTP目录中供pxe调用
08	[root@qingsword.com ~]# cp /mnt/images/pxeboot/{vmlinuz,initrd.img} /var/lib/tftpboot/
09	[root@qingsword.com ~]# cp /mnt/isolinux/{vesamenu.c32,boot.msg} /var/lib/tftpboot/
10	
11	#4.创建引导模板文件
12	[root@qingsword.com ~]# mkdir /var/lib/tftpboot/pxelinux.cfg
13	[root@qingsword.com ~]# cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
14	
15	#5.编辑引导模板文件(因为复制时这是一个只读文件,所以保存时需要使用wq!强制写入)
16	[root@qingsword.com ~]# vim /var/lib/tftpboot/pxelinux.cfg/default
17	
18	#需要修改下面两处
19	
20	#将第一行default后面改成linux标签,意思是,引导时使用这个标签下指定的内容去查找操作系统的位置
21	default linux
22	
23	#找到linux标签
24	label linux
25	  menu label ^Install Red Hat Enterprise Linux 7.0
26	  kernel vmlinuz
27	  #修改inst.stage2后面的配置配置,指向ftp服务器地址,并且设置ks文件位置(这个文件稍后会创建,ftp服务稍后会搭建)
28	  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根目录中:

代码语言:javascript复制
#1.安装Vsftpd
02	[root@qingsword.com ~]# yum -y install vsftpd
03	
04	#2.重启vsftpd服务并设置成开机自启动
05	[root@qingsword.com ~]# systemctl restart vsftpd
06	[root@qingsword.com ~]# systemctl enable vsftpd
07	
08	#3.将光盘数据拷贝到ftp根目录下
09	[root@qingsword.com ~]# cp -r /mnt/* /var/ftp/
10	
11	#4.配置selinux策略允许ftp访问
12	[root@qingsword.com ~]# setsebool -P ftpd_connect_all_unreserved=on
13	
14	#5.配置防火墙允许ftp服务
15	[root@qingsword.com ~]# firewall-cmd --permanent --zone=public --add-service=ftp
16	[root@qingsword.com ~]# firewall-cmd --reload

e.配置Kickstart

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

代码语言:javascript复制
[root@qingsword.com ~]# vim /var/ftp/pub/ks.cfg
02	#platform=x86, AMD64, or Intel EM64T
03	#version=DEVEL
04	#Install OS instead of upgrade
05	install
06	#键盘配置
07	keyboard 'us'# Reboot after installation
08	reboot
09	#root用户密码
10	rootpw --iscrypted $1$/d1DHHLV$9prsMzEjIl6Hf3WM3z10J1
11	#系统时区
12	timezone Asia/Shanghai --isUtc
13	#使用ftp安装系统
14	url --url="ftp://192.168.100.233/"
15	#系统语言
16	lang en_US
17	#防火墙配置
18	firewall --disabled
19	#系统验证模式
20	auth  --useshadow  --passalgo=sha512
21	#使用图形界面安装
22	graphical
23	firstboot --disable
24	#SELinux配置
25	selinux --enforcing
26	#主机名
27	network  --hostname=qingsword.com
28	#普通用户名与密码
29	user --name=qing --password=$6$o4Jq.lXYKi5kovZi$XWuJs0WGo36sG78KeJFwiDsRrAP/Hmfityv826Nf8AvDOrwSgRwz9UuLLOQFoHk/N0hl9DCgSDTCE1CdpyDRG/ --iscrypted --gecos="qing"
30	#网卡配置
31	network  --bootproto=dhcp
32	#启动引导配置
33	bootloader --location=mbr
34	#清空mbr
35	zerombr
36	#清空所有分区信息
37	clearpart --all --initlabel
38	#分区信息
39	# /boot分区200M
40	# /分区20G
41	# /home分区--grow参数会将磁盘剩下的所有空间都划分给/home
42	part /boot --fstype="xfs" --size=200
43	part / --fstype="xfs" --size=20000
44	part /home --fstype="xfs" --grow --size=1
45	
46	#安装系统时会安装的软件包列表,下面是安装desktop环境的完整软件包列表,如果不需要安装图形化界面,只需要@base与@core两个软件包即可
47	%packages
48	@base
49	@core
50	@desktop-debugging
51	@dial-up
52	@fonts
53	@gnome-desktop
54	@guest-agents
55	@guest-desktop-agents
56	@input-methods
57	@internet-browser
58	@multimedia
59	@print-client
60	@x11
61	%end

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

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

*转载注明来自:晴刃(QingSword.COM)

*原文连接:http://www.qingsword.com/qing/rhel-27.html

0 人点赞