kickstart 文件中是否有可选的“网络”语句?

kickstart 文件中是否有可选的“网络”语句?

我有一个 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

相关内容