一、场景介绍

当我们要部署大批量的服务器时,传统的光盘或U盘安装系统就不再适合,为了应对这种场景,PXE配合kickstart无人值守安装就是一种很好的方法。

1.什么是PXE

PXE是一种引导程序,分为client端和server端,首先,要进行自动化安装的服务器必须有一块支持PXE的网卡,即网卡的ROM中必须有PXE client。当计算机引导时,BIOS把PXE client与TFTP client调入内存(TFTP client也内置于网卡ROM中),并将远端的文件通过网络下载到本地运行,所以PEX引导的执行还需要能够给该服务器提供地址的DHCP服务和存放文件的TFTPserver。

2.什么事kickstart

kickstart是一种无人值守安装方式。他是将安装过程中需要人为交互输入的各种参数保存在一个ks.cfg的文件中,安装过程中遇到需要填写参数的时候会自动去找该文件获取参数,如果找不到,就会停在当前界面等待人工输入。

3.安装流程

计划部署2台服务器完成无人值守安装,拓扑图为:

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第1张图片

无人值守的安装流程为:

(l)ient端启动后,会在内网发广播请求地址

(2)DHCP服务器收到请求后会给Client端分配一个IP地址,并同时告诉Client端TFTP服务器的地址

(3)客户端从TFTP服务器获取启动文件,启动文件中包含自动应答文件ks.cfg的地址指向

(4)客户端根据自动应答文件中的参数设置和安装树位置指向进行安装

二、安装前期准备

1.按规划修改每台服务器的IP地址

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第2张图片

2.关闭服务器上的selinux,修改后并不会立即生效,建议重启操作系统

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第3张图片

3.关闭防火墙,service iptables stop 否则Client端会报错,关闭!关闭!关闭!如果不想让iptables开机启动使用chkconfig iptables off

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第4张图片

4.插入光盘并挂在至/media目录下

wKiom1egGZfxEwI4AAATgObvEyg743.png-wh_50

5.使用rm -f $(ls . | grep -v 'Me')将/etc/yum.repo.d/目录下其他yum源删除,只保留CentOS-Media源,并修改url的位置。为什么要删除其他的yum源,因为指定cost为100后,它还是会找其他的yum源而不是Media这个,为了减少干扰就删除了,或者将其他yum源的enable改为0也行

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第5张图片

三、安装步骤

1.安装DHCP服务器

(1)使用yum -y install dhcp安装dhcp服务

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第6张图片

(2)编辑/etc/dhcp/dhcpd.conf文件,或者可以拷贝一个模板后,在模板基础上修改,命令为:

cp /usr/share/doc/dhcp-4.1.1/dhcpd.conf.sample /etc/dhcp/dhcpd.conf。此处需要说明的是:next-server就是TFTP服务器的地址;filename是告诉Client端引导文件是TFTP服务器根目录下一个叫pxelinux.0的文件,这2个参数都是Client端在想DHCP获取IP地址时,由DHCP一并发送给Client端的,pxelinux.0文件是获得IP地址后Client端第一个执行的文件,类似于MBR。

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第7张图片

(3)在/etc/sysconfig/dhcpd中指定提供DHCP服务的网口,此处是eth0

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第8张图片

(4)启动dhcp服务,并设置开启自动启动

wKioL1egGZijIPzDAAAY3lDm_yM930.png-wh_50

(5)DHCP默认使用的是UDP协议,检查端口侦听是否正常

wKiom1egGZnD1s1vAAA_gVUnq38407.png-wh_50

2.安装TFTP服务器

(1)使用yum -y install tftp-server安装tftp服务器

(2)使用chkconfig tftp on ;chkconfig xinetd on 开启tftp和xinetd服务,从chkconfig --list中能看到tftp和xinetd服务已经开启。此处需要说明的是:xinetd服务是什么?我们知道,服务是常驻于内存中的进程,会消耗一定的系统资源,有一些服务可能偶尔会用到,所以一直开着对内存资源就是一种浪费,这种服务就统一由xinetd服务来代管,当需要用到此服务时,xinetd会唤醒相应服务,这样只需要启动一个xinetd服务,节省了内存资源

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第9张图片

另外需要说明的一点是:从tftp的配置文件中发现tftp的根目录为/var/lib/tftpboot,所以安装DHCP服务器步骤(2)中filename "/pxelinux.0"文件就应放在/var/lib/tftpboot目录中

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第10张图片

(4)查看TFTP所使用的69号端口是否正常监听

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第11张图片

3.安装http服务

(1)使用yum -y inistall httpd安装httpd服务

(2)使用service httpd start && chkconfig httpd on启动httpd服务并设置开机启动

(3)创建一个centos6目录,将光盘的内从再挂载到该目录,不管怎么弄,只要把安装光盘内容能让客户端通过web访问即可,它的作用是在ks.cfg文件中提供安装树的url指向,可以是http或NFS等

wKiom1egGZrzlOsUAAA1C9R8Mb8679.png-wh_50

(4)查看htppd服务器的80端口是否正常监听,服务是否正常

wKioL1egGZvhN_F-AABGCsM0PxQ510.png-wh_50

4.PXE配置引导

(1)前面所提到的pxelinux.0文件是在syslinux引导程序中,所以要先安装syslinux程序,yum -y install syslinux

(2)拷贝/var/www/html/centos6/p_w_picpaths/pxeboot/目录下vmlinuz和initrd.img文件;/var/www/html/centos6/isolinux/目录下的boot.msg、vesamenu.c32、splash.jpg文件拷贝到tftp服务器根部录下/var/lib/tftpboot/,因为pxelinux.0文件代替了isolinux.bin,所以不用拷贝

(3)将pxelinux.0文件拷贝到ftfp服务器的根部录下 cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/ 

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第12张图片

(4)类似于isolinux.cfg给isolinux.bin提供配置文件一样,我们也需要给pxelinux.0提供一个配置文件,且配置文件需要放在/var/lib/tftpboot/pxelinux.cfg这个专门的目录中

wKiom1egGZugqm5SAAASPQBVEMM836.png-wh_50

(5)isolinux.cfg文件当模板,复制到/var/lib/tftpboot/pxelinux.cfg/default需要重命名为default。至此,启动环境已经完成 

wKiom1egGZzj_1RpAAAUMqqyEGM460.png-wh_50

5.第一次测试,新建一台服务器选择网卡启动,看到Client在获取到IP后能够进入安装界面,说明可以正常获取到TFTP上的启动文件,需要说明的此时他还会再自动获取一次IP地址,原因是此时不再是TFTP的阶段而是anaconda阶段,所以需要再次获取一次地址,在他的配置文件anaconda.cfg中能看到这点

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第13张图片

6.配置ks.cfg文件

(1)ks文件可以由system-config-kiskstart生成,推荐使用现有ks文件当模板,在管理员的家目录下有个anaconda-ks.cfg文件,可以用它来当模板

wKioL1egGZzz89n9AAAihZVTtJM217.png-wh_50

(2)拷贝anaconda.cfg文件至/var/www/html目录下重命名为ks.cfg,注意此处该文件的读取权限只有管理员有,而自动安装时获取这个文件是由apache发起,所以匹配的是apache用户权限,从而无法访问

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第14张图片

(3)修改ks.cfg文件权限,让其他用户有读取权限

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第15张图片

(4)修改ks.cfg文件,将安装方式改为url并指定安装树位置和repo位置,并设置磁盘分区,管理员密码可使用grub-crypt方式加密后将字符串粘贴至此

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第16张图片

(5)回到TFTP服务器在pxe的配置文件/var/lib/tftpboot/pxelinux.cfg/default内指明ks文件的路径,如果有多网卡还需要指明使用ks安装的网卡,不指定的话会在安装时让你手动指定,就达不到自动化安装的目的

wKioL1egGZ6Dd-aeAAAhly7REPQ927.png-wh_50

(6)再次测试,可以成功自动安装,至此,全部操作完成

PXE+DHCP+TFTP+KickStart批量安装CentOS详解_第17张图片