对于单台服务器上的OS安装,我们可以手动进行,若是一个集群服务中的多个节点超过50台服务器的OS安装,手动安装显然是不可行的,因此作为系统运维工程师自动化运维是我们必不可缺的技能。
在Centos7 操作系统上实现PXE的自动化部署OS,所依赖的服务有:dhcp, tftp, fileserver(http,ftp,nfs),依赖的安装源:kickstart文件,可引导内核-vimlinuz,initrd.img文件。概念图如下。
准备两台虚拟机,一台做PXE服务器,一台不需要安装系统,用于后续PXE客户端装机
准备一台初始化完成虚拟机,之前文章有详细介绍。
运行DHCP服务,用来分配地址,定位引导程序
引导程序:微代码,存放在TFTP服务器中
运行TFTP服务器,提供引导程序下载
TFTP服务器时UDP协议,端口号69
镜像文件存放在:vsftpd,TCP协议,端口号20,21
PXE Client 从自己的PXE网卡启动,向本网络中的DHCP服务器索取IP
DHCP 服务器返回分配给客户机的IP 以及PXE文件的放置位置(该文件一般是放在一台TFTP服务器上)
PXE Client 向本网络中的TFTP服务器索取pxelinux.0 文件
PXE Client 取得pxelinux.0 文件后之执行该文件
根据pxelinux.0 的执行结果,通过TFTP服务器加载内核和文件系统
进入安装画面, 此时可以通过选择HTTP、FTP、NFS 方式之一进行安装
需要两张网卡,一张做桥接模式,一张做VMnet1
服务器地址为192.168.158.10
[root@server1 ~] yum -y install tftp
[root@server1 ~]vi /etc/xinetd.d/tftp #进入配置文件修改内容
{
socket_type = dgram
protocol = udp
wait = yes
user = root
server = /usr/sbin/in.tftpd
server_args = -s /var/lib/tftpboot -c #-s 指定存储路径 -c 允许上传
disable = no #开启tftp
per_source = 11
cps = 100 2
flags = IPv4
}
[root@server1 ~] yum -y install dhcp vsftpd
[root@server1 ~] vi /etc/dhcp/dcpd.conf
ddns-update-style none;
next-server 192.168.158.10; #指定tftp服务器地址
filename"/pxelinux.0"; #引导文件tftp上的位置
subnet 192.168.1.0 netmask 255.255.255.0 {
range 192.168.158.100 192.168.158.200; #通过PXE装机的主机可以动态获取地址
option routers 192.168.158.10; #服务器地址
option domain-name-servers 8.8.8.8, 114.114.114.114;
}
[root@client1 ~] mount /dev/cdrom /var/ftp/pub/
[root@client1 ~] yum -y install syslinux
复制网络启动所需要文件到服务器的根目录下
[root@server1 ~] cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
[root@server1 ~] mkdir /var/lib/tftpboot/pxelinux.cfg/
[root@server1 ~] cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
[root@server1 ~] cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
[root@server1 ~] cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
[root@server1 ~] cp /mnt/isolinux/vesamenu.c32 /var/lib/tftpboot/
[root@server1 ~] vi /var/lib/tftpboot/pxelinux.cfg/default
default auto
prompt 1
label auto
kernel vmlinuz
append initrd=initrd.img method=ftp://192.168.158.10/pub
ks=ftp://192.168.158.10/ks.cfg
label linux text
kernel vmlinuz
append text initrd=initrd.img method=ftp://192.168.158.10/pub
label linux rescue
kernel vmlinuz
append rescue initrd=initrd.img method=ftp://192.168.158.10/pub
[root@server1 ~] systemctl start dhcpd
[root@server1 ~] systemctl start vsftp
[root@server1 ~] systemctl stop firewalld
[root@server1 ~] setenforce 0
[root@server1 ~] yum -y install system-config-kickstart
[root@server1 ~] vi anaconda-ks.cfg
复制红框内的内容到/var/ftp/ks.cfg中
以上就配置完成了,
网卡类型为VMnet1
新建一台虚拟机启动,选择网络启动,开始PXE远程安装,无需任何操作,出现如下界面,可以看到DHCP服务动态分配到了192.168.158.101的地址,以及正在加载一些引导程序。最终加载完成到安装界面。