どうも中田です。
今回はVMWareからAWSへのマイグレーションに関するお話。
先日、仕事でVMWareからAWSへのサーバ移設をやったので、その時のメモを残しておきます。
前提話
AWSへは、コマンドツール(CLI)を使ってインポートします。
流れとしては、コマンド実行するとS3に一旦イメージが配置され、
その後、EC2インスタンスの生成が行われるといったものです。
なので、S3の領域や、APIキーを取得しておく必要があります。
準備
サーバイメージの準備
移設対象となるサーバ(VMWare)からイメージを取得します。
vSphere Clientからデータストアブラウザを使ってイメージをエクスポートする
するとファイル群はこんな感じ。
*****.vmx *****.nvram *****.vmdk *****.vmsd *****.vmxf *****.log
インポートツールのインストール
AWSで用意してあるコマンドツールを使ってインポートするので、
事前に入れておきます。
$ brew install ec2-api-tools ec2-api-tools
移設実行!
では早速実行します。
$ ec2-import-instance --(オプション色々)
って感じで行ったんですが、
ERROR: This does not appear to be a Stream Optimized VMDK. It contains invalid magic number 277891307
あらら、、エラー発生。
要は、データストアブラウザ経由でダウンロードしたVMDKファイルはインポートできませんってことらしい。。
イメージサイズが半端なく大きいので、このままなんとかやっちゃえないかという話になり
なんとかやっちゃった話をします。
なんとかやっちゃった話
調べていくとどうやらOVF形式でないとダメっぽい。
なので、VMX形式のファイルをOVF形式に変換できればオッケーってことになった。
OVF形式に変換
VMWareが提供しているOVFToolでこれを使えば変換できるようなのでインストールしておきます。
ちなみに、データストアブラウザで取得してきたファイル群を一つのディレクトリにまとめておく必要があります。
$ ovftool /(ファイル群の場所)/disk_image.vmx /(出力先)/disk_image.ovf
すると、こんな形式のファイルが出力されます。
*****.ovf *****.mf *****.vmdk
本気でインポート!
先ほどは失敗しましたが、今度は本気でインポートするので
シェルを作って実行しました。
インスタンプタイプやローカルIPアドレスの指定もしています。
#!/bin/bash VMDK=../disk.vmdk S3_OWNER_ACCESS_KEY=(APIキー) S3_OWNER_SECRET_KEY=(APIシークレットキー) S3_BUCKET_NAME=(S3バケット名) ec2-import-instance \ --region ap-northeast-1 \ -O $S3_OWNER_ACCESS_KEY \ -W $S3_OWNER_SECRET_KEY \ -p Linux \ --instance-type t2.micro \ --format VMDK \ --architecture x86_64 \ --bucket $S3_BUCKET_NAME \ --owner-akid $S3_OWNER_ACCESS_KEY \ --owner-sak $S3_OWNER_SECRET_KEY \ --availability-zone ap-northeast-1a \ --private-ip-address 192.168.200.220 \ --subnet subnet-eae2579d $VMDK
これでうまくいきました!