пятница, 30 марта 2012 г.

Быстрое создание образа для виртуальных машин QEMU/KVM/VirtualBox/etc

После начала изучения puppet мне частенько приходится генерировать образы для виртуальных машин, причем порой десятками. Когда-то давно, для упрощения процесса инсталяции я писал скрипт-обертку над debootstrap, который устанавливал минимальную систему, ядро и загрузчик на предварительно размеченный диск. Для этого приходилось загружать livecd, размечать там диск и после этого запускать скрипт. В принципе этого хватало, если нужно создать одну, максимум две машинки. Но если их нужно сделать десяток, то минусы этого решения вставали в полный рост.

Чтобы решить проблему более полно, я дописал недостающий функционал. Получившийся скрипт назвал bootstrapper.sh, его последнюю версию можно взять тут. Сразу после создания образа его можно использовать в KVM/Qemu.

$ sudo ./bootstrapper.sh test.raw 4G
$ kvm -m 512 -hda test.raw

Если не указать имя файла и размер, создаваемого образа, то будут выбраны дефолтные значения. Чтобы конвертировать образ в формат понятный VirtualBox, нужно выполнить его импорт:

$ VBoxManage convertfromraw test.raw test.vdi --format VDI

После этого test.vdi можно подключить в виртуальную машину VirtualBox. Скорее всего аналогично можно поступить и для VMWare, если сконвертировать в VMDK формат:

$ VBoxManage convertfromraw test.raw test.vmdk --format VMDK

2 комментария:

  1. Зачем такие сложности? чем клонирование не устраивает?

    ОтветитьУдалить
    Ответы
    1. Тем, что требует телодвижений. Мне не встречались решения для клонирования, которые способны в "unattended mode" распаковываться в образ диска произвольного размера и при этом быть пригодными как для виртуалки, так и для реального компа. А главная фишка bootstrapper'а - batch mode.

      Удалить