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

相关推荐
心灵彼岸-诗和远方2 分钟前
DevOps业务价值流:架构设计最佳实践
运维·产品经理·devops
一只哒布刘7 分钟前
NFS服务器
运维·服务器
苹果醋31 小时前
Java8->Java19的初步探索
java·运维·spring boot·mysql·nginx
二十雨辰1 小时前
[linux]docker基础
linux·运维·docker
Jason-河山2 小时前
【自动化更新,让商品信息跳舞】——利用API返回值的幽默编程之旅
运维·自动化
lihuhelihu2 小时前
第3章 CentOS系统管理
linux·运维·服务器·计算机网络·ubuntu·centos·云计算
哲讯智能科技2 小时前
SAP Business One市场价格解析
运维·sap·erp
山东布谷科技官方2 小时前
布谷直播源码部署服务器关于数据库配置的详细说明
运维·服务器·数据库·直播系统源码·直播源码·直播系统搭建·直播软件开发
One_Blanks2 小时前
渗透测试-Linux基础(1)
linux·运维·安全
爱吃喵的鲤鱼2 小时前
linux进程的状态之环境变量
linux·运维·服务器·开发语言·c++