第12章 Kickstart系统企业实战

1.1 Kickstart使用背景介绍

随着公司业务不断增加,经常需要采购新服务器,并要求安装Linux系统,并且要求Linux版本要一致,方便以后的维护和管理,每次人工安装linux系统会浪费掉更多时间,如果我们有办法能节省一次一次的时间岂不更好呢?

大中型互联网公司一次采购服务器上百台,如果采用人工手动一台一台的安装,一个人得搞坏N张光盘,得多少个加班加点才能完成这项”艰巨”的任务呢,我们可以看到全人工来完成这样的工作太浪费人力了,有没有自动化安装平台呢,通过一台已存在的系统然后克隆或者复制到新的服务器呢。Kickstart可以毫不费力的完成这项工作。

PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTP(trivial file transfer protocol)协议下载一个启动软件包到本机内存中执行。

要使用Kickstart安装平台,包括的完整架构为:Kickstart+DHCP+NFS(HTTP)+TFTP+PXE,从架构可以看出,大致需要安装的服务,例如dhcp、tftp、httpd、kickstart/pxe等。

1.2 Kickstart企业实战配置

基于YUM安装DHCP、TFTP、HTTPD服务,指令如下:

yum install  httpd httpd-devel tftp-server xinetd dhcp* -y

配置tftp服务,开启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

}

EOF

只需要把disable = yes改成disable = no即可,基于sed命令也可以实现:

sed -i ‘/disable/s/yes/no/g’/etc/xinetd.d/tftp

1.3 TFTP+PXE配置

要实现远程安装系统,需要在TFTPBOOT目录指定相关PXE内核模块及相关参数,配置步骤如下:

#挂载本地光盘

mount     /dev/cdrom    /mnt

#安装syslinux必备文件

yum install syslinux syslinux-devel -y

#软链接至/根系统下;

ln -s /var/lib/tftpboot /

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

1.4 配置TFTPBOOT引导案例

cat>/tftpboot/pxelinux.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.0.131/centos7 quiet ks=http://192.168.0.131/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.0.131是kickstart服务器,/centos7是HTTPD共享linux镜像的目录,即linux存放安装文件的路径:

ks.cfg是kickstart主配置文件;

设置timeout 10 /*超时时间为10S */;

ksdevice=ens33代表当我们有多块网卡的时候,要实现自动化需要设置从ens33安装。

TFTP配置完毕,由于是TFTP是非独立服务,需要依赖xinetd服务来启动,启动命令为:

chkconfig    tftp  –level 35 on  && service  xinetd  restart 

1.5 HTTPD+KICKSTART配置

远程系统安装,客户端需要下载系统所需的软件包,所以需要使用NFS或者httpd把镜像文件共享出来。

mkdir -p /var/www/html/centos7/

mount /dev/cdrom /var/www/html/centos7/

#cp /dev/cdrom/* /var/www/html/centos7/ (可选配置)

配置kickstart,可以使用system-kickstart系统软件包来配置,ks.cfg配置文件内容如下:

cat>/var/www/html/ks.cfg<<EOF

install

text

keyboard ‘us’

rootpw www.jfedu.net

timezone Asia/Shanghai

url –url=http://192.168.0.131/centos7

reboot

lang zh_CN

firewall –disabled

network –bootproto=dhcp –device=ens33

auth –useshadow –passalgo=sha512

firstboot –disable

selinux disabled

bootloader –location=mbr

clearpart –all –initlabel

part /boot –fstype=”ext4″ –size=300

part / –fstype=”ext4″ –grow

part swap –fstype=”swap” –size=512

%packages

@base

@core

%end

EOF

1.6 DHCP服务配置演练

DHCP服务配置文件代码如下:

cat>/etc/dhcp/dhcpd.conf<<EOF

ddns-update-style interim;

ignore client-updates;

next-server 192.168.0.131;

filename “pxelinux.0”;

allow booting;

allow bootp;

subnet 192.168.0.0 netmask 255.255.255.0 {

#default gateway

option routers 192.168.0.1;

option subnet-mask 255.255.255.0;

range dynamic-bootp 192.168.0.180 192.168.0.200;

host ns {

hardware ethernet 00:1a:a0:2b:38:81;

fixed-address 192.168.0.101;}

}

EOF

重启各个服务,启动新的客户端验证测试:

service httpd restart

service dhcpd restart

service xinetd restart

1.7 开启新虚拟机,BIOS以网卡启动

如果安装时报错如下:

需要调整客户端虚拟机的内存设置为2G+;

1.8 Kickstart企业生产环境扩展

在真实环境中,通常我们会发现一台服务器好几块硬盘,做完raid,整个硬盘有等10T,如果来使用kickstart自动安装并分区呢;一般服务器硬盘超过2T,如何来使用kickstart安装配置呢?这里就不能使用MBR方式来分区,需要采用GPT格式来引导并分区。需要在ks.cfg末尾添加如下命令来实现需求:

%pre
parted -s /dev/sdb mklabel gpt
%end

为了实现kickstart安装完系统后,自动初始化系统等等工作,我们可以在系统安装完后,自动执行定制的脚本,需要在ks.cfg末尾加入如下配置:

%post

mount -t nfs 192.168.0.79:/centos/init /mnt

cd /mnt/ ;/bin/sh auto_init.sh

%end

KICKSTART所有配置就此告一段落,真实环境需要注意,新服务器跟kickstart最后独立在一个网络,不要跟办公环境或者服务器机房网络混在一起,如果别的机器以网卡就会把它的系统重装成Linux系统。