Задача развернуть образ операционной системы для последующего развертывания в 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 диск.
Далее, заказываем операцию конвертирования диска.
Необходим только формат VHD.
На следующем шаге определим, что тип диска будет фиксированный.
Дадим название новому диску.
После работы мастера, мы получим новый 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 дисками:
Заказываем операцию «расширение диска».
И указываем размер в 21 гигабайт.
Далее, я создал виртуальную машину:
И в качестве жесткого диска указал созданный ранее VHD диск. Подготовительные работы завершены и можно запускать виртуальную машину, продолжив ее конфигурирование.
Логинимся под root без пароля
Настроим сетевой интерфейс на получение IP адреса по DHCP
1 2 3 | echo 'ifconfig_hn0="SYNCDHCP"' >> /etc/rc.conf service netif restart |
Добавим сервер SSH в автозагрузку и произведем генерирование необходимых ключей
1 2 3 4 | 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 |
Установим необходимые пакеты
1 | pkg install python27 py27-asn1 sudo wget |
Следующий шаг, будет загрузка и установка агента
1 | wget https://raw.githubusercontent.com/Azure/WALinuxAgent/2.0/waagent --no-check-certificate |
Так как python устанавливается в каталог /usr/local/bin/, а агент же для своей работы требует другой путь – /usr/bin/python, то в данном случае решаем проблему используя жесткие ссылки
1 | ln -s /usr/local/bin/python2.7 /usr/bin/python |
Далее устанавливаем агент
1 2 3 | mv ./waagent /usr/sbin/ chmod 755 /usr/sbin/waagent /usr/sbin/waagent –install |
Последняя команда выполнит очистку OS к последующему развертыванию
1 | /usr/sbin/waagent –deprovision |
На завершающем шаге необходимо загрузить подготовленный образ в Azure. Для этого воспользуемся Azure Powershell и определив место хранения в Azure Storage
1 | $destination = https://MYACCOUNT.blob.core.windows.net/vhds/FreeBSD10.vhd |
И нахождение локального файла VHD
1 | $localfile = “E:Hyper-VVirtual Hard Disksfreebsd10.vhd” |
Выполним коммандлет Add-AzureVhd
1 | Add-AzureVhd -Destination $destination -LocalFilePath $localfile |
Во время его выполнения будет подсчитана MD5 хеш сумма, определены заполненные блоки диска, а так же осуществлена их выгрузка в Azure.
В завершении необходимо выполнить регистрацию образа
1 | Add-AzureVMImage -ImageName FreeBSD10.0 -MediaLocation $destination -OS Linux |
После этого, образ готов к развертыванию.