VMware fusionからAWS EC2への移動

一度vmware fusionで起動した物をAWSのEC2へ移動させたので、作業めもがてら記録しました。

# ovfファイルの作成

## ovftoolへpathを通す。

```bash:~/.bash_profile
PATH=$PATH:/Applications/VMware\ Fusion.app/Contents/Library/VMware\ OVF\ Tool
```

## ovftoolによる、ovfファイルの作成
```bash
# VMのファイルがある所へ移動する。
$ cd ~/Documents/Virtual\ Machines.localized/${vm_name}.vmwarevm
# 複数ファイルが出力されるので、ディレクトリを作っておく。
$ mkdir ~/Desktop/foovar 
# 作成
$ ovftool ${vm_name}.vmx ~/Desktop/foovar/foovar.ovf
```

上記実行後

```bash
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](http://www.robertsosinski.com/2008/01/26/starting-amazon-ec2-with-mac-os-x/)を参考にインストールしておいてください。また、[brewでも入る](http://blog.withsin.net/2012/05/09/mac-ec2-api-tools/)みたいです。

# ovfファイルのアップロード

## アップロード

[vmimport.bash](https://gist.github.com/takipone/5299760/raw/ca57547e419190e3e165700aad14a3b0ba279e43/vmimport.bash)を適当に作成し、編集する。

- Linuxのインポートには一定以上のinstance typeである必要がある（[【AWS発表】VM Import / Export for Linux](http://aws.typepad.com/aws_japan/2013/12/vm-import-export-for-linux.html)）
- regionがus-east-1ではない

ことから、以下のようになりました。

```bash: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
```

```bash
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辺りを見れば良いのだと思います。

```bash
$ 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なのでインポート中のようです。（[ステータス詳細](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html#checking-on-the-status-of-your-import)）

# インスタンスのstart

インスタンスがstopされた状態でローンチされるので、startして動作確認をすれば完了です。

# その他参考になりそうなこと

## conversion taskのキャンセルコマンド

誤ってインポートを開始してしまった場合、EC2をterminateするだけではよろしくない（というか出来ない）ので、以下のコマンドを使って、コンバージョンタスク自体をキャンセルする必要がある。

```bash
ec2-cancel-conversion-task import-i-XXXXXXXX --region ap-northeast-1
```

# 参考

- [【AWS発表】VM Import / Export for Linux](http://aws.typepad.com/aws_japan/2013/12/vm-import-export-for-linux.html)
- [Using the Command Line Tools to Import Your Virtual Machine to Amazon EC2](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html#ExportingYourVMVMware)
- [VM ImportでVMwareからAWS EC2へマイグレーションしてみた](http://dev.classmethod.jp/cloud/aws/vmimportfromvmwaretoec2/)
- [VM ImportでVMwareからAWS EC2へマイグレーションする – 複数の仮想ディスク編](http://dev.classmethod.jp/cloud/vmimport-multivirtuadisk/)
- [OVA, OVFファイルのVMWare　ESXi化](http://www.morimori.com/dp/2012/03/ova-ovfvmwareesxi.html)
- [VMware Fusion 上で作成した仮想マシンを VMware ESX 上に移行](http://d.hatena.ne.jp/quitada/20111006/p1)
- [コマンドラインツールを使用し、仮想マシンを Amazon EC2 にインポートする](http://docs.aws.amazon.com/ja_jp/AWSEC2/latest/UserGuide/UploadingYourInstancesandVolumes.html#ExportingYourVMVMware)
- [How to Import VMware Virtual Machine to Amazon EC2](http://fosshelp.blogspot.in/2013/06/howto-import-vmware-virtual-machine-to.html)
- [Troubleshooting Instance Importation](http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportTroubleshooting.html)