安装系统时初次启动需要设置很多自定义选项,他们会指定系统采用的语言,键盘格式,硬盘分区和附加下载项目等等.这些问题大部分必须进行选择才能继续进行系统安装.当对多台主机/服务器进行Linux系统啊安装时,传统的手动安装方法显然是重复而且低效的,同时还可能出现人工操作问题.Kickstart自动安装脚本就是用来解决这个问题的.
通过用文件记录安装过程中所需要的所有问题的答案,让所有需要安装的主机自动进行读取和设置,以解决批量安装的问题,这就是Kickstart自动安装脚本的实现原理.
本身在RHEL7之前的系统中提供了图形化的生成kickstart的制作方式,但是在RHEL8之后该程序成了收费项目.但我们依旧可以通过使用并修改模板来进行kickstart脚本的制作.
首先需要提的是,在已经安装好的RHEL系统中本身就已经存在了kickstart脚本.其内容是我们安装系统时所回答的所有问题的答案.
通过比对该文件内容,并参照注释,我们可以自定义生成想要的kickstart文件.换言之,这就是我们的模板.
/root/anaconda-ks.cfg ##模板所在的位置
cp /root/anaconda-ks.cfg /var/www/html/Test.cfg ##复制模板至Apache服务器,方便进行分发
vim /var/www/html/Test.cfg ##编辑模板来进行自定义
以下为对于精简过的模板的展示和注解
# version=RHEL8 ##系统标注
# Partition clearing information ##分区信息清理选项
clearpart --none --initlabel ##清理硬盘中所有内容
# Use graphical install ##安装模式选择
# graphical ##这里我们不选择图形化界面而选择命令行
text
# Use CDROM installation media
# cdrom ##指定系统安装源
url --url="http://192.168.50.214/Test" ##我们选择网络源的方式,指定为内网的Apache服务器
# Keyboard layouts ##键盘布局设置
keyboard --vckeymap=us --xlayouts='us' ##设置为美式布局
# System language ##系统语言支持设置
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8 ##采用美式英语,UTF-8格式,但同时支持中文简体
# Network information ##网络设置部分
network --bootproto=dhcp --onboot=on ##网卡设置为DHCP分配,开机时自启动
# network --hostname=Node2.westos.org ##主机名设置,这里略过
repo --name="AppStream" --baseurl="http://192.168.50.214/Test/AppStream" ##设置软件仓库的源,这里同样选择配置好的内网Apache服务器
# Root password ##Root用户密码设置
rootpw --plaintext Test ##设置为明文密码,后者为密码内容
# X Window System configuration information ##是否在开机时开启图形化界面
# xconfig --startxonboot ##由于主要用于服务器部署,我们关闭该选项,采用命令行模式
firstboot --disable ##系统安装后自动设定首次启动的所有现象
# System services ##安装完成后服务额外开启的设定
# services --enabled="chronyd" ##原本有额外开启"chronyd"服务,这里取消掉
# System timezone ##系统时区设置
timezone Asia/Shanghai --isUtc --nontp ##设置为上海时区,系统时间与UTC时间同步,不设置NTP时间同步
# Disk partitioning information ##硬盘分区设置
part /boot --fstype="xfs" --size=1024 ##设定boot分区所用硬盘为xfs格式,大小1G
part swap --fstype="swap" --size=500 ##设置swap分区所用硬盘为swap格式,大小500M
part / --fstype="xfs" --grow --size=1 ##设定/目录分区所用硬盘为xfs格式,占用所有剩余硬盘空间
##--grow参数的含义即为占用所有硬盘容量
reboot ##安装设定完成后自动重启
%packages ##系统中安装软件的选项,从上面的软件仓库中选取安装
@base ##带@的项目为软件组,这里为Base组的所有软件
httpd ##Apache服务器所需要的httpd服务
%end ##结束标示
%post ##系统安装后需要执行的命令,⬅这里留空可不写.
打眼一看,这么长一个配置文件.
还好写错了也有专用的工具进行检查.ksvalidator
可以帮我们做到这个功能.但是和往常的检测工具一样,他只会检测语法错误,并不会指出你的设置错误.
dnf whatprovides */ksvalidator ##搜寻含有该命令的包
dnf install pykickstart-3.16.11-1.el8.noarch ##安装指定的包
ksvalidator /var/www/html/Test.cfg ##检测刚刚写好的Test.cfg文件
chmod 0644 /var/www/html/Test.cfg ##保证其权限可读
最后的最后,已经写完了这么一个Kickstart安装脚本,放在这里是不会自动生效的.
需要将其添加到我们上一章写好的创建虚拟机的Shell脚本中保证生效.
--extra-args "ks=http://192.168.50.214/ks/Test.cfg" ##指定kickstart配置文件
当然,也不一定非要在自动化Shell脚本中直接写入,也可以手动安装时在系统安装基面选择安装选项,如Install Red Hat Enterprise Linux 8.2.0
后,手动加入ks参数.
ks=http://192.168.50.214/Test.cfg ##手动加入ks参数
这样在保存并开始运行后也能起到和在Shell脚本中直接添加附加参数同样的作用.
附加内容
在文中示例的自动安装脚本中,预装的软件只有:
%packages ##系统中安装软件的选项,从上面的软件仓库中选取安装
@base ##带@的项目为软件组,这里为Base组的所有软件
httpd ##Apache服务器所需要的httpd服务
因此很显然这台机器安装好后是无法启用图形界面的,如果需要预安装时就配置图形界面,需要额外安装^graphical-server-environment
软件组
即如下配置.
%packages ##系统中安装软件的选项,从上面的软件仓库中选取安装
@^graphical-server-environment ##图形化界面软件组
@base ##带@的项目为软件组,这里为Base组的所有软件
httpd ##Apache服务器所需要的httpd服务