Экспорт виртуальных машин из VirtualBox в AWS Amazon

  • Tutorial
Добрый день.
Хочу поделиться новым приобретенным опытом.
Нашей компании понадобились собственные AMI с Windows XP, Windows 7, Windows 8 и Windows Server 2003 в AWS Amazon.
После относительно недолгого поиска было выяснено, что такая возможность есть, и называется она AWS VM Import/Export Tools (подробнее тут ).

Однако возможности этого сервиса пока ограничены:
Q. What operating systems are supported?
VM Import/Export currently supports Windows Server 2003, Windows Server 2003 R2 and Windows Server 2008 (Datacenter, Enterprise, and Standard editions) VM images. For a full list of supported VM file formats, please see What virtual machine file formats are supported?.. We plan to support additional operating systems in the future.

Скажу честно, не увидев в списке поддерживаемых ОС Windows XP, вздохнул с облегчением.

Итак, к делу. Для всех манипуляций нам понадобится установленная VirtualBox (у меня версия 4.2.4) и Amazon EC2 API Tools (скачать последнюю версию можно здесь).
Выбранная для импорта версия ОС — Windows Server 2003.
Создадим новую виртуальную машину в VirtualBox.


При создании машины указываем тип диска VMDK.


Далее процесс установки самый обычный и дополнительно уделять ему внимание нет смысла.
Главное — не забудьте добавить пользователя с правами администратора и разрешить ему подключение по RDP.
После того как наша виртуальная машина установилась, выключаем её и идём в меню Файл — Экспорт конфигураций и выбираем необходимую конфигурацию.


В параметрах экспорта ставим пометку «Сохранить в формате OVF» и проверяем чтобы расширение в имени сохраняемого файла также было ovf.


Результатом экспорта будут два файла. Один с расширением ovf, другой — vmdk, и именно его мы будем дальше использовать.
Когда экспорт завершен, можно приступать к загрузке. Открываем командную строку или терминал (в зависимости от вашей ОС) и выполняем следующее:
# ec2-import-instance /media/sf_UbuntuVirt/win2003_x86-disk1.vmdk -f VMDK -b windows2003x86 -o XXXXXXXXXX -w XXXXXXXXXXXX -t m1.small -a i386

где:
  • -f VMDK — формат загружаемого файла,
  • -b windows2003x86 — название бакета в AWS S3
  • -o XXXXXXXXXX — access_key_id
  • -w XXXXXXXXXXXX — secret_access_key
  • -t m1.small — тип инстанса, который стартует с вашей конфигурацией
  • -a i386 — архитектура ОС


После того как наша конфигурации будет загружена в S3, начнется процесс конвертации её в EBS инстанс.
Прогресс конвертации проверяем командой:
# ec2-describe-conversion-tasks | grep TaskType
TaskType	IMPORTINSTANCE	TaskId	import-i-fhax7514	ExpirationTime	2013-02-05T14:41:06Z	Status	completed	InstanceID	i-b8923ac8

В выводе нас интересуют два значения:
  • Status completed — значит конвертация завершена
  • InstanceID i-b8923ac8 — ID инстанса с нашей конфигурацией

Теперь мы можем снять создать AMI с этого инстанса или из консоли, или с помощью CLI.
Мне ближе использование CLI.
# ec2-create-image i-b8923ac8 --no-reboot -n win2003x86 -d "Windows Server 2003"
IMAGE	ami-f1a73398

Вот и всё, теперь мы можем смело стартовать новые сервера с нашей новой AMI.
Надеюсь, информация будет полезна.

P.S. Если кто-нибудь нашёл способ сделать AMI из XP или знает другой способ импорта, поделитесь, пожалуйста, опытом.
  • +18
  • 10,4k
  • 9
EPAM 164,99
Компания
Поделиться публикацией
Похожие публикации

Вакансии компании EPAM

Комментарии 9
  • +2
    А не-мелкомягкие машинки заимпортить можно?
    • +2
      Данный способом можно импортировать только Windows, как указано в цитате в начале статьи. Для Linux-машин есть другой способ. Мой коллега как раз сейчас над этим работает и, думаю, с удовольствием поделится опытом, когда закончит.
      • 0
        Если делать с нуля, то я в своё время создавал файл забитый нулями, создавал в нём файловую систему и ставил необходимый набор пакетов (через yum для RHEL, Убунты делать мне не приходилось). Далее делал из этого S3 имейдж, потом конвертил в EBS.
        • 0
          Только что проверил способ создания AMI из Linux машин, который когда-то использовал на одном из проектов.
          Собственно нужны только установленные EC2 API Tools и EC2 AMI Tools, а дальше всего три шага:
          1.снять образ
          ec2-bundle-vol -d <папка куда сложить файлы для образа> -k <путь к pk-pem> -c <путь к cert-thomsonreuters.pem> -u <номер пользователя Amazon без тире> --no-inherit
          2.загрузить образ на S3
          ec2-upload-bundle -b <название бакета> -m <путь к image.manifest.xml> -a aws_access_key_id -s aws_secret_access_key
          3.зарегистрировать AMI
          ec2-register <название бакета>/image.manifest.xml -n name -d «Description»
          • 0
            В этом случае получается S3-тип машины. При перезагрузке все изменения на ней удаляются.

            Что я делал — это с помощью dd копировал образ моей виртуалки на блочное EBS устройство. после чего отмонтировал это устройство и зарегистрировал как EBS AMI. Короче, много телодвижений :)
            • 0
              Да-да, всё верно
        • 0
          Саша, забыл рассказать про RDP и группу с разрешением удалённого доступа.
          • 0
            Спасибо, Андрей. Добавил это условие в статью.
            • 0
              Благодарю, Александр. Вы сохранили время многим = )

          Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

          Самое читаемое