DataLife Engine / Мигрируем виртуальную машину из VirtualBox в облако AWS

Мигрируем виртуальную машину из VirtualBox в облако AWS


Вкратце рассмотрим процесс миграции локальной виртуальной машины с операционной системой GNU/Linux из VirtualBox в облако Amazon Web Services.

Предполагается, что у вас уже имеются:
  1. Виртуальная машина с ОС GNU/Linux в VirtualBox.
  2. Аккаунт в AWS.
  3. Бакет в хранилище Amazon S3.
  4. Настроенный интерфейс командной строки AWS CLI.

Тип диска для виртуальной машины выбираем в формате VMDK (Virtual Machine Disk).


Далее необходимо экспортировать виртуальную машину из VirtualBox в формате OVF 0.9 с расширением файла .ova и загрузить образ в хранилище Amazon S3.


Затем создайте роль vmimport в AWS IAM:



Создайте политику разрешений для роли, нажав на "Create inline policy".


Переключитесь в редактор политик JSON и вставьте следующую политику:

Замените "your-bucket" на имя вашего бакета Amazon S3.
{
   "Version":"2012-10-17",
   "Statement":[
      {
         "Effect":"Allow",
         "Action":[
            "s3:ListBucket",
            "s3:GetBucketLocation"
         ],
         "Resource":[
            "arn:aws:s3:::your-bucket"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "s3:GetObject"
         ],
         "Resource":[
            "arn:aws:s3:::your-bucket/*"
         ]
      },
      {
         "Effect":"Allow",
         "Action":[
            "ec2:ModifySnapshotAttribute",
            "ec2:CopySnapshot",
            "ec2:RegisterImage",
            "ec2:Describe*"
         ],
         "Resource":"*"
      }
   ]
}



После создания политики перейдите в "Trust relationships" и приведите политику к следующему виду:


{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Sid": "",
      "Effect": "Allow",
      "Principal": {
        "Service": "vmie.amazonaws.com"
      },
      "Action": "sts:AssumeRole",
      "Condition": {
        "StringEquals": {
          "sts:ExternalId": "vmimport"
        }
      }
    }
  ]
}

Создайте файл "containers.json" на локальной машине, где установлен AWS CLI, со следующим содержимым:
[
  {
    "Description": "My Server OVA",
    "Format": "ova",
    "UserBucket": {
        "S3Bucket": "your-bucket",
        "S3Key": "Ubuntu.ova"
    }
  }
]

Попробуйте запустить задание по импорту образа с помощью команды:
aws ec2 import-image --description "Ubuntu" --disk-containers "file://containers.json"

Статус задания по импорту образа можно посмотреть командой:
aws ec2 describe-import-image-tasks --import-task-ids import-ami-[printed with previous step]
13-06-2023, 20:06
Вернуться назад