Миграция из Amazon Web Services

Простая инструкция по миграции виртуальной машины из Amazon Web Services в наш Cloud

Если вам нужно перенести виртуальную машину из Amazon Web Services в нашу облачную инфраструктуру, но вы не хотите разбираться в сложных технических терминах, эта инструкция для вас. Мы разберем весь процесс пошагово:

1️⃣ Создать в IAM пользователя или используем существующего пользователя

2️⃣ Предоставим все разрешения для ранее созданного пользователя или на существующего, чтобы была возможность экспортировать ВМ

3️⃣ Создадим образ виртуальной машины в Amazon Web Services

4️⃣ Скачаем его к себе

5️⃣ Загружаем образ в наш Cloud

Следуйте этим простым шагам, и ваша виртуальная машина будет успешно перенесена! 🚀


Подготовка к миграции
  1. Остановите виртуальную машину в AWS.
  2. Убедитесь, что ваш IAM-пользователь имеет права на экспорт образов.
  3. Создайте S3-бакет для временного хранения экспортируемого образа.
Для успешной миграции с AWS в OpenStack необходимо правильно настроить IAM (Identity and Access Management) в AWS. Это включает создание роли, предоставление разрешений и настройку политики, чтобы обеспечить безопасный экспорт образов.

1️⃣ Создать в IAM пользователя или используем существующего пользователя 

1. Откройте консоль AWS IAM:

• Перейдите в AWS Management Console IAM.

2. Создайте новую роль:

• Нажмите Create role.

• Выберите EC2 как доверенный сервис, который будет использовать эту роль.

• Нажмите Next.

2️⃣ Предоставим все разрешения для ранее созданного пользователя или на существующего, что бы была возможность экспортировать ВМ

• Добавьте встроенную политику AmazonS3FullAccess (для доступа к S3) для юзера.

• Создайте пользовательскую политику для управления экспортом образов:

{

"Version": "2012-10-17",

"Statement": [

     {

         "Effect": "Allow",

         "Action": [

             "s3:PutObject",

             "s3:GetObject"

         ],

         "Resource": "arn:aws:s3:::mycompany-bucket-20241223/*"

     }

]

}

• Сохраните и добавьте эту политику к роли.

4. Завершите создание роли:

• Присвойте роли имя (например, vmimport).

• Нажмите Create role.

2. Настройка политики S3 для бакета

1. Перейдите в консоль S3 и выберите бакет, куда будут экспортироваться образы.

2. В разделе Permissions добавьте политику бакета, чтобы разрешить доступ роли vmimport:

{
  "Version": "2012-10-17",
  "Statement": [
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>:role/vmimport"

      },
      "Action": "s3:PutObject",
      "Resource": "arn:aws:s3:::<BUCKET_NAME>/*"
    },
    {
      "Effect": "Allow",
      "Principal": {
        "AWS": "arn:aws:iam::<YOUR_ACCOUNT_ID>:role/vmimport"
      },
      "Action": "s3:GetBucketLocation",
      "Resource": "arn:aws:s3:::<BUCKET_NAME>"
    }
  ]
}

Замените <YOUR_ACCOUNT_ID> на ваш идентификатор AWS-аккаунта, а <BUCKET_NAME> — на имя вашего бакета.

3. Проверка настроек

• Убедитесь, что роль vmimport назначена экземпляру EC2, из которого будет экспортироваться образ.

• Проверьте доступ к S3, попробовав загрузить тестовый файл в указанный бакет от имени роли.

Так же перед началом работы с AWS CLI  ознакомьтесь с документацией.
Полная информация о наборе команд и дополнительных настройках AWS CLI доступна на сайте разработчика. Для установки AWS CLI ознакомьтесь с официальной инструкцией.

docs.aws.amazon.com
Installing or updating to the latest version of the AWS CLI - AWS Command Line Interface
Instructions to install or update the AWS CLI on your system.

4. Проверка IAM через CLI

После настройки вы можете проверить роль и привязанные политики через AWS CLI:

1. Список доступных ролей:

    aws iam list-roles

2. Проверка политики роли:

    aws iam get-role-policy --role-name vmimport --policy-name <POLICY_NAME>

Если настройки выполнены правильно, экспорт образов в S3 будет работать без ошибок.


3️⃣ Создадим образ виртуальной машины в Amazon Web Services

1. Подготовьте S3-бакет:

      • Убедитесь, что S3-бакет создан и настроен.

      • Предоставьте необходимые IAM-разрешения для экспорта.

2. Создайте образ виртуальной машины в AWS:

      aws ec2 create-image --instance-id <INSTANCE_ID> --name "<IMAGE_NAME>"


4️⃣ Скачаем его к себе

1. Экспорт образа в S3:

      aws ec2 export-image \
          --image-id <AMI_ID> \
          --disk-image-format RAW \
          --s3-export-location S3Bucket=<BUCKET_NAME>,S3Prefix=<EXPORT_PATH> \
          --role-name vmimport

2. Проверьте статус задачи экспорта:

      aws ec2 describe-export-tasks --export-task-ids <TASK_ID>

           

После загрузки можем проверить путь через команду:

3. Скачайте образ:

    • Когда статус задачи станет completed, загрузите файл из S3:

    aws s3 cp s3://<BUCKET_NAME>/<EXPORT_PATH>/<FILE_NAME> ./


4. Загрузить полученный файл образа .raw в существующий проект нашего Cloud можно двумя способами:

  1. Через User Interface(UI)

  2. Через Openstack Command line interface(CLI)

5️⃣ Загрузим образ в наш Cloud

1. Чтобы загрузить образ через UI:

  1. Войдите в панель управления.

  2. Выберите подходящий проект из раскрывающегося меню в левом верхнем углу.

  3. На вкладке «Вычислительные ресурсы» откройте вкладку «Образы» и выберите категорию «Создать образ» ниже выберите «Загрузить».

  4. Выберите название: AlmaLinux(На ваше усмотрение)

    Формат образа: RAW

    Выберите формат контейнера: BARE
    Нажмите «Создать»

  5. Дожидаемся загрузки после нажимаем «Отменить» убедитесь что образ создан далее можно создать виртуальную машину как показано тут.
2. Что бы загрузить через Openstack Command line interface(CLI):
2.1 Установка клиента OpenStack CLI:

Если у вас его нет, установите OpenStack CLI:

Для Linux (Ubuntu/Debian)

sudo apt update sudo apt install python3-openstackclient -y

Для RHEL/AlmaLinux

sudo dnf install python3-openstackclient -y

Для macOS

brew install openstackclient
2.2. Получение файла аутентификации (openrc.sh)
  1. Войдите в веб-интерфейс OpenStack (Horizon) https://ui.aitu.cloud/.
  2. Перейдите в "Проект" → "Доступ и безопасность" → "API-доступ".
  3. Нажмите "Загрузить файл OpenStack RC" (обычно project-openrc.sh).
  4. Переместите этот файл на свою машину и загрузите его в сессию:
source project-openrc.sh

Проверьте подключение, выполнив команду:

openstack token issue

Если команда успешно выполнена, значит, вы авторизованы.

2.3.После этого можно применить следующую команду:

openstack image create --private --container-format bare --disk-format raw --file <путь_к_файлу.raw> <название образа>