自动化运维(十三)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文件中使用明文密码存在安全风险,因为任何能够访问该文件的人都能看到明文密码。

相关推荐
invicinble1 小时前
对linux形成认识
linux·运维·服务器
小Pawn爷1 小时前
14.VMmare安装ubuntu
linux·运维·ubuntu
技术路上的探险家1 小时前
8 卡 V100 服务器:基于 vLLM 的 Qwen 大模型高效部署实战
运维·服务器·语言模型
有谁看见我的剑了?2 小时前
介绍一款 测试 DNS解析成功率的网站
运维
半桔2 小时前
【IO多路转接】高并发服务器实战:Reactor 框架与 Epoll 机制的封装与设计逻辑
linux·运维·服务器·c++·io
HABuo2 小时前
【linux文件系统】磁盘结构&文件系统详谈
linux·运维·服务器·c语言·c++·ubuntu·centos
Howrun7773 小时前
关于Linux服务器的协作问题
linux·运维·服务器
yunfuuwqi4 小时前
OpenClaw✅真·喂饭级教程:2026年OpenClaw(原Moltbot)一键部署+接入飞书最佳实践
运维·服务器·网络·人工智能·飞书·京东云
迎仔5 小时前
C-算力中心网络隔离实施方法:怎么搞?
运维·网络
代码游侠5 小时前
C语言核心概念复习——网络协议与TCP/IP
linux·运维·服务器·网络·算法