前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >使用Kickstart实现无人值守安装

使用Kickstart实现无人值守安装

作者头像
字节脉搏实验室
修改2020-05-12 17:26:24
8190
修改2020-05-12 17:26:24
举报

引言

这篇文章介绍如何使用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

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-11-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 字节脉搏实验室 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 引言
  • 文章目录
  • 0×1.PXE介绍
  • 0×2.无人值守环境部署实例
    • a.配置DHCP
      • b.配置TFTP
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档