Kickstart文件是一个用于自动化安装CentOS或Red Hat Enterprise Linux的配置文件。它包含了安装过程中需要的各种设置和参数,例如分区方案、网络配置、用户账户、软件包选择等。
一个简单的例子
下面是一个简单的kickstart文件示例,用于自动安装CentOS 7:
# 使用文本模式安装
text
# 安装源
url --url="http://mirror.centos.org/centos/7/os/x86_64/"
# 键盘布局
keyboard --vckeymap=us --xlayouts='us'
# 系统语言
lang en_US.UTF-8
# 网络配置
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network --hostname=centos7
# 根密码
rootpw --iscrypted $6$ugoUqIKf$cPAYn16qZPTVYaXsX4hqTYhPHylas0vQYi6vwKdAX/DZRXYLDdQh9J1RsHskNpZXIH.IYvJLpqC9.wWuv1iYn/
# 系统时区
timezone Asia/Shanghai --isUtc
# 系统引导
bootloader --location=mbr --boot-drive=sda
# 初始化分区
clearpart --all --initlabel
# 磁盘分区
part /boot --fstype="xfs" --ondisk=sda --size=1024
part pv.01 --fstype="lvmpv" --ondisk=sda --size=51200
volgroup centos --pesize=4096 pv.01
logvol / --fstype="xfs" --size=40960 --name=root --vgname=centos
logvol swap --fstype="swap" --size=4096 --name=swap --vgname=centos
# 安装软件包
%packages
@^minimal
%end
# 安装完成后重启
reboot
这个kickstart文件指定了使用文本模式安装、安装源、键盘布局、系统语言、网络配置、根密码、时区、引导加载程序、磁盘分区方案以及要安装的软件包,这里的安装的软件包是最小化的安装,你也可以替换成你自己想要的软件包。安装完成后,系统会自动重启。
进一步优化
假如我们要求新装的web 服务器配置为2核4G,50G硬盘 ,根据这个Web服务器配置,下面是修改后的kickstart文件:
# 使用文本模式安装
text
# 安装源
url --url="http://mirror.centos.org/centos/7/os/x86_64/"
# 键盘布局
keyboard --vckeymap=us --xlayouts='us'
# 系统语言
lang en_US.UTF-8
# 网络配置
network --bootproto=dhcp --device=eth0 --ipv6=auto --activate
network --hostname=webserver
# 根密码
rootpw --iscrypted $6$ugoUqIKf$cPAYn16qZPTVYaXsX4hqTYhPHylas0vQYi6vwKdAX/DZRXYLDdQh9J1RsHskNpZXIH.IYvJLpqC9.wWuv1iYn/
# 系统时区
timezone Asia/Shanghai --isUtc
# 系统引导
bootloader --location=mbr --boot-drive=sda
# 初始化分区
clearpart --all --initlabel
# 磁盘分区
part /boot --fstype="xfs" --ondisk=sda --size=1024
part pv.01 --fstype="lvmpv" --ondisk=sda --size=51200
volgroup centos --pesize=4096 pv.01
logvol / --fstype="xfs" --size=45056 --name=root --vgname=centos
logvol swap --fstype="swap" --size=4096 --name=swap --vgname=centos
# 安装软件包
%packages
@^minimal
%end
# 配置系统
%post
# 配置2核CPU
echo "GRUB_CMDLINE_LINUX=\"crashkernel=auto spectre_v2=retpoline rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet maxcpus=2\"" >> /etc/default/grub
grub2-mkconfig -o /boot/grub2/grub.cfg
# 配置4G内存
echo "4G" > /sys/firmware/efi/efivars/HypervisorSharedInfoSize-4d515041-5030-4456-454E-544552544F4B45
%end
# 安装完成后重启
reboot
主要修改内容:
- 将主机名改为webserver
- 根据50G硬盘的大小,调整了磁盘分区方案。根分区大小设为45056MB,略小于50G,留出空间给swap分区。
- 在%post部分添加了配置2核CPU和4G内存的命令。通过修改grub配置文件限制最大CPU数量为2,并通过写入特定的efivars文件设置内存大小为4G。
请注意,%post部分的命令可能与具体的虚拟化平台有关,可能需要根据实际情况进行调整。
这个修改后的kickstart文件应该能满足2核4G、50G硬盘的Web服务器的自动安装需求。同样地,在实际使用前建议进行充分的测试和调试。
密码怎么设置
在上面的kickstart文件示例中,root密码是以加密形式提供的:
rootpw --iscrypted $6$ugoUqIKf$cPAYn16qZPTVYaXsX4hqTYhPHylas0vQYi6vwKdAX/DZRXYLDdQh9J1RsHskNpZXIH.IYvJLpqC9.wWuv1iYn/
这个加密后的字符串对应的明文密码是password。
如果你想设置一个不同的root密码,可以使用以下命令生成新的加密密码:
python -c 'import crypt; print(crypt.crypt("new_password", crypt.mksalt(crypt.METHOD_SHA512)))'
将上述命令中的new_password替换为你想设置的root密码,然后运行该命令。它会输出一个类似于6...的加密字符串。
然后,将kickstart文件中的rootpw行替换为:
rootpw --iscrypted <encrypted_password>
将替换为你生成的加密字符串。
另外,你也可以使用明文密码,但出于安全考虑,不建议这样做:
rootpw --plaintext new_password
请注意,在实际的生产环境中,应该始终使用强密码,并定期更改密码。在kickstart文件中使用明文密码存在安全风险,因为任何能够访问该文件的人都能看到明文密码。