【每日一记9】+第2天 Kickstart PXE批量安装linux
  

沧海 723

{{ttag.title}}

1.1  Kickstart使用背景介绍

随着公司业务不断增加,经常需要采购新服务器,并要求安装Linux系统,并且要求Linux版本要一致,方便以后的维护和管理,每次人工安装linux系统会浪费掉更多时间,如果我们有办法能节省一次一次的时间岂不更好呢?
大中型互联网公司一次采购服务器上百台,如果采用人工手动一台一台的安装,一个人得搞坏N张光盘,得多少个加班加点才能完成这项”艰巨”的任务呢,我们可以看到全人工来完成这样的工作太浪费人力了,有没有自动化安装平台呢,通过一台已存在的系统然后克隆或者复制到新的服务器呢。Kickstart可以毫不费力的完成这项工作。
PXE(preboot execute environment,预启动执行环境)是由Intel公司开发的最新技术,工作于Client/Server的网络模式,支持工作站通过网络从远端服务器下载映像,并由此支持通过网络启动操作系统,在启动过程中,终端要求服务器分配IP地址,再用TFTPtrivial file transfer protocol)协议下载一个启动软件包到本机内存中执行。
要使用Kickstart安装平台,包括的完整架构为:Kickstart+DHCP+NFS(HTTP)+TFTP+PXE,从架构可以看出,大致需要安装的服务,例如dhcp、tftp、httpd、kickstart/pxe等。
1.2  Kickstart企业实战配置
基于YUM安装DHCP、TFTP、HTTPD服务,指令如下:
yum  install  httpdhttpd-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=hdABEL=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'
    
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系统。


打赏鼓励作者,期待更多好文!

打赏
暂无人打赏

午夜幽魂 发表于 2020-7-16 20:59
  
好文章,学习下。
发表新帖
热门标签
全部标签>
每日一问
技术笔记
功能体验
技术咨询
新版本体验
2023技术争霸赛专题
干货满满
技术盲盒
标准化排查
产品连连看
GIF动图学习
技术晨报
信服课堂视频
安装部署配置
运维工具
秒懂零信任
自助服务平台操作指引
用户认证
答题自测
安全攻防
每日一记
通用技术
云计算知识
SDP百科
深信服技术支持平台
畅聊IT
sangfor周刊
资源访问
排障笔记本
专家问答
技术圆桌
在线直播
MVP
网络基础知识
升级
上网策略
测试报告
日志审计
问题分析处理
流量管理
原创分享
解决方案
VPN 对接
项目案例
SANGFOR资讯
专家分享
技术顾问
信服故事
功能咨询
终端接入
授权
设备维护
迁移
地址转换
虚拟机
存储
加速技术
产品预警公告
玩转零信任
信服圈儿
S豆商城资讯
技术争霸赛
「智能机器人」
追光者计划
社区帮助指南
答题榜单公布
纪元平台
卧龙计划
华北区拉练
天逸直播
以战代练
山东区技术晨报
文档捉虫活动
齐鲁TV
华北区交付直播
每周精选

本版版主

461
244
13

发帖

粉丝

关注

本版达人

feeling

本周分享达人

新手29676...

本周提问达人