前言
kickstart在配置过程中需要安装和配置DHCP、Xinetd、PXE、FTP等多项服务并且配置文件和修改目录的操作繁多,今天分享一个脚本方便大家搭建服务,降低时间成本。
注:脚本调用的样例ks配置文件仅适用于全新操作系统时使用,会格式化所有分区,如果需要保留分区文件,请自己制作ks配置文件!
一、kickstart是什么?
kickstart是一款PXE远程安装操作系统的工具,可以实现无人值守批量部署服务器的操作系统,可以定制个性化的安装需求,安装后可以调动脚本对系统进行一些初始化配置.
二、使用步骤
1.脚本内容
代码如下:
#/bin/bash
#KickStart无人值守
#安装依赖
yum install -y dhcp xinetd tftp-server vsftpd syslinux system-config-kickstart &> /dev/null
#检查系统镜像和ks配置文件,请将镜像和ks文件与脚本放置统一目录下并改成下列名称
ls CentOS7464.iso ks7.cfg
if [ $? -ne 0 ]
then
echo "未找到安装镜像和KS配置文件,请与脚本放置同一目录下"
exit
fi
#DHCP配置 这部分需要手动输入
dhcpconf="/etc/dhcp/dhcpd.conf"
read -p "网段地址[example 172.16.0.0]:" subnet
read -p "子网掩码[example 255.255.0.0]:" netmask
read -p "IP池头地址[example 172.16.0.50]:" nstart
read -p "IP池尾地址[example 172.16.0.200]:" nend
read -p "网关地址[example 172.16.0.1]:" gateway
read -p "广播地址[example 172.16.255.255]:" bcadd
read -p "本机地址:" localnet
cat << EOF >> ${dhcpconf}
subnet ${subnet} netmask ${netmask} {
range ${nstart} ${nend};
option domain-name-servers 202.96.64.68;
option routers ${gateway};
option broadcast-address ${bcadd};
default-lease-time 600;
max-lease-time 7200;
next-server ${localnet};
filename "pxelinux.0";
}
EOF
systemctl start dhcpd
systemctl enable dhcpd &> /dev/null
#TFTP配置
tftpconf="/etc/xinetd.d/tftp"
sed -i "/[\t]di/s/yes/no/" ${tftpconf}
systemctl start xinetd
systemctl enable xinetd &> /dev/null
echo "检测Xinetd"
which netstat &> /dev/null
if [ $? -ne 0 ]
then
yum install -y net-tools &> /dev/null
else
netstat -antplu | grep xinetd &> /dev/null
if [ $? -eq 0 ]
then
echo "TFTP is running."
else
echo "TFTP not running."
fi
fi
#FTP配置 挂载镜像
ftpdir="/var/ftp/iso/C7464/"
mkdir /iso/
mkdir -p ${ftpdir}
mv /root/CentOS7464.iso /iso/
echo "/iso/CentOS7464.iso /var/ftp/iso/C7464 iso9660 defaults 0 0" >> /etc/fstab
mount -a
systemctl start vsftpd
systemctl enable vsftpd &> /dev/null
netstat -antplu | grep vsftpd &> /dev/null
if [ $? -eq 0 ]
then
echo "FTP is running."
else
echo "FTP not running."
fi
echo -e '系统镜像存放位置:/var/ftp/iso \nks配置文件存放位置/var/ftp/pub'
#Pxelinux.0引导 装载内核
boot="/var/lib/tftpboot/"
pxe="/usr/share/syslinux/pxelinux.0"
drive="/var/ftp/iso/C7464/isolinux/"
default="/var/lib/tftpboot/pxelinux.cfg/default"
cp ${pxe} ${boot}
cp ${drive}* ${boot}
mkdir ${boot}pxelinux.cfg
cp ${boot}isolinux.cfg ${boot}pxelinux.cfg/default
cp /root/ks7.cfg /var/ftp/pub/
#修改ks配置文件中FTP镜像源的地址
sed -i.bak "s/ipaddr/${localnet}/" /var/ftp/pub/ks7.cfg
#写入PXE引导
cat << EOF > ${default}
default linux
timeout 60
label linux
menu label Full-auto ^Install CentOS7
menu default
kernel vmlinuz
append initrd=initrd.img inst.stage2=ftp://${localnet}/iso/C7464 inst.ks=ftp://${localnet}/pub/ks7.cfg quiet
menu end
EOF
#此条为样例ks文件的root密码,如使用自己制作的ks文件,此条无效
echo "新生成主机root密码:123"
2.ks样例文件
代码如下(示例):注意:客户机内存必须>2G,否则内存空间不够载入minimal镜像
#platform=x86, AMD64, or Intel EM64T
#version=DEVEL
# Install OS instead of upgrade
install
# Keyboard layouts
keyboard 'us'
# Root password
rootpw --iscrypted $1$KbPLaUBg$YDnA9udeJULR/m9gNuhZv0
# System language
lang en_US
# System authorization information
auth --useshadow --passalgo=sha512
# Use text mode install
text
firstboot --disable
# SELinux configuration 关闭SELINUX
selinux --disabled
# Firewall configuration 关闭防火墙
firewall --disabled
# Network information
network --bootproto=dhcp --device=localnet
# Reboot after installation
reboot
# System timezone
timezone Asia/Shanghai --isUtc
# Use network installation FTP镜像目录,注:如果替换请把ip地址改为ipaddr,否则脚本无法成功修改
url --url="ftp://ipaddr/iso/C7464"
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information !清除所有分区!
clearpart --all --initlabel
# Disk partitioning information 分区信息,可根据自己需求修改
part /boot --fstype="xfs" --ondisk=sda --size=1000
part pv.253 --fstype="lvmpv" --ondisk=sda --size=27608
volgroup centos --pesize=4096 pv.253
logvol /var --fstype="xfs" --size=5120 --name=var --vgname=centos
logvol swap --fstype="swap" --size=2000 --name=swap --vgname=centos
logvol / --fstype="xfs" --size=10240 --name=root --vgname=centos
logvol /home --fstype="xfs" --size=10240 --name=home --vgname=centos
#下面是安装后执行的动作,可以是命令或者脚本
%post
%end
总结
其实kickstart服务并不需要使用脚本批量去搭建,平时只需要在生产用笔记本电脑里存一个ks虚拟机就可以了,本文适合像我一样的懒人,还有经常写错配置文件的童鞋,