十四、Linux系统中的无人值守安装脚本kickstart
14.1、kickstart自动安装脚本的作用
企业中安装多台操作系统时面临的问题:
(1)当安装Linux操作系统时,安装过程会需要回答很多关于设定的问题。
(2)这些问题必须手动选择,否则无法进行安装。
(3)当只安装1台Linux系统,手动设定工作量比较轻松
(4)当安装多台Linux,这些设定需要重复多次,严重影响效率。
如何解决?
用文件来记录所有安装过程中问题的答案,并让所有需要安装的主机自动读取。
kickstart作用:
以上解决方案中,记录系统安装过程中遇到所有问题答案的文件叫kickstart脚本
14.2、实验环境
(1)主机名称:fake_node1
(2)ip 192.168.1.4
(3)火墙、selinux关闭
(4)httpd服务开启
(5)配置软件仓库能正常工作
14.3、kickstart自动安装脚本的制作
在rhel7系统中提供图形的kickstart制作方式
在rhel8中已经把图形的工具取消,并添加到rhn网络中
在rhel8中如果无法通过rhn网络制作kickstart,可以使用模板生成
14.3.1、通过模板生成kickstart文件
在已经安装好的rhel8中,/root/anaconda-ks.cfg就是安装系统时回答所有问题答案生成的kickstart文件,此文件为kickstart模板。
操作步骤:
(1)完成以下设置
dnf install httpd -y
systemctl enable --now httpd
systemctl disable --now firewalld
mkdir /var/www/html/ks
cp /root/anaconda-ks.cfg /var/www/html/ks/fake.cfg
vim /var/www/html/ks/fake.cfg
fake.cfg内容为
#ignoredisk --only-use=sda
# Partition clearing information
clearpart --all --initlabel #清空系统中硬盘所有分区并清空分区上所有标签
# Use graphical install
#graphical
text #安装过程中不开启图形
repo --name="AppStream" --baseurl="http://192.168.1.4/fake/AppStream" #安装应用时用到的源
# Use CDROM installation media
#cdrom
url --url="http://192.168.1.4/fake" #指定安装系统安装源
# Keyboard layouts
keyboard --vckeymap=us --xlayouts='us' #指定系统所用键盘类型
# System language
lang en_US.UTF-8 --addsupport=zh_CN.UTF-8 #指定系统语言为英文并支持中文系统
# Network information
network --bootproto=dhcp --onboot=on #系统中网卡工作模式为dhcp,并且在开机时启动网卡
#network --hostname=localhost.localdomain
# Root password
rootpw --plaintext 000000 #root用户密码为000000,并在kickstart文件中使用明文方式
# X Window System configuration information
#xconfig --startxonboot #系统安装完成后不开启图形
# Run the Setup Agent on first boot
firstboot --disable #系统在安装完成后自动设定首次启动的一切选项
# System services
# services --disabled="chronyd"
# System timezone
timezone Asia/Shanghai --isUtc --nontp #设定系统时区
#user --name=fake --password=$6$OTXms0xdOupbAtb/$HuoDnt34BusZTvNToqIdl.yLv8OiB5yIsme0B25FMWLNGS6Eg73FNeiIhyLvH5jx.vNkugcYDnBK7Gen8NXZ3/ --iscrypted --gecos="fake"
# Disk partitioning information
part /boot --fstype="xfs" --size=500 #设定boot分区大小为500M
part swap --fstype="swap" --grow --size=1 #设定分区大小为站空所有空余容量 --grow的作用就是站空所有空余容量
part / --fstype="xfs" --size=500 #swap分区大小为500M
reboot #系统安装完成后自动重启
%packages #系统中安装软件选择
@^graphical-server-environment #@加上字符串 表示为组
@base
httpd #字符串 表示单个软件
%end
%post
touch /mnt/file{1..5} #系统安装完成后自动执行的命令
%end
(2)使用ksvalidator语法检测工具对编写的fake.cfg文件进行查错
dnf whatprovides */ksvalidator #找到文件
dnf install pykickstart-3.16.3-2.el8.noarch #安装
ksvalidator /var/www/html/ks/fake.cfg #查错
注:语法检测通过进代表语法没问题,不代表文件中的设定一定合理。
(3)通过浏览器访问查看安装源是否可以访问
访问出现错误
(4)执行ls -l /var/www/html/ks/fake.cfg查看文件权限
默认只能被超级用户读,修改权限
chmod 644 /var/www/html/ks/fake.cfg
(5)在浏览器中访问http://192.168.1.4/ks/fake.cfg发现可以查看
(6)编写虚拟机硬件设定脚本
vim /mnt/fake.sh
#!/bin/bash
virt-install \
--name $1 \
--vcpus 1 \
--memory 1024 \
--location http://192.168.1.4/fake \
--disk /var/lib/libvirt/images/$1.qcow2,size=8,bus=virtio \
--network bridge=br0,model=virtio \
--extra-args "ks=http://192.168.1.4/ks/fake.cfg"
(7)测试
执行sh fake.sh test