CentOS7部署PXE服务器(pxe+httpd+tftp+kickstart)

PXE=Pre-Boot Execution Environment,是预启动执行环境的缩写,通过PXE可以实现通过网络安装系
统。在这种方法中,客户端将只使用其网络接口卡引导,这将非常有助于系统管理员在没有DVD/CD设备的
系统上安装操作系统。采用PXE可以大大减少系统安装的工作量, 通过kickstart可以实现大规模的批量自
动部署安装操作系统。
PXE环境需要DHCP服务器,它为客户机提供IP地址、其他网络信息,如名称服务器、tftp服务器的IP地址或
主机名(它提供启动安装程序所需的文件),以及tftp服务器上文件的位置。
KickStart是一种无人职守安装方式。KickStart的工作原理是通过记录典型的安装过程中所需人工干预填
写的各种参数,并生成一个名为ks.cfg的文件;在其后的安装过程中(不只局限于生成KickStart安装文件
的机器)当出现要求填写参数的情况时,安装程序会首先去查找KickStart生成的文件,当找到合适的参数
时,就采用找到的参数,当没有找到合适的参数时,才需要人工干预。这样,如果KickStart文件涵盖了安
装过程中出现的所有需要填写的参数时,安装程序会根据ks.cfg中设置来执行自动安装。无需人工干预。
必要组件:
1,DHCP服务器:为 PXE-client 分配 IP ,获得安装程序文件位置 2,TFTP服务器:传输安装文件、内核、菜单文件等给 PXE-client 3,Kickstart:生成的ks.cfg配置文件 4,HTTP/NFS/FTP 服务中的任意一种,本次演示采用HTTP协议,用于传送安装源文件给 PXE-client
安装步骤:
1,配置HTTP服务器 2,在tftp服务器上配置文件 3,配置DHCP。 4,启动所有服务 5,防火墙的配置 6,启动客户端,并启动安装。
在本次演示安装中,所有组件都安装在一台服务器中,系统采用CentOS 7.5
开始安装:
1,安装必要组件
yum -y install httpd xinetd syslinux tftp-server system-config-kickstart
2,拷贝系统ISO安装文件
mkdir -p /tmp/iso
将iso文件拷贝到iso目录,这里我们拷贝3个系统ISO文件,分别是:
CentOS-7-x86_64-DVD-1611.iso
CentOS-7-x86_64-DVD-1708.iso
CentOS-7-x86_64-DVD-1804.iso
3,在/var/www/html创建三个目录用来挂载光盘
mkdir -p /var/www/html/centos{7.3,7.4,7.5}
mkdir -p /var/www/html/ks
4,挂载光盘
mount -o loop /tmp/iso/CentOS-7-x86_64-DVD-1611.iso /var/www/html/centos7.3 mount: /dev/loop0 is write-protected, mounting read-only mount -o loop /tmp/iso/CentOS-7-x86_64-DVD-1708.iso /var/www/html/centos7.4 mount: /dev/loop1 is write-protected, mounting read-only mount -o loop /tmp/iso/CentOS-7-x86_64-DVD-1804.iso /var/www/html/centos7.5 mount: /dev/loop2 is write-protected, mounting read-only
5,编辑/etc/fstab 自动挂载
加入如下条目:
/tmp/iso/CentOS-7-x86_64-DVD-1611.iso /var/www/html/centos7.3 iso9660 defaults,ro,loop 0 0 /tmp/iso/CentOS-7-x86_64-DVD-1708.iso /var/www/html/centos7.4 iso9660 defaults,ro,loop 0 0 /tmp/iso/CentOS-7-x86_64-DVD-1804.iso /var/www/html/centos7.5 iso9660 defaults,ro,loop 0 0
6,重启系统,查看自动挂载点生效
df -hT
Filesystem Type Size Used Avail Use% Mounted on /dev/loop0 iso9660 4.1G 4.1G 0 100% /var/www/html/centos7.3 /dev/loop1 iso9660 4.3G 4.3G 0 100% /var/www/html/centos7.4 /dev/loop2 iso9660 4.2G 4.2G 0 100% /var/www/html/centos7.5
7,编辑启动文件及目录
mkdir /var/lib/tftpboot/pxelinux.cfg
cd /var/lib/tftpboot/pxelinux.cfg
mkdir centos{7.3,7.4,7.5}
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /var/www/html/centos7.5/isolinux/vesamenu.c32 /var/lib/tftpboot/
cp /var/www/html/centos7.5/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7.5/
cp /var/www/html/centos7.4/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7.4/
cp /var/www/html/centos7.3/isolinux/{vmlinuz,initrd.img} /var/lib/tftpboot/centos7.3/
cp /var/www/html/centos7.5/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
8,查看目录结构
[root@pxe pxelinux.cfg]# tree /var/lib/tftpboot/ /var/lib/tftpboot/ ├── centos7.3 │ ├── initrd.img │ └── vmlinuz ├── centos7.4 │ ├── initrd.img │ └── vmlinuz ├── centos7.5 │ ├── initrd.img │ └── vmlinuz ├── pxelinux.0 ├── pxelinux.cfg │ └── default └── vesamenu.c32
4 directories, 9 files
9,修改default菜单文件
vi /var/lib/tftpboot/pxelinux.cfg/default
编辑如下:
label 1 menu label ^Install CentOS 7.3-GUI menu default kernel centos7.3/vmlinuz append initrd=centos7.3/initrd.img text ks=http://172.16.60.1/ks/73.cfg
label 2 menu label ^Install CentOS 7.3-minimal menu default kernel centos7.3/vmlinuz append initrd=centos7.3/initrd.img text ks=http://172.16.60.1/ks/73-minimal.cfg
label 3 menu label ^Install CentOS 7.4-GUI menu default kernel centos7.4/vmlinuz append initrd=centos7.4/initrd.img text ks=http://172.16.60.1/ks/74.cfg
label 4 menu label ^Install CentOS 7.4-minimal menu default kernel centos7.4/vmlinuz append initrd=centos7.4/initrd.img text ks=http://172.16.60.1/ks/74-minimal.cfg
label 5 menu label ^Install CentOS 7.5-GUI menu default kernel centos7.5/vmlinuz append initrd=centos7.5/initrd.img text ks=http://172.16.60.1/ks/75.cfg
label 6 menu label ^Install CentOS 7.5-minimal menu default kernel centos7.5/vmlinuz append initrd=centos7.5/initrd.img text ks=http://172.16.60.1/ks/75-minimal.cfg
10 开启tftp
vi /etc/xinetd.d/tftp
将disable = yes 改成 no
配置Kickstart文件
1,可以使用下面两种方法来生成kickstart配置文件: 第一种:正常安装好Centos系统后,Centos都会自动创建一个kickstart配置文件,这个文件包括了完整的安装配置。可以利用这个kickstart配置文件来生成新的kickstart配置文件。(系统自动生成的文件名字叫anaconda-ks.cfg位于/root/anaconda-ks.cfg)
[root@pxe ~]# ls anaconda-ks.cfg Documents initial-setup-ks.cfg Pictures Templates Desktop Downloads Music Public Videos 第二种:Centos提供了一个图形化的kickstart配置工具。使用该工具可以创建kickstart配置文件。
2,我们计划采用3个系统,每个系统分别执行最小化安装和GUI图形安装,所以一共生成6个kickstart配置文件,文件名在前面编辑启动菜单中已经定义好:
73.cfg
73-minimal.cfg
74.cfg
74-minimal.cfg 75.cfg
75-minimal.cfg
3,Kickstart文件示例(完全安装)
# version=DEVEL # X Window System configuration information xconfig --startxonboot # License agreement eula --agreed # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media cdrom # Use network installation url --url="http://172.16.60.1/centos7.5" # Use graphical install graphical # Run the Setup Agent on first boot firstboot --enable # System services services --enabled="chronyd" # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8
ignoredisk --only-use=sda
# Root password rootpw --iscrypted $6$aeRUqqGhIFDslQC3$jcxqPLNCBfdK7EPkz7BcZrDpda7tp1P5z8VS8gPDx25iulUxyms5xE59ShLyKAmYzVkPraGCwu6CRypsxl2Fm0 # System timezone timezone America/New_York --isUtc user --groups=wheel --name=jacky -- password=$6$p/.gbURXOe2hdFpU$3ZM5b8Ch0flWzErIHRRMWKSFs7MA1mN8w27M.61erQhzulPuYjZyfz.zYR3ve.aGxwCU4Hvennt8B.IXpTz.N1 --iscrypted --gecos="jacky" # System bootloader configuration bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda autopart --type=lvm # Partition clearing information clearpart --none --initlabel
%packages @^graphical-server-environment @base @desktop-debugging @dial-up @fonts @gnome-desktop @guest-agents @guest-desktop-agents @hardware-monitoring @input-methods @internet-browser @multimedia @print-client @x11 chrony kexec-tools %end
%addon com_redhat_kdump --enable --reserve-mb=auto %end
%anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end 3,Kickstart文件示例(最小化安装) # version=DEVEL # X Window System configuration information xconfig --startxonboot # License agreement eula --agreed # System authorization information auth --enableshadow --passalgo=sha512 # Use CDROM installation media cdrom # Use network installation url --url="http://172.16.60.1/centos7.5" # Use graphical install graphical # Run the Setup Agent on first boot firstboot --enable # System services services --enabled="chronyd" # Keyboard layouts keyboard --vckeymap=us --xlayouts='us' # System language lang en_US.UTF-8
ignoredisk --only-use=sda
# Root password rootpw --iscrypted $6$aeRUqqGhIFDslQC3$jcxqPLNCBfdK7EPkz7BcZrDpda7tp1P5z8VS8gPDx25iulUxyms5xE59ShLyKAmYzVkPraGCwu6CRypsxl2Fm0 # System timezone timezone America/New_York --isUtc user --groups=wheel --name=jacky -- password=$6$p/.gbURXOe2hdFpU$3ZM5b8Ch0flWzErIHRRMWKSFs7MA1mN8w27M.61erQhzulPuYjZyfz.zYR3ve.aGxwCU4Hvennt8B.IXpTz.N1 --iscrypted --gecos="jacky" # System bootloader configuration bootloader --append=" crashkernel=auto" --location=mbr --boot-drive=sda autopart --type=lvm # Partition clearing information clearpart --none --initlabel
%packages @^minimal %end
%addon com_redhat_kdump --enable --reserve-mb=auto %end
%anaconda pwpolicy root --minlen=6 --minquality=1 --notstrict --nochanges --notempty pwpolicy user --minlen=6 --minquality=1 --notstrict --nochanges --emptyok pwpolicy luks --minlen=6 --minquality=1 --notstrict --nochanges --notempty %end
配置DHCP服务器
1,将示例配置文件复制到/etc/dhcp目录
cp /usr/share/doc/dhcp-4.2.5/dhcpd.conf.example /etc/dhcp/dhcpd.conf
2,编辑dhcpd.conf
vi /etc/dhcp/dhcpd.conf
3,配置文件示例如下:
47 subnet 172.16.60.0 netmask 255.255.255.0 { 48 range 172.16.60.100 172.16.60.200; 49 option domain-name-servers 172.16.0.1; 50 option domain-name "cluster.local"; 51 option routers 172.16.0.1; 52 option broadcast-address 172.16.60.255; 53 next-server 172.16.60.1; 54 default-lease-time 600; 55 max-lease-time 7200; 56 filename "pxelinux.0"; 57 }
启动服务
启动所有服务,并设置开机自动启动
systemctl start httpd
systemctl start xinetd
systemctl start dhcpd
systemctl enable httpd
systemctl enable xinetd
systemctl enable dhcpd
配置防火墙
firewall-cmd --permanent --add-service=http ## Port 80 firewall-cmd --permanent --add-service=dhcp ## Port 67 firewall-cmd --permanent --add-port=69/udp ## Port for TFTP firewall-cmd --permanent --add-port=69/tcp ## Port for TFTP firewall-cmd --reload ## 重载配置
验证PXE安装
PXE Clinet可以正常获取到引导菜单,安装CentOS 7.3-GUI
选择相应的系统后,系统全程自动安装,无需人工干预
系统安装完成
验证最小化安装
PXE启动菜单中的故障修复功能页

发表评论