![如何从其内部获取 anaconda-ks.cfg 脚本的位置?](https://linux22.com/image/673841/%E5%A6%82%E4%BD%95%E4%BB%8E%E5%85%B6%E5%86%85%E9%83%A8%E8%8E%B7%E5%8F%96%20anaconda-ks.cfg%20%E8%84%9A%E6%9C%AC%E7%9A%84%E4%BD%8D%E7%BD%AE%EF%BC%9F.png)
我正在使用该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。