一度vmware fusionで起動した物をAWSのEC2へ移動させたので、作業めもがてら記録しました。
ovfファイルの作成
ovftoolへpathを通す。
~/.bash_profile
PATH=$PATH:/Applications/VMware\ Fusion.app/Contents/Library/VMware\ OVF\ Tool
ovftoolによる、ovfファイルの作成
# VMのファイルがある所へ移動する。
$ cd ~/Documents/Virtual\ Machines.localized/${vm_name}.vmwarevm
# 複数ファイルが出力されるので、ディレクトリを作っておく。
$ mkdir ~/Desktop/foovar
# 作成
$ ovftool ${vm_name}.vmx ~/Desktop/foovar/foovar.ovf
上記実行後
Opening VMX source: ${vm_name}.vmx
Opening OVF target: foovar.ovf
Writing OVF package: foovar.ovf
Transfer Completed
Completed successfully
みたいな表示が出るまで待つ。結構待つ。
EC2 API toolsのインストール
Starting Amazon EC2 with Mac OS Xを参考にインストールしておいてください。また、brewでも入るみたいです。
ovfファイルのアップロード
アップロード
vmimport.bashを適当に作成し、編集する。
- Linuxのインポートには一定以上のinstance typeである必要がある(【AWS発表】VM Import / Export for Linux)
- regionがus-east-1ではない
ことから、以下のようになりました。
vmimport.sh
#!/bin/bash
VMDK=......./foovar/foovar-disk1.vmdk
S3_OWNER_ACCESS_KEY=<KEY>
S3_OWNER_SECRET_KEY=<SECRET>
S3_BUCKET_NAME=<BUCKET_NAME>
REGION=ap-northeast-1
ec2-import-instance \
$VMDK \
-t m3.xlarge \
-f VMDK \
-a x86_64 \
--bucket $S3_BUCKET_NAME \
-o $S3_OWNER_ACCESS_KEY \
-w $S3_OWNER_SECRET_KEY \
--region $REGION \
-p Linux
Requesting volume size: 25 GB
TaskType IMPORTINSTANCE TaskId import-i-XXXXXXXX ExpirationTime 2014-02-25T03:08:44Z Status active StatusMessage Pending InstanceID i-XXXXXXXX
DISKIMAGE DiskImageFormat VMDK DiskImageSize 10096070656 VolumeSize 25 AvailabilityZone ap-northeast-1c ApproximateBytesConverted 0 Status active StatusMessage Pending
Creating new manifest at <BUCKET_NAME>/3b67fb20-11d2-4c6d-999e-491cee3383e9/nbt-db010-disk1.vmdkmanifest.xml
Uploading the manifest file
Uploading 10096070656 bytes across 963 parts
0% |--------------------------------------------------| 100%
|==================================================|
Done
Average speed was 10.898 MBps
The disk image for import-i-ffwzg10c has been uploaded to Amazon S3
where it is being converted into an EC2 instance. You may monitor the
progress of this task by running ec2-describe-conversion-tasks. When
the task is completed, you may use ec2-delete-disk-image to remove the
image from S3.
こんな感じでアップロードは完了します。
ec2-describe-conversion-tasksによる確認
その後、変換の確認をするのですが、Status辺りを見れば良いのだと思います。
$ ec2-describe-conversion-tasks --region ap-northeast-1
TaskType IMPORTINSTANCE TaskId import-i-XXXXXXXX ExpirationTime 2014-02-25T03:08:44Z Status active StatusMessage Pending InstanceID i-XXXXXXXX
DISKIMAGE DiskImageFormat VMDK DiskImageSize 10096070656 VolumeSize 25 AvailabilityZone ap-northeast-1c ApproximateBytesConverted 1893025808 Status active StatusMessage Pending
まだ、上記ではactiveなのでインポート中のようです。(ステータス詳細)
インスタンスのstart
インスタンスがstopされた状態でローンチされるので、startして動作確認をすれば完了です。
その他参考になりそうなこと
conversion taskのキャンセルコマンド
誤ってインポートを開始してしまった場合、EC2をterminateするだけではよろしくない(というか出来ない)ので、以下のコマンドを使って、コンバージョンタスク自体をキャンセルする必要がある。
ec2-cancel-conversion-task import-i-XXXXXXXX --region ap-northeast-1
参考
- 【AWS発表】VM Import / Export for Linux
- Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2
- VM ImportでVMwareからAWS EC2へマイグレーションしてみた
- VM ImportでVMwareからAWS EC2へマイグレーションする – 複数の仮想ディスク編
- OVA, OVFファイルのVMWare ESXi化
- VMware Fusion 上で作成した仮想マシンを VMware ESX 上に移行
- コマンドラインツールを使用し、仮想マシンを Amazon EC2 にインポートする
- How to Import VMware Virtual Machine to Amazon EC2
- Troubleshooting Instance Importation