自动化运维(十三)Ansible 之Kickstart文件

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

主要修改内容:

  1. 将主机名改为webserver
  2. 根据50G硬盘的大小,调整了磁盘分区方案。根分区大小设为45056MB,略小于50G,留出空间给swap分区。
  3. 在%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文件中使用明文密码存在安全风险,因为任何能够访问该文件的人都能看到明文密码。

相关推荐
小O_好好学15 分钟前
Linux帮助命令
linux·运维·服务器
MXsoft61817 分钟前
监控易监测对象及指标之:Kubernetes(K8s)集群的全方位监控策略
运维
怒放的生命.22 分钟前
电气自动化入门05:三相异步电动机的正反转点动控制电路
运维·自动化·电气自动化·电工基础
莫泽Morze26 分钟前
VMware安装rustdesk服务器
运维·服务器
jonssonyan38 分钟前
稳了,搭建Docker国内源图文教程
运维·docker·容器
周湘zx1 小时前
k8s中的微服务
linux·运维·服务器·微服务·云原生·kubernetes
dgiij2 小时前
AutoX.js向后端传输二进制数据
android·javascript·websocket·node.js·自动化
如意机反光镜裸2 小时前
CentOS7搭建Hadoop3集群教程
运维
周湘zx2 小时前
k8s中的存储
linux·运维·云原生·容器·kubernetes
[听得时光枕水眠]3 小时前
【Docker】Docker上安装MySql8和Redis
运维·docker·容器