一、场景介绍
当我们要部署大批量的服务器时,传统的光盘或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台服务器完成无人值守安装,拓扑图为:
无人值守的安装流程为:
(l)ient端启动后,会在内网发广播请求地址
(2)DHCP服务器收到请求后会给Client端分配一个IP地址,并同时告诉Client端TFTP服务器的地址
(3)客户端从TFTP服务器获取启动文件,启动文件中包含自动应答文件ks.cfg的地址指向
(4)客户端根据自动应答文件中的参数设置和安装树位置指向进行安装
二、安装前期准备
1.按规划修改每台服务器的IP地址
2.关闭服务器上的selinux,修改后并不会立即生效,建议重启操作系统
3.关闭防火墙,service iptables stop 否则Client端会报错,关闭!关闭!关闭!如果不想让iptables开机启动使用chkconfig iptables off
4.插入光盘并挂在至/media目录下
5.使用rm -f $(ls . | grep -v 'Me')将/etc/yum.repo.d/目录下其他yum源删除,只保留CentOS-Media源,并修改url的位置。为什么要删除其他的yum源,因为指定cost为100后,它还是会找其他的yum源而不是Media这个,为了减少干扰就删除了,或者将其他yum源的enable改为0也行
三、安装步骤
1.安装DHCP服务器
(1)使用yum -y install dhcp安装dhcp服务
(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。
(3)在/etc/sysconfig/dhcpd中指定提供DHCP服务的网口,此处是eth0
(4)启动dhcp服务,并设置开启自动启动
(5)DHCP默认使用的是UDP协议,检查端口侦听是否正常
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服务,节省了内存资源
另外需要说明的一点是:从tftp的配置文件中发现tftp的根目录为/var/lib/tftpboot,所以安装DHCP服务器步骤(2)中filename "/pxelinux.0"文件就应放在/var/lib/tftpboot目录中
(4)查看TFTP所使用的69号端口是否正常监听
3.安装http服务
(1)使用yum -y inistall httpd安装httpd服务
(2)使用service httpd start && chkconfig httpd on启动httpd服务并设置开机启动
(3)创建一个centos6目录,将光盘的内从再挂载到该目录,不管怎么弄,只要把安装光盘内容能让客户端通过web访问即可,它的作用是在ks.cfg文件中提供安装树的url指向,可以是http或NFS等
(4)查看htppd服务器的80端口是否正常监听,服务是否正常
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/
(4)类似于isolinux.cfg给isolinux.bin提供配置文件一样,我们也需要给pxelinux.0提供一个配置文件,且配置文件需要放在/var/lib/tftpboot/pxelinux.cfg这个专门的目录中
(5)isolinux.cfg文件当模板,复制到/var/lib/tftpboot/pxelinux.cfg/default需要重命名为default。至此,启动环境已经完成
5.第一次测试,新建一台服务器选择网卡启动,看到Client在获取到IP后能够进入安装界面,说明可以正常获取到TFTP上的启动文件,需要说明的此时他还会再自动获取一次IP地址,原因是此时不再是TFTP的阶段而是anaconda阶段,所以需要再次获取一次地址,在他的配置文件anaconda.cfg中能看到这点
6.配置ks.cfg文件
(1)ks文件可以由system-config-kiskstart生成,推荐使用现有ks文件当模板,在管理员的家目录下有个anaconda-ks.cfg文件,可以用它来当模板
(2)拷贝anaconda.cfg文件至/var/www/html目录下重命名为ks.cfg,注意此处该文件的读取权限只有管理员有,而自动安装时获取这个文件是由apache发起,所以匹配的是apache用户权限,从而无法访问
(3)修改ks.cfg文件权限,让其他用户有读取权限
(4)修改ks.cfg文件,将安装方式改为url并指定安装树位置和repo位置,并设置磁盘分区,管理员密码可使用grub-crypt方式加密后将字符串粘贴至此
(5)回到TFTP服务器在pxe的配置文件/var/lib/tftpboot/pxelinux.cfg/default内指明ks文件的路径,如果有多网卡还需要指明使用ks安装的网卡,不指定的话会在安装时让你手动指定,就达不到自动化安装的目的
(6)再次测试,可以成功自动安装,至此,全部操作完成