嘘~ 正在从服务器偷取页面 . . .

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


PXE简介

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启动菜单中的故障修复功能页


文章作者: kclouder
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 kclouder !
  目录