Вкратце рассмотрим процесс миграции локальной виртуальной машины с операционной системой GNU/Linux из VirtualBox в облако Amazon Web Services.
Предполагается, что у вас уже имеются:
- Виртуальная машина с ОС GNU/Linux в VirtualBox.
- Аккаунт в AWS.
- Бакет в хранилище Amazon S3.
- Настроенный интерфейс командной строки 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]