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

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

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

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

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

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

3)         VirtualBox.

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

Операционную систему можно либо установить самостоятельно, либо скачать уже готовую с официального сайта FreeBSD в виде VHD диска. Если использовать уже готовый образ, его можно взять с FTP сервера ftp://ftp.freebsd.org/pub/FreeBSD/snapshots/VM-IMAGES/10.0-RELEASE/amd64/Latest/, а именно нужен образ с расширением 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 диск.

2014-12-20_15-17-26

 

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

2014-12-20_15-18-06

 

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

2014-12-20_15-18-19

 

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

2014-12-20_15-19-40

 

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

2014-12-20_15-20-05

 

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

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

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

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

2014-12-20_16-13-27

 

Заказываем операцию «расширение диска».

2014-12-20_16-13-27

 

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

2014-12-20_16-14-48

 

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

2014-12-20_16-17-48

 

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

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

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

echo 'ifconfig_hn0="SYNCDHCP"' >> /etc/rc.conf

service netif restart

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

echo 'sshd_enable="YES"' >> /etc/rc.conf
ssh-keygen -t dsa -f /etc/ssh/ssh_host_dsa_key
ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
service sshd restart

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

pkg install python27 py27-asn1 sudo wget

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

wget https://raw.githubusercontent.com/Azure/WALinuxAgent/2.0/waagent --no-check-certificate

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

ln -s /usr/local/bin/python2.7 /usr/bin/python

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

mv ./waagent /usr/sbin/
chmod 755 /usr/sbin/waagent
/usr/sbin/waagent –install

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

/usr/sbin/waagent –deprovision

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

$destination = https://MYACCOUNT.blob.core.windows.net/vhds/FreeBSD10.vhd

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

$localfile = “E:Hyper-VVirtual Hard Disksfreebsd10.vhd”

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

Add-AzureVhd -Destination $destination -LocalFilePath $localfile

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

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

Add-AzureVMImage -ImageName FreeBSD10.0 -MediaLocation $destination -OS Linux

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

Leave a Reply

Your email address will not be published. Required fields are marked *