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

相关推荐
flypig哗啦啦几秒前
ubuntu服务器版启动卡在start job is running for wait for...to be Configured
linux·运维·ubuntu
不之道19 分钟前
通过 wsl 安装 docker
运维·docker·容器
tianyuanwo38 分钟前
深入解读tcpdump:原理、数据结构与操作手册
linux·运维·服务器·tcpdump
xjdksxkmd1 小时前
5.11作业
运维·服务器·网络
子非衣2 小时前
Ubuntu系统挂载磁盘并配置开机自动挂载
linux·运维·ubuntu
逸雨清风2 小时前
Chrome更新到136以后selenium等自动化浏览器失效
selenium·自动化
yyy0002002 小时前
BGP选路实验
运维·网络
唐志远19973 小时前
VMware虚拟机 安装 CentOS 7
linux·运维·centos
power 雀儿4 小时前
Linux的进程管理和用户管理
linux·运维·服务器
好吃的肘子4 小时前
Beats
运维·jenkins