Как создать образ FreeBSD 12 для последующего развертывания в Windows Azure

 Задача развернуть образ операционной системы для последующего развертывания в Windows Azure не является уникальной и, в большинстве случаев, решается уже готовой библиотекой. Цель этой статьи – познакомить читателя с процессом подготовки собственного образа системы . В качестве примера будет использоваться операционная система Unix семейства FreeBSD версии 12. И так, поехали…

Первое условие, которое должно быть выполнено, это наличие установленной ОС в VHD диске.

В качестве среды виртуализации можно использовать следующие средства:

1)         Windows 8 / 8.1 с возможностью поддержки процессорных инструкций SLAT, в этом случае можно использовать встроенную роль Hyper-V;

2)         Windows Server с ролью Hyper-V;

3)         VirtualBox.

Выбор средства виртуализации будет зависеть сугубо от ваших возможностей. Во время демонстрации я буду использовать Windows Server с ролью Hyper-V.

Операционную систему можно либо установить самостоятельно, либо скачать уже готовую с официального сайта FreeBSD в виде VHD диска. Если использовать уже готовый образ, его можно взять с FTP сервера https://download.freebsd.org/ftp/releases/VM-IMAGES/12.2-RELEASE/ , а именно нужен образ с расширением vhd.xz ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/VM-IMAGES/10.0-RELEASE/amd64/Latest/FreeBSD-10.0-RELEASE-amd64-20140116-r260789.vhd.xz. Он находится в архиве, по этому нам нужен архиватор и WinRAR отлично подойдет для этой задачи.

Скачанный и разархивированный образ необходимо подготовить. Дело в том, что он имеет тип «динамически расширяемого», данный тип невозможно использовать в Windows Azure, поэтому требуется произвести его конвертирование в тип «фиксированный размер».

В мастере выбираем загруженный VHD диск.



Далее, заказываем операцию конвертирования диска.


Необходим только формат VHD.


На следующем шаге определим, что тип диска будет фиксированный.


Дадим название новому диску.


После работы мастера, мы получим новый VHD диск уже с фиксированным размером. Это очень важный шаг, так как я уже писал, Azure не умеет работать с динамически расширяемыми дисками.

Следующий шаг, будет правка полученного диска путем увеличения его размер. Опытным путем было доказано, если взять диск как он есть, во время загрузки в Azure получается ошибка:

“The VHD http://<mystorageaccount>.blob.core.windows.net/vhds/freebsd12.vhd has an unsupported virtual size of 21475270656 bytes. The size must be a whole number (in MBs).”

Решение довольно простое — необходимо расширить полученный диск на один гигабайт. Воспользуемся все тем же мастером для работы с VHD дисками:


Выбираем операцию «расширение диска».


И указываем размер в 21 гигабайт.


Далее, я создал виртуальную машину:


И в качестве жесткого диска указал созданный ранее VHD диск. Подготовительные работы завершены и можно запускать виртуальную машину, продолжив ее конфигурирование.

Логинимся под root без пароля

Настроим сетевой интерфейс на получение IP адреса по DHCP

Добавим сервер SSH  в автозагрузку и произведем генерирование необходимых ключей

Установим необходимые пакеты

Следующий шаг, будет загрузка и установка агента

Так как python устанавливается в каталог /usr/local/bin/, а агент же для своей работы требует другой путь – /usr/bin/python, то в данном случае решаем проблему используя жесткие ссылки

Далее устанавливаем агент

Последняя команда выполнит очистку OS к последующему развертыванию

На завершающем шаге необходимо загрузить подготовленный образ в Azure. Для этого воспользуемся Azure Powershell и определив место хранения в Azure Storage

И нахождение локального файла VHD

Выполним коммандлет Add-AzureVhd

Во время его выполнения будет подсчитана MD5 хеш сумма, определены заполненные блоки диска, а так же осуществлена их выгрузка в Azure.

В завершении необходимо выполнить регистрацию образа

После этого, образ готов к развертыванию.