kickstart 自动化安装

1、 背景介绍
现在很多企业都有这样的需求,一次安装多台服务器,常规的光盘安装即费时也费力,只能一台一台的安装,当服务器数量几十到几百台的时候,这样安装效率就大大降低了,这样就诞生了自动化部署软件,常用的有kickstart和cubbler

1.1什么是PXE
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)或MTFTP(multicasttrivial file transfer
protocol)协议下载一个启动软件包到本机内存中执行,由这个启动软件包完成终端(客户?)基本软件设置,从而引导预先安装在服务器中的终端操作系统。PXE可以引导多种操作系统,如:Windows95/98/2000/windows2003/windows2008/winXP/win7/win8,linux等。

1.2 kickstart工作机制
1).PXE Client向DHCP发送请求
PXE Client从自己的PXE网卡启动,通过PXEBootROM(自启动芯片)会以UDP(简单用户数据报协议)发送一个广播请求,向本网络中的DHCP服务器索取IP。
2).DHCP服务器提供信息
DHCP服务器收到客户端的请求,验证是否来至合法的PXEClient的请求,验证通过它将给客户端一个“提供”响应,这个“提供”响应中包含了为客户端分配的IP地址、pxelinux启动程序(TFTP)位置,以及配置文件所在位置。
3).PXE客户端请求下载启动文件
客户端收到服务器的“回应”后,会回应一个帧,以请求传送启动所需文件。这些启动文件包括:pxelinux.0、pxelinux.cfg/default、vmlinuz、initrd.img等文件。
4).Boot Server响应客户端请求并传送文件
当服务器收到客户端的请求后,他们之间之后将有更多的信息在客户端与服务器之间作应答, 用以决定启动参数。BootROM由TFTP通讯协议从Boot Server下载启动安装程序所必须的文件(pxelinux.0、pxelinux.cfg/default)。default文件下载完成后,会根据该文件中定义的引导顺序,启动Linux安装程序的引导内核。
5).请求下载自动应答文件
客户端通过pxelinux.cfg/default文件成功的引导Linux安装内核后,安装程序首先必须确定你通过什么安装介质来安装linux,如果是通过网络安装(NFS, FTP, HTTP),则会在这个时候初始化网络,并定位安装源位置。接着会读取default文件中指定的自动应答文件ks.cfg所在位置,根据该位置请求下载该文件。

案例:
环境:一个局域网内,一台服务器(开启Kickstart+DHCP+NGINX(httpd)+TFTP+PXE) ,为其他客户端提供kickstart自动安装

要使用kickstart 安装平台,包括的完整架构为:Kickstart+DHCP+NGINX(httpd)+TFTP+PXE

服务端配置:

~]# iptables -F
~]# setenfore 0

(1) 挂载挂盘

~]# mount /dev/cdrom /mnt

(2)安装配置http

~]# yum intall httpd -y
~]# cp -fr /mnt/* /var/www/html/centos

(3)安装配置TFTP

~]# yum install tftp-server -yum
~]# vim /etc/xinent.d/tftp
server_args = -s /var/lib/tftpboot 默认目录,改为/tftpboot
disable = yes 改为 no

~]# /etc/init.d/xinetd start
~]# mkdir /tftpboot
~]# cp /mnt/images/pxeboot/initrd.img /tftpboot/
~]# cp /mnt/images/pxeboot/vmlinuz /tftpboot/
~]# cp /mnt/isolinux/boot.msg /tftpboot/
~]# mkdir /tftpboot/pxelinux.cfg
~]# cp /mnt/isolinux/isolinux.cfg /tftpboot/pxelinux.cfg/default
~]# vim /tftpboot/pxelinux.cfg/default
default centos6.8 默认改为新添加的
label centos6.8
kernel vmlinuz
append ks=http://192.168.110.19/centos6.8/ks.cfg ksdevice=0 initrd=initrd.img

(4)配置dhcp

~]# yum install -y dhcp

ddns-update-style interim;
ignore client-updates;
next-server 192.168.110.19;
filename "pxelinux.0";
option routers 192.168.110.254;
option subnet-mask 255.255.255.0;
allow booting;
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.110.0 netmask 255.255.255.0 {
range dynamic-bootp 192.168.110.18 192.168.110.50;
}

~]# /etc/init.d/dhcpd start

(5)kickstart文件
可以使用 system-config-kickstart生成 或者自己编写ks.cfg文件

~]# yum install system-config-kickstart -y

~]# vim /var/www/html/centos/ks.cfg

firewall --disabled
install
url --url="http://192.168.110.19/centos6.8"
rootpw --iscrypted $1$Ccr5k0ki$fc3VigVjS8WsEQbB09y/R.
auth --useshadow --passalgo=sha512
text
firstboot --disable
keyboard us
lang en_US
selinux --disabled
logging --level=info
reboot
timezone Asia/Shanghai
network --bootproto=dhcp --device=eth0 --onboot=on
bootloader --location=mbr
zerombr
clearpart --all --initlabel
part / --fstype="ext4" --grow --size=1

%packages --nobase
@core

%end

注: 本例子ks.cfg 只分一个根分区