CentOS7 使用 kickstart 批量安装操作系统

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密码为预先配置的密码。