随着公司业务不断增加,经常需要采购新服务器,并要求安装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等。
基于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
要实现远程安装系统,需要在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
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
远程系统安装,客户端需要下载系统所需的软件包,所以需要使用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
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
如果安装时报错如下:
需要调整客户端虚拟机的内存设置为2G+;
在真实环境中,通常我们会发现一台服务器好几块硬盘,做完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系统。
留言与评论(共有 0 条评论) |