Автоматическая установка гостей Lucid на сервер Lucid KVM
У нас есть сервер Ubuntu 10.04, на котором очень хорошо работает KVM, но у нас возникают проблемы с поиском самого чистого (и самого быстрого) способа выполнения автоматической установки 10,04 гостя.
Требования:
Необходимо использовать тома LVM для хранения гостей (без конвертации в qemu-img или чего-то подобного)
Необходимо использовать virtio для сетевого и дискового хранилища (желательно без взлома XML-файлов)
Нужно использовать локальное зеркало - так быстро (например, <5 минут)
Действительно очень хочется, чтобы он был полностью автоматизированным и неинтерактивным. (т.е. включите его и через несколько минут запустите функциональную систему)
Хотелось бы иметь возможность указывать IP-адрес при инициации, поэтому к нему легко добраться, не глядя на сервер dhcp.
Хотел бы иметь возможность указывать разные вкусы / дистрибутивы / версии и т. Д.
Вариант 1. Нам не нравится делать это из пользовательского интерфейса virt-manager - потому что вы должны быть на физическом сервере (без удаленного использования virt-manager) для установки в раздел LVM. Это работает, но вы должны запускать VNC и Gnome на сервере, и это не круто. Кроме того, он интерактивный, и вам нужно выбрать множество параметров, и мы все равно хотим написать сценарии-оболочки, которые все равно это делают.
Вариант 2: vmbuilder из пакета python-vm-builder кажется, что это именно то, что мы хотим - потому что вы можете указать локальное зеркало (используя для этого apt-proxy), но не смогли заставить его использовать том LVM или используйте virtio для диска.
vmbuilder kvm ubuntu --suite = lucid --flavour = virtual --arch = amd64 --mirror = http://192.168.1.1:9999/ubuntu -o --libvirt = qemu: /// system --ip = 192.168.1.94 --part = vmbuilder.partition --raw = / dev / VG0 / LVtest --templates = mytemplates --firstboot = / root / vm / boot.sh --user = linuxadmin --name = linuxadmin --pass = secretpass --mem = 256 --hostname = test --bridge = br0
Это просто игнорирует это --raw= part и создает файл изображения qcow - и не использует virtio. Я подозреваю, что мог бы преобразовать файл изображения в том LVM и вручную добавить материал virtio в XML, но это кажется раздражающим и грязным.
Вариант 3: это то, что мы используем, но оно не оптимально - потому что он хитрый, не позволяет нам указывать IP-адрес, и мы действительно не можем динамически управлять (из команды / скрипта установки) некоторыми параметры, которые жестко заданы в файле кикстарта.
Вручную создайте логический том - затем...
# virt-install --connect qemu: /// system -n test -r 1024 --vcpus = 1 - путь к диску =/dev/VG0/LVvm-модель тестирования =virtio --pxe --vnc --noautoconsole --os-тип Linux --os-вариант virtio26 - ускорение --network= мост:br0 --hvm
Это идет к загрузочному серверу PXE, который указывает на локальный сервер установки с файлом кикстарта, который выполняет большую часть конфигурации. Он использует virtio для сети и диска, так что это хорошо. Он использует локальное зеркало и LVM, что означает, что он соответствует нашим минимальным требованиям, но мы бы хотели, чтобы он был на 100% автоматизирован. Прямо сейчас вам нужно подключиться к консоли VNC (через virt-manager) и выбрать "Установить" в установщике Lucid - так что это сломает полностью автоматическую вещь. И, конечно, вы должны заглянуть в системный журнал, чтобы увидеть, какой IP-адрес он получил, чтобы вы могли подключиться к ssh.
Конечно, мы не единственные, кто хочет эту функциональность!!!
5 ответов
В RHEV вы просто развертываете виртуальные машины из готового шаблона, который по сути является либо копией исходного изображения шаблона, либо снимком с него (для экономии места)
Я вполне уверен, что если у вас есть золотой образ вашей сборки со всем, что вы в нем, вы можете настроить его как шаблон, и ваши сценарии просто клонируют его, используя qemu-img или даже dd.
Шаблон должен содержать специфичные для виртуальной машины детали, такие как ключи ssh (sys-config в RHEL/Fedora, не знаю, как это сделать в Ubuntu), поэтому, когда виртуальная машина, развернутая с нее, запускается, вы получаете эти данные заново.
Я бы выбрал вариант 2, но вам придется взломать vmbuilder для этого, потому что он не использует mount-by-UUID (и, таким образом, даже если вы измените шаблон libvirt XML для использования virtio, vmbuilder будет жестко закодировать /dev/sd* в /etc/fstab); --raw
Предполагается, что работает, - пожалуйста, напишите ошибку для этого.
Лично я думаю об использовании комбинации virt-install (для создания виртуальной машины и инициализации ее диска) и PXE-загрузочного debian-installer в автоматическом режиме с файлом preseed.
Как насчет того, чтобы попробовать Cobbler ( https://fedorahosted.org/cobbler/)?
Я уже сделал такую систему. Я использовал PXE boot с preseed file, puppet и sabayon. В результате система была установлена с root passwd, некоторыми пользователями, полностью обновленным профилем пользователя, ssh, openoffice и другими.
Была проблема с сабайоном и firefox.
НО! все это занимает около 5-10 минут для развертывания в моей системе.
Другим способом было просто сделать несколько клонов с помощью dd и обновить их с помощью puppet.
Довольно просто выбрать третий вариант и автоматически запустить автоустановщик lucid, а не ждать, пока вы нажмете Enter.
В нашем случае я ремастерирую ISO и загружаюсь с него. Просто измените isolinux.cfg, чтобы иметь метку по умолчанию. Делать это для PXE - это одно и то же.
Затем вы можете указать что угодно (в том числе IP!) С помощью файла preseed.
https://help.ubuntu.com/10.04/installation-guide/i386/preseed-using.html