XCP-ngからエクスポートしたVMをAWSに持ち込み、AMIに変換する。

株式会社クレアヴォイアンスでは、一部のサービスをXCP-ng環境で運用していましたが、運用上の理由からEC2へ移行することになりました。
移行にあたり新規構築は避け、既存のVMをそのままAWSに持ち込んでAMI化する方法を採用しました。

必要なもの

AWS CLIのインストール
https://docs.aws.amazon.com/ja_jp/cli/latest/userguide/getting-started-install.html
以下のアクセス許可を与えたIAMユーザー
https://docs.aws.amazon.com/ja_jp/vm-import/latest/userguide/required-permissions.html

qemu-img
お使いのマシンでqemu-imgコマンドが通るか確認してください。
通らなければインストールしましょう。

条件

移行したubuntsのバージョンは以下の通りです。

No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 24.04.2 LTS
Release:        24.04
Codename:       noble

作業する①VMのエクスポート

Xen Orchstraを使ってVMをovaファイルとしてエクスポートします。

エクスポートされたovaファイルをtarコマンドで解凍してください。

tar -xvf vm.ova

拡張子vmdkのファイルが展開されると思います。これをqemu-imgを使ってvhdに変換します。
なぜか自分の環境だと一度rawファイルにしたらうまくいったのでその通りに記載します

# 一旦rawに
qemu-img convert -p -O raw vm.vmdk vm.raw
# そしたらvhd
qemu-img convert -p -O vpc vm.raw vm.vhd

作業する②vhdのアップロード

S3にアップロード用のバケットを作成します。vm-import2025とする。
できたらAWS S3にアップロードします。

aws s3 cp vm.vhd s3://vm-import2025/

containers.jsonの作成とイメージのインポート

作業ディレクトリにcontainers.jsonを作成します。

[
  {
    "Description": "Ubuntu 24.04.2 LTS from VMDK",
    "Format": "vhd",
    "UserBucket": {
      "S3Bucket": "vm-import2025",
      "S3Key": "vm.vhd"
    }
  }
]

これが出来ればAMIイメージの作成です。

aws ec2 import-image \
  --description "Ubuntu 24.04.2 LTS from XCP-ng vhd" \
  --disk-containers file://containers.json

作業③待つ

実行するとimport-task-idsが表示されるのでタスクのステータスを確認しましょう。

aws ec2 describe-import-image-tasks --import-task-ids import-ami-<表示されたID>
結構時間かかる

完了するとAMIの一覧に追加されます!これで使用可能です。
お疲れさまでした。

コメントする

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

上部へスクロール