我有一个 kickstart 文件,我想将其用于具有不同数量网络接口的机器。当我有一个包含多个network
子句用于多个接口的 KS 文件时,anaconda 拒绝在网络接口数量少于该数量的机器上运行它,因为找不到编号较高的接口。
我想要做的是,network
为编号较高的网络接口设置一些子句,当这些接口存在时,这些子句就会应用,但如果不存在这样的接口,则会被悄悄地删除。
有没有办法在 kickstart 文件中表达这一点?
答案1
您是否通过 HTTP 运行 Kickstart?您可以将 Kickstart 文件作为 PHP 脚本进行管理,并将以太网接口的数量作为参数传递给它。然后,您可以在脚本中使用条件语句来根据此情况回显配置或不回显配置。它会像这样:
<?php
header(“Content-type: text/plain”);
if (!isset($_GET[‘ethcount’])) $ethcount = “1”;
else $ethcount = $_GET[‘ethcount’];
?>
network --device=eth0 --bootproto=dhcp ...etc
<?
if ($ethcount == “2”) {
echo “network --device=eth1 --bootproto=dhcp ...etc”
?>
然后,当您调用 Kickstart 脚本时,指定计数。
http://host/kickstart.php?ethcount=2
注意,我已将默认值设置为 1,如果 URL 中未定义,则默认仅为 eth0。
http://host/kickstart.php
选项是无限的。我将其用于 CPU 架构、分布、负载(Gnome 或无头)等...
答案2
正如你所看到的邮件列表帖子,还有另一种选择:
您可以使用预脚本来检测是否先前已分区,然后使用类似以下命令:
%pre #!/bin/sh Discover condition if condition; then echo "part /boot --fstype ext3 --size=100 -- >> /tmp/part-include echo "part pv.100000 --size=1 --grow -- >> /tmp/part-include echo "volgroup Merca --pesize=32768 pv.100000" >> /tmp/part-include echo "logvol swap --fstype swap --name=Swap --vgname=Merca --size=2047" >> /tmp/part-include echo "logvol / --fstype ext4 --name=root --vgname=Merca --size=2048" >> /tmp/part-include echo "logvol /home --fstype ext4 --size=1000 --name=home --vgname=Merca" >> /tmp/part-include else echo "part /boot --fstype ext3 --size=100 -- >> /tmp/part-include echo "volgroup Merca --pesize=32768 --useexisting --noformat" >> /tmp/part-include echo "logvol swap --fstype swap --name=Swap --vgname=Merca --size=2047 --useexisting --noformat" >> /tmp/part-include echo "logvol / --fstype ext4 --name=root --vgname=Merca --size=2048 --useexisting --noformat" >> /tmp/part-include echo "logvol /home --fstype ext4 --size=1000 --name=home --vgname=Merca --useexisting --noformat" >> /tmp/part-include fi
稍后在分区部分使用 %include /tmp/part-include