Centos7 实战Kickstart 批量系统部署

1、kickstart 使用背景介绍
大家想个问题,我们平时手动光盘安装一台linux系统的多久能完成?10分钟?半小时?1小时还是一上午?领导说小李明天到100台服务器你统一装成linux系统,周日交工。啊?100台?你是不是要哭了…… 于是乎,kickstart 自动化安装平台就诞生了,哇哈哈!
2、kickstart 原理
① PXE 客户端发送UDP广播请求
  PXE 客户端从自己的PXE网卡启动,通过PXE BootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。
② DHCP服务器提供信息
  DHCP服务器收到客户端的请求,验证是否来至合法的PXE 客户端的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
③ PXE客户端请求下载启动文件
  客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
④ TETP服务器响应客户端请求并传送文件
  当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从tftp服务器 下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
⑤ 请求下载自动应答文件
  客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。
⑥ 客户端安装操作系统
  将ks.cfg文件下载回来后,通过该文件找到http镜像,并按照该文件的配置请求下载安装过程需要的软件包。
  http镜像和客户端建立连接后,将开始传输软件包,客户端将开始安装操作系统。
  安装完成后,将提示重新引导计算机。

所有要使用kickstart安装平台,完整架构包括(dhcp、http、tftp、pxe)等

3、kickstart 平台搭建
基于yum安装dhcp、tftp、httpd服务,
yum install httpd httpd-devel tftp-server xinetd dhcpd -y

1)配置tftp服务,开启tftp服务
 修改配置文件 /etc/xinetd.d/tftp 如下:
 cat>/etc/xinetd.d/tftp<<EOF
    service tftp
                    {
                    disable = no
                    socket_type = dgram
                    protocol = udp
                    wait = yes
                    user = root
                    server = /usr/sbin/in.tftpd
                    server_args = -u nobody -s /tftpboot
                    per_source = 11
                    cps = 100 2
                    flags = IPv4
                    }
        注:只需要disable=yes 改成 no 即可

2 )TFTP+PXE 配置
#挂载挂盘
mount /dev/cdrom /mnt/cdrom
#安装syslinux必备文件
yum install syslinux syslinux-devel -y
#创建配置文件目录并拷贝配置文件
mkdir -p /var/lib/tftpboot/pxelinux.cfg
\cp /mnt/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
\cp /usr/share/syslinux/vesamenu.c32 /var/lib/tftpboot/
\cp /mnt/images/pxeboot/vmlinuz /var/lib/tftpboot/
\cp /mnt/images/pxeboot/initrd.img /var/lib/tftpboot/
\cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
\chmod 644 /var/lib/tftpboot/pxelinux.cfg/default
3)配置TFTPBOOT引导文件,
cat >>/var/lib/tftpboot/pexlinux.cfg/default <<EOF
default vesamenu.c32
timeout 10
display boot.msg
menu clear
menu background splash.png
menu title CentOS Linux 7
label linux
menu label ^Install CentOS Linux 7
menu default
kernel vmlinuz
append initrd=initrd.img inst.repo=http://192.168.10.128/centos7 quiet ks=http://192.168.10.128/ks.cfg
label check
menu label Test this ^media & install CentOS Linux 7
kernel vmlinuz
append initrd=initrd.img inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 rd.live.check quiet
EOF

注解:192.168.10.128是kickstart服务器地址,centos7是httpd共享linux镜像的目录,ks.cfg是kickstart主