Kickstart 是什么?
kickstart是一个定义了Linux安装过程的配置文件,比如要在系统中使用的时区、如何对驱动器进行分区、或者应该安装哪些软件包。有了这个文件可以解放双手,让Linux安装过程按照我们预先定义的要求进行自动化安装,同时部署大量主机时十分有用。一般centos系统安装后,会在root目录下生成一个名为anaconda-ks.cfg的kickstart配置文件。
kickstart文件组成
命令段:用于配置系统
install
cdrom #安装介质
lang zh_CN.UTF-8 #安装语言
keyboard us #键盘类型
selinux --enforcing #是否开启selinux
timezone --utc Asia /Shanghai #时区、系统时钟是否使用UTC时间
bootloader --location=mbr --driveorder=sda --append= "crashkernel=auto rhgb quiet"
软件包段:选择要安装的软件包组及软件包
@core #安装
@base #安装
lftp #安装
-zsh #这里说明不安装,但如果有其他安装的文件需要依赖其时,也会安装
脚本段:
%pre #安装过程开始之前执行的脚本;所能够执行的操作较少,因为是简洁版的shell环境;
%post #所有软件包安装完成之后执行的脚本;由于是此时系统已安装完成,所以是完整的shell环境;
指定kickstart配置文件对应格式如下:
kickstart资源 选项格式
CD ks=cdrom:/directory/ks.cfg
硬盘驱动器 ks=hd:device/directory/ks.cfg
FTP服务器 ks=ftp://server.mydomain.com/directory/ks.cfg
HTTP服务器 ks=http://server.mydomain.com/directory/ks.cfg
HTTPS服务器 ks=https://server.mydomain.com/directory/ks.cfg
NFS服务器 ks=nfs:server.mydomain.com:/directory/ks.cfg
其它设备 ks=file:/device/directory/ks.cfg
Kickstart安装部署操作
环境介绍
用于安装Kickstart的主机IP地址为172.16.252.251,os为CentOS 7.6
DHCP服务安装配置
安装DHCP
# 停止防火墙
systemctl stop firewalld && systemctl disabled firewalld
# 关闭SEliunx
vim /etc/selinux/config
... ...
SELINUX=enforcing 改为disabled
......
# 安装dhcp
yum install -y dhcp
配置DHCP
vim /etc/dhcp/dhcpd.conf
option domain-name-servers 223.5.5.5;
default-lease-time 600;
max-lease-time 7200;
log-facility local7;
subnet 172.16.252.0 netmask 255.255.255.0 {
range 172.16.252.100 172.16.252.200;
option routers 172.16.252.2;
next-server 172.16.252.251;
filename "pxelinux.0";
}
启动dhcp服务:
systemctl start dhcpd && systemctl enable dhcpd
镜像挂载
# 安装并启动httpd
yum install httpd -y
systemctl start httpd && systemctl enable httpd
# 设置永久挂载:
# 将本机cdrom中的系统挂载到路径中,也可以将本机中的iso文件挂载
vim /etc/fstab <<EOF
/dev/cdrom /var/www/html/centos iso9660 defaults 0 0
TFTP安装部署
# 安装tftp服务
yum install tftp-server xinetd -y
# 配置tftp
sed -i '/disable/s/yes/no/' /etc/xinetd.d/tftp
# 启动tftp服务
systemctl start xinetd && systemctl enable xinetd
yum -y install syslinux -y
cp /usr/share/syslinux/pxelinux.0 /var/lib/tftpboot/
cp /var/www/html/centos/isolinux/{vesamenu.c32,splash.png,vmlinuz,initrd.img} /var/lib/tftpboot/
mkdir -p /var/lib/tftpboot/pxelinux.cfg
# cp /var/www/html/centos/isolinux/isolinux.cfg /var/lib/tftpboot/pxelinux.cfg/default
cat > /var/lib/tftpboot/pxelinux.cfg/default <<EOF
default vesamenu.c32
timeout 600
menu background splash.png
menu title CentOS 7 Kickstart Install
label linux
menu label ^Install CentOS 7
menu default
kernel vmlinuz
append initrd=initrd.img ks=http://172.16.252.251/ks.cfg
EOF
应答文件配置
vim /etc/yum.repos.d/local.repo
[Deployment CentOS]
name= centos 7 local repo
baseurl=http://172.16.252.251/centos
gpgcheck=0
# 配置系统安装设定
vim /var/www/html/ks.cfg
install
keyboard 'us'
lang en_US
auth --useshadow --passalgo=sha512
rootpw --iscrypted $1$Ov9w.uuf$i5xxnVAy3ZwK7GIEyRymU0
text
firstboot --disable
selinux --disabled
firewall --disabled
reboot
timezone Asia/Shanghai
url --url="http://172.16.252.251/centos"
bootloader --location=mbr
zerombr
clearpart --all --initlabel
# 以下为将分区格式调整为uefi启动,启用lvm分区
bootloader --location=mbr --boot-drive=sda
clearpart --all --initlabel
part /boot/efi --fstype="efi" --ondisk=sda --size=300
part /boot --fstype xfs --ondisk=sda --size=1024
part pv.01 --fstype="lvmpv" --ondisk=sda --size=1 --grow
volgroup centos --pesize=4096 pv.01
logvol /home --fstype=xfs --size=4096 --name=home --vgname=centos
logvol swap --fstype=swap --size=4096 --name=swap --vgname=centos
logvol / --fstype=xfs --size=1 --grow --name=root --vgname=centos
%post --interpreter=/bin/bash
# useradd dev
# echo "passwd1!" | passwd --stdin dev # 此处可同步创建用户并给用户创建密码
echo "passwd1!" | passwd --stdin root # 此处为配置root 密码为passwd1!
%end
%packages
@base
@debugging
@performance
@vim
@git
@wget
%end
测试部署
将需要部署的主机加入到服务器的网络,确保能与服务器通信后,打开pxe启动,开机即可。
自动安装,安装完成后会自动重启进入系统。
进入系统后,root
密码为预先配置的密码。