centos7搭建PXE+Kickstart批量部署系统
IP | 主机名 | 节点 |
---|---|---|
192.168.200.100 | pxe | PXE主机 |
192.168.200.133 | localhost | 需要安装操作系统的电脑 |
PXE服务器配置:
-
搭建PXE基础环境
- 基础配置:
[root@localhost ~]# hostnamectl set-hostname pxe #修改主机名为pxe [root@pxe ~]# systemctl stop firewalld #关闭防火墙 [root@pxe ~]# setenforce 0 #关闭selinux服务
- 配置yum本地源:
[root@pxe ~]# mount /dev/cdrom /media #挂载镜像到media文件下
[root@pxe ~]# vim /etc/yum.repos.d/local.repo #编写yum本地源环境
[local]
name=centos
baseurl=file:///media
gpgcheck=0
enabled=1
[root@pxe ~]# yum repolist #检查yum源是否配置成功
- 安装TFTP服务(tftp默认由xinetd服务进行管理):
[root@pxe ~]# yum -y install tftp-server xinetd
[root@pxe ~]# vim /etc/xinetd.d/tftp #修改TFTP配置文件
# default: off
# description: The tftp server serves files using the trivial file transfer \
# protocol. The tftp protocol is often used to boot diskless \
# workstations, download configuration files to network-aware printers, \
# and to start the installation process for some operating systems.
service tftp
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot
disable = no #此处的yes修改为no
per_source = 11
cps = 100 2
flags = IPv4
}
[root@pxe ~]# systemctl start tftp #启动TFTP服务
[root@pxe ~]# systemctl enable tftp #设置TFTP开机自启动
[root@pxe ~]# systemctl start xinetd #启动xinetd服务
[root@pxe ~]# systemctl enable xinetd #设置开机自启
- 搭建DHCP 服务
[root@pxe ~]# yum -y install dhcp
[root@pxe ~]# vim /etc/dhcp/dhcpd.conf
#删除DHCP原有的所有配置,添加以下字段:
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 192.168.200.0 netmask 255.255.255.0 {
#根据实际情况填写suben和netmask,此处的网段为192.168.200.0掩码为255.255.255.0;
range 192.168.200.100 192.168.200.200;
#设置DHCP的地址段,此处从192.168.200.100-192.168.200.200;
option routers 192.168.200.100;
#设置route,此处需要写宿主机的地址192.168.200.100;
filename "pxelinux.0";
#指定要下载PXE引导程序的文件。
}
[root@pxe ~]# systemctl start dhcpd #启动DHCP服务
[root@pxe ~]# systemctl enable dhcpd #设置开机自启
```
5. 准备Linux内核
进入/media/images/pxeboot目录下,复制所需的文件到TFTP服务默认的共享路径下。
```
[root@pxe ~]# cd /media/images/pxeboot/
[root@pxe pxeboot]# ll
总用量 47623
-rw-r--r--. 1 root root 43372552 12月 5 2016 initrd.img
-r--r--r--. 1 root root 441 12月 5 2016 TRANS.TBL
-rwxr-xr-x. 1 root root 5392080 11月 23 2016 vmlinuz
[root@pxe pxeboot]# cp initrd.img /var/lib/tftpboot/
[root@pxe pxeboot]# cp vmlinuz /var/lib/tftpboot/
```
进入/media/isolinux目录,复制所需的文件到TFTP服务默认的共享路径下。
```
[root@pxe pxeboot]# cd /media/isolinux/
[root@pxe isolinux]# ll
总用量 47992
-r--r--r--. 1 root root 2048 12月 5 2016 boot.cat
-rw-r--r--. 1 root root 84 12月 5 2016 boot.msg
-rw-r--r--. 1 root root 293 12月 5 2016 grub.conf
-rw-r--r--. 1 root root 43372552 12月 5 2016 initrd.img
-rw-r--r--. 1 root root 24576 12月 5 2016 isolinux.bin
-rw-r--r--. 1 root root 3068 12月 5 2016 isolinux.cfg
-rw-r--r--. 1 root root 190896 11月 6 2016 memtest
-rw-r--r--. 1 root root 186 10月 1 2015 splash.png
-r--r--r--. 1 root root 2215 12月 5 2016 TRANS.TBL
-rw-r--r--. 1 root root 152976 11月 6 2016 vesamenu.c32
-rwxr-xr-x. 1 root root 5392080 11月 23 2016 vmlinuz
[root@pxe isolinux]# cp boot.msg /var/lib/tftpboot/
[root@pxe isolinux]# cp vesamenu.c32 /var/lib/tftpboot/
```
6. 准备PXE引导程序
安装syslinux服务(PXE引导程序由syslinux服务提供)。
```
[root@pxe ~]# yum -y install syslinux
```
PXE引导文件pxelinux.0在/usr/share/syslinux目录下,将该文件复制到TFTP默认共享目录。
```
[root@pxe ~]# cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@pxe ~]# ll /var/lib/tftpboot/
总用量 47812
-rw-r--r--. 1 root root 84 5月 10 00:55 boot.msg
-rw-r--r--. 1 root root 43372552 5月 10 00:54 initrd.img
-rw-r--r--. 1 root root 26764 5月 10 00:56 pxelinux.0
-rw-r--r--. 1 root root 152976 5月 10 00:55 vesamenu.c32
-rwxr-xr-x. 1 root root 5392080 5月 10 00:54 vmlinuz
#确定TFTP共享目录下有五个文件。
```
7. FTP 服务配置与启动
在使用PXE进行批量安装时,最后一步需要去文件共享服务器(http/ftp/nfs)中下载RPM包开始安装系统,此处使用FTP服务。
```
[root@pxe ~]# yum -y install vsftpd
[root@pxe ~]# cd /var/ftp/ #进入ftp默认共享目录
[root@pxe ftp]# mkdir centos7 #创建centos7目录
[root@pxe ftp]# mount /dev/cdrom /var/ftp/centos7/
#将ISO镜像挂载到centos7目录(该操作意义是PXE Client节点安装的操作系统是Centos 7)
[root@pxe ftp]# systemctl start vsftpd #启动ftp服务
[root@pxe ftp]# systemctl enable vsftpd #设置开机自启
```
8. 配置启动文件
在TFTP服务的共享目录下,创建pxelinux.cfg子目录,并在该目录下创建default文件
[root@pxe ~]# cd /var/lib/tftpboot/
[root@pxe tftpboot]# mkdir pxelinux.cfg
[root@pxe tftpboot]# cd pxelinux.cfg/
[root@pxe pxelinux.cfg]# vim default
default vesamenu.c32 #该文件在TFTP默认共享目录下
display boot.msg #该文件在TFTP默认共享目录下
timeout 50 #等待时间为5秒
label centos7.5
menu label Install CentOS 7.5
menu default
kernel vmlinuz #该文件在TFTP默认共享目录下
append initrd=initrd.img ks=ftp://192.168.200.100/centos7.5_ks.cfg
#需要将cfg文件放到ftp共享路径下,cfg文件还未创建,后面的步骤会创建cfg文件
```
-
编写Kickstart文件
因为在default下已经说明cfg文件的下载路径与文件名称,所以在ftp共享目录下创建centos7.5_ks.cfg文件,并按照以下内容配置:
[root@pxe ~]# vim /var/ftp/centos7.5_ks.cfg #platform=x86, AMD64 or Intel EM64T #version=DEVEL #Firewalld configuration #fierwalld --enable #Install OS instead of upgrade #确定是安装、替换还是更新系统,此处是安装 install #use network installation 此处是centos7系统的ftp地址 url --url=ftp://192.168.200.100/centos7 #Root password设置密码为123456 rootpw 123456 auth --useshadow --enablemd5 graphical firstboot --enabled keyboard us lang en_US selinux --enforcing logging --level=info reboot timezone Asia/Shanghai network --bootproto=dhcp --device=ens33 --onboot=yes --noipv6 #bootloader --append="rhgb quiet" --localtion=mbr clearpart --all --initlabel part /boot --fstype="ext4" --size=200 part swap --fstype="swap" --size=100 part / --fstype="ext4" --size=20000 %pre %end %post %end %packages --nobase openssh-server openssh-clients wget %end
pxe client实现结果
-
创建客户端虚拟机
-
并设置网卡信息跟PXE服务器设置为统一网卡(VMnet8),内存和硬盘尽量给大一些,太小会出现报错信息。
- 开启此虚拟机,无需操作,自动实现PXE+Kickstart安装操作系统。