Я устанавливаю CentOS 7 с помощью ks
вариант. Пример:
ks=http://10.0.0.100:8080/anaconda-ks.cfg
Как я могу «динамически» получить URL-адрес его местоположения из этого файла конфигурации?
В данном случае я хочу это: "http://10.0.0.100:8080/"
РЕДАКТИРОВАТЬ: В конечном итоге я сопоставляю MAC-адрес машины со словарем Python (файл JSON), чтобы определить, какое имя хоста установить во время установки. И я хотел бы избежать жесткого кодирования URL-адреса файла JSON в сценарии конфигурации кикстарта.
Единственное, что полезно для сценария кикстарта, - это командная строка ядра. Вы можете получить доступ к этому на
/proc/cmdline
Если вы используете решение I предоставлено здесь тогда вы можете прочитать ks=...
параметр. Вы можете передать / proc / cmdline каналу, что-то вроде
url=`sed 's/=/ /g' /proc/cmdline | awk '{for(i=1; i<=NF; i++) if ($i~/ks/) print $(i+1)}'`
вернет поле после ks
к url
как только мы преобразовали =
в пробелы.
У меня нет доступа к среде кикстарта, чтобы не тестировать это, поэтому вам может потребоваться немного подправить его с путями.
Вы можете отправить параметр имени хоста как параметры ядра (--extra-args в вызове virt-install). Например:
# 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.