После клонирования базового образа мне нужно изменить основные настройки. Восстановление ключа хоста ssh, изменение статических IP-адресов, установка имени хоста и т. Д.
Из-за настроек сети DHCP не подходит. Это более или менее исключает использование SSH с предопределенным ключом или запуск сценария запуска, поскольку я не могу предоставить IP извне.
Я бы больше всего хотел смонтировать файловую систему новой машины на Dom0, но тома lvm экспортируются, и кажется плохим тоном импортировать их, чтобы машина Dom0 могла их видеть.
Как лучше всего изменить файлы в клонированной виртуальной машине перед загрузкой? Должен быть неинтерактивным, и я собираюсь угадать, что скриптовый доступ через xe console
не будет работать хорошо.
Вам следует сделать то, что делают некоторые системы развертывания (например, Open Nebula) - создать крошечный второй диск, содержащий данные персонализации.
Настройте свой образ так, чтобы этот второй диск был там (возможно, с известным UUID или именем файловой системы), и, если он есть, считайте данные персонализации и примените их к ОС во время загрузки.
Другой классный вариант, который делает Open Nebula, - это фактически встраивать IP-адрес в MAC-адрес. Расшифруйте это внутри вашего domU, и все готово!
Или просто используйте автонастройку IPv6. :)
Из-за настроек сети DHCP не подходит. Это более или менее исключает использование SSH с предопределенным ключом или запуск сценария запуска, поскольку я не могу предоставить IP извне.
Как насчет использования статического IP-адреса в качестве «IP-адреса сборки», загрузки образа на этот известный IP-адрес с известным ключом и запуска сценария, который выполняет вход, перенастраивает и перезагружается?
Настройте базовый образ на
Также есть возможность проявить творческий подход, если хотите; автоматически генерировать tarball по запросу на загрузку, возможно, на основе информации из базы данных и, как правило, на основе скелета конфигурации.
vgchange -a y
пометил все тома как пригодные для использования, но это мне не помогло, потому что это не прямые разделы. Это образы виртуальных дисков, внутри которых есть таблицы разделов.
Затем я наткнулся на сценарий ниже в http://www.mceith.com/blog/?p=112. Прямое подключение дисков к ВМ ... при необходимости отрегулируйте, повторный вызов для размонтирования.
#!/bin/bash
# contact@mceith.com 2011
if [ ! -n "$1" -o ! -n "$2" -o ! -n "$3" ]; then
echo "Usage: $0 <target vm uuid> <control domain uuid> <mount|umount>"
exit 1
fi
case "$3" in
mount)
if [ -f /tmp/tmpvbd ]; then
echo "VBD allready exists!"
exit 1
fi
# Get uuid of vm you want to configure
VMUUID=`xe vbd-list vm-uuid=$1 params=vdi-uuid empty=false --minimal`
# Create VBD link to VM VDI on dom0
NEWVM=`xe vbd-create vm-uuid=$2 vdi-uuid=$VMUUID device=1`
# Plug it to dom0
xe vbd-plug uuid=$NEWVM
VM_VDEV=`xe vbd-list uuid=$NEWVM params=device --minimal`1
# Lag
sleep 1
# Mount it
mount /dev/$VM_VDEV /mnt/newvm
echo $NEWVM > /tmp/tmpvbd
# Do what ever you like
# ....
;;
umount)
if [ ! -f /tmp/tmpvbd ]; then
echo "No VBDs mounted?"
exit 1
fi
umount /mnt/newvm
NEWVM=`cat /tmp/tmpvbd`
# Unplug
xe vbd-unplug uuid=$NEWVM
xe vbd-destroy uuid=$NEWVM
rm -f /tmp/tmpvbd
;;
esac
exit $?