如何从其内部获取 anaconda-ks.cfg 脚本的位置?

如何从其内部获取 anaconda-ks.cfg 脚本的位置?

我正在使用该ks选项安装 CentOS 7。示例:

ks=http://10.0.0.100:8080/anaconda-ks.cfg

从该配置文件中,我如何“动态地”获取其位置的 URL?

在这种情况下,我想要这个:"http://10.0.0.100:8080/"

编辑:最终,我要做的是将机器的 MAC 地址与 Python 字典(JSON 文件)进行匹配,以确定在安装期间要设置哪个主机名。我想避免将 JSON 文件的 URL 硬编码到 kickstart 配置脚本中。

答案1

kickstart 脚本中唯一有用的是内核命令行。您可以通过以下地址访问它:

/proc/cmdline

如果你使用我的解决方案此处提供 然后你就可以读取ks=...参数了。你可以将 /proc/cmdline 传递给管道,例如

url=`sed 's/=/ /g' /proc/cmdline | awk '{for(i=1; i<=NF; i++) if ($i~/ks/) print $(i+1)}'`

一旦我们将 转换为空格,就会返回ks以下字段。url=

我无法访问 kickstart 环境来测试这一点,所以您可能需要对路径进行一些调整。

答案2

您可以将主机名参数作为内核参数发送(virt-install 调用中的 --extra-args)。例如:

# virt-install \
    -n centos   \
    -r 2048   \
    --vcpus=1   \
    --os-variant=rhel7 \
    -accelerate \
    -w bridge:virbr0   \
    --disk path=/opt/vm/test2.qcow2,size=100 \
    -l /opt/iso/CentOS-7.0-1406-x86_64-DVD.iso \
    --name test2 \
    --extra-args "ks=http://192.168.122.1/ks.cfg ksdevice=eth0 ip=192.168.122.40 netmask=255.255.255.0 dns=8.8.8.8 gateway=192.168.122.1 hostname=my-hostname"

并且主机名将自动配置为 my-hostname。

相关内容