更新:设法绕过 1. docker 错误,目前正在处理#2“存储配置失败:无法分配请求的分区方案”信息
这里和我公司的初级工程师使用 Kickstart 文件从 ISO 构建了 RHEL OVF。我们正在使用新版本的 RHEL,当尝试使用 Kickstart 安装进行自动安装时,我们当前的脚本失败。我们还使用 Packer 和 Docker 容器来运行其中一些安装脚本。
我们使用 VMware ESXi 导入虚拟机(RHEL 操作系统)并开始配置/安装它。然后,一旦完成,我们将其关闭,并从该虚拟机创建一个 OVF。
#1.现在发生了什么,当我监控 VM 和 RHEL 安装时,它开始显示 Docker 未安装: 解决了
- 然后它告诉我存储配置失败:无法分配请求的分区方案:
所以基本上,我只需要弄清楚如何以编程方式回答这些问题,这样就不会出现扰乱 VMware ESXi 上自动安装的提示。
虽然,我会说我在一分钟前手动回答了这些问题作为测试,并且虚拟机从未关闭(它应该关闭),所以它超时了,所以这将是另一个问题。
谁能指导我正确的方向吗?我并不是一个 Linux 大师,而且对于 RHEL 的整个“自动化”kickstart 来说还是个新手。
@telcoM 我将在这里逐行回复您的评论
我没有看到任何回购关键词。(经过审查,我发现回购的期间正在生成包装工安装)。我确实有列出了一些软件包的声明%post
,但 docker 实际上已经被注释掉了。我删除了评论,并尝试再次构建,但它仍然显示相同的消息。然后我-docker
也尝试排除它,但同样的消息要求 docker 包。以下是下面列出的内容%post
(这里还有一些固件包,但为了清楚起见我删除了它们):
%packages --nobase
@core
authconfig
system-config-firewall-base
tmpwatch
bzip2
eject
time
unzip
zip
which
sos
java
bind
bind-chroot
#vim
#dos2unix
#sudo
-docker
open-vm-tools
-postfix
-rhnsd
-yum-rhn-plugin
-subscription-manager
-chrony
%end
我们确实有一些从 Jfrog Artifactory 中提取的自定义存储库,位于%packages
kickstart 文件中的声明下方:
%post --log=/root/kickstart-post.log
set -x
cat > /etc/yum.repos.d/test.repo <<'CAT'
[test1]
name=test1
username=
password=
baseurl=https://artifactory.MyWebsite.com/artifactory/MyUrl
gpgcheck=0
enabled=1
[test2]
name=test2
baseurl=http://127.0.0.1:8080/__RHEL_VER__
gpgcheck=0
enabled=1
[test3]
name=test3
username=
password=
baseurl=https://artifactory.MyWebsite.com/artifactory/MyURL
gpgcheck=0
enabled=1
CAT
yum install -y A-Huge-List-Of-Apps-And-Libs-Here
yum install -y http://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
- 关于分区和存储,这更直接:
bootloader --location=mbr --driveorder=sda --append="fips=1 crashkernel=auto rhgb quiet" --password=
zerombr
clearpart --all --initlabel --drives=sda,sdb
part /boot --fstype=ext4 --size=512
part pv.01 --size=36000 --grow --ondrive=sda
part pv.02 --size=1000 --grow --ondrive=sdb
volgroup vg_root pv.01
volgroup vg_perstore pv.02
logvol / --fstype=xfs --name=lv_root --vgname=vg_root --size=7000 --grow
logvol /export/home --fstype=xfs --name=lv_home --vgname=vg_root --size=1000
logvol /opt --fstype=xfs --name=lv_opt --vgname=vg_root --size=4096
logvol /tmp --fstype=xfs --name=lv_tmp --vgname=vg_root --size=2048
logvol /var --fstype=xfs --name=lv_var --vgname=vg_root --size=2048
logvol /var/core --fstype=xfs --name=lv_core --vgname=vg_root --size=128
logvol /var/crash --fstype=xfs --name=lv_crash --vgname=vg_root --size=1000
logvol /var/getlogs --fstype=xfs --name=lv_getlogs --vgname=vg_root --size=2000
logvol /var/viewlogs --fstype=xfs --name=lv_viewlogs --vgname=vg_root --size=1000
logvol /var/log --fstype=xfs --name=lv_log --vgname=vg_root --size=1000
logvol /var/log/audit --fstype=xfs --name=lv_audit --vgname=vg_root --size=725
logvol /var/log/logins --fstype=xfs --name=lv_logins --vgname=vg_root --size=96
logvol /var/log/root_logins --fstype=xfs --name=lv_root_logins --vgname=vg_root --size=32
logvol /var/cache/yum --fstype=xfs --name=lv_repo --vgname=vg_root --size=1000
logvol /var/opt/BurgerKing --fstype=xfs --name=lv_varopt --vgname=vg_root --size=20000
logvol swap --name=lv_swap --vgname=vg_root --size=4096
logvol /var/opt/perstore --fstype=xfs --name=lv_perstore --vgname=vg_perstore --size=500 --grow
%addon com_redhat_kdump --disable
%end
我还应该在这里寻找什么吗?
答案1
您的屏幕截图中的第一个错误是:
You have specified that the package 'docker' should be installed. This package
does not exist. Would you like to ignore this package and continue with
installation?
RHEL 7.x 安装介质不包含名为 的软件包docker
。如果你想安装它,那么在 kickstart 文件中,应该使用关键字配置一个或多个包存储库repo
。
您可以添加--ignoremissing
到%packages
节标题行,以查看安装是否可以在没有 Docker 的情况下成功进行。无论最终丢失或损坏的内容都应该表明依赖于 Docker 的内容。
在你的第二张图片中,你似乎错过了这一行:
storage configuration failed: Unable to allocate requested partition scheme.
这意味着 Kickstart 文件中指定的存储配置显然与配置给 VM 的虚拟磁盘不太匹配。它可能导致了您注意到的第二条消息:
Not enough space in file systems for the current software selection. An additional 1233.25 MiB is needed.
由于安装程序无法应用请求的分区,因此安装程序实际上没有任何空间可用于软件包,直到您手动为其提供有效的存储配置,因此这也会导致您询问的最后一条错误消息:
No disks selected: please select at least one disk to install to.
Unable to allocate requested partition scheme.
你会想要拥有Kickstart 语法参考手头,并开始阅读实际使用的 Kickstart 文件。
最后一个错误之前的消息指示虚拟磁盘的大小为 46.88 GiB 和 2000 MiB。请注意,吉布表示基于二进制的单位,因此 46.88 GiB = 46.88 * (1024^3) 字节 = 大约 50 337 016 710 字节。这可能是由于将所需的虚拟磁盘大小指定为50GB= 50 000 000 000 字节,该值向上舍入到适合 VMware 的最接近的较高值,加上字节数和更高单位之间的转换中的一些舍入误差。
逻辑卷的最小大小总和vg_root
为 47269,因此逻辑卷的最小大小part pv.01
应至少是这个值。此外,由于分区大小可能会稍微向上调整以满足各种要求(数据对齐等),因此可能会将分区的实际最小容量要求推高pv.01
到/boot
磁盘的 46.88 GiB 容量以上。如果要保留这些 Kickstart 设置,请稍微增加分配给 VM 的磁盘大小,然后在 Kickstart 工作后向下微调。
RHEL 7.x Kickstart 文档不包含--nobase
该%packages
部分的选项。这似乎是一个已弃用的选项,在错误报告后已从文档中删除。
您的“一些自定义存储库”看起来像一个安装后脚本,它应该位于一个%post
部分中,而不是位于%packages
.应该有%end
终止该部分的%packages
部分,然后是%post
部分标题、安装后脚本,以及另一个%end
终止它的部分。如果脚本不在正确的部分,安装程序将尝试将脚本命令解释为要安装的软件包的名称,并且由于它们的软件包名称格式不正确,您最终可能会尝试安装随机分类的软件包以及他们的依赖关系。这可能可以解释安装的尝试docker
。
为了让虚拟机在安装完成后自动关闭,poweroff
kickstart配置文件的主要部分应该有一行带有该关键字的行。但缺少自动关闭也可能是安装“脱轨”并需要手动输入的结果。