2014年6月8日日曜日

VMwareのOVFファイルをAWSへインポートする手順

VMWareESXi上で動作している仮想マシン(VM)をAWS環境にインポートする手順をまとめます。
今回インポートするVMのOSはCentOS6.5を例としています。インポートできるOSには制限があります。

1) VMWareESXi上のVMをOVFテンプレートのエクスポートでローカルPC等に保存。
2) AWSにてAmazon LinuxのEC2を作成。(Amazon EC2 API Tools がインストール済みだから)
3) 1)のOVFファイル群の中のvmdkファイルを2)で作成したEC2にFTP等でアップロード。
4) 2)のEC2にてec2-import-instanceコマンドでvmdkファイルからEC2を生成。

※keyやIDの値は実際には存在しないものに変更しています。

作業OS: Amazon Linux AMI release 2014.03
インポート対象OS: CentOS 6.5 (64-bit)



■Amazon EC2 API Tools の確認
[ec2-user@amazon-lnx ~]$ ll /opt/aws/apitools/ec2/
total 88
drwxr-xr-x 2 root root 20480 Mar 25 14:59 bin
-rw-r--r-- 1 root root   134 Jan 28 05:48 environment.sh
drwxr-xr-x 2 root root  4096 Mar 25 14:59 lib
-rw-r--r-- 1 root root  4852 Jan 28 05:48 license.txt
-rw-r--r-- 1 root root   539 Jan 28 05:48 notice.txt
-rw-r--r-- 1 root root 46468 Jan 28 05:48 THIRDPARTYLICENSE.TXT
[ec2-user@amazon-lnx ~]$
## 動作確認
[ec2-user@amazon-lnx ~]$ ec2-describe-regions -O AKIAXXXXE2DB7AVDFRE4 -W yXXXXXSKGX0mKsn8oL805DzOlR+rt56Drewi85MEmg
REGION  eu-west-1       ec2.eu-west-1.amazonaws.com
REGION  sa-east-1       ec2.sa-east-1.amazonaws.com
REGION  us-east-1       ec2.us-east-1.amazonaws.com
REGION  ap-northeast-1  ec2.ap-northeast-1.amazonaws.com
REGION  us-west-2       ec2.us-west-2.amazonaws.com
REGION  us-west-1       ec2.us-west-1.amazonaws.com
REGION  ap-southeast-1  ec2.ap-southeast-1.amazonaws.com
REGION  ap-southeast-2  ec2.ap-southeast-2.amazonaws.com
[ec2-user@amazon-lnx ~]$


■VMDKファイルを準備
※.ovfおよび.mfファイルはAWSには取込めないので不要。
[ec2-user@amazon-lnx ~]$ ll /home/ec2-user/cent65-web-disk1.vmdk
-rw-r--r-- 1 ec2-user ec2-user 1644029440 May 23 15:19 /home/ec2-user/cent65-web-disk1.vmdk
[ec2-user@amazon-lnx ~]$


■インポート用シェルスクリプト作成
[ec2-user@amazon-lnx ~]$ cat vmdk_import.sh
#!/bin/bash

ec2-import-instance \
    --region ap-northeast-1 \
    --aws-access-key AKIAXXXXE2DB7AVDFRE4 \
    --aws-secret-key yXXXXXSKGX0mKsn8oL805DzOlR+rt56Drewi85MEmg \
    --instance-type c3.large \
    --group forpublic-sg03 \
    --format VMDK \
    --architecture x86_64 \
    --platform Linux \
    --bucket cloud-bucket05 \
    --owner-akid AKIAXXXXE2DB7AVDFRE4 \
    --owner-sak yXXXXXSKGX0mKsn8oL805DzOlR+rt56Drewi85MEmg \
    --availability-zone ap-northeast-1a \
    --subnet subnet-62ac600b \
    /home/ec2-user/cent65-web-disk1.vmdk

exit 0
[ec2-user@amazon-lnx ~]$
keyはあらかじめ環境変数に設定しておけば指定する必要はありません。
セキュリティーグループを指定しても、なぜかデフォルトグループが設定されます。
インポートできるインスタンスタイプに制限があります。こちらを参考にしてください。
availability-zoneを指定しないと下記のようなエラーに陥る場合があります。
[ec2-user@amazon-lnx ~]$ ./vmdk_import.sh
Requesting volume size: 100 GB
Client.InvalidParameter: Subnet 'subnet-62ac600b' is in the availability zone 'ap-northeast-1a'.
[ec2-user@amazon-lnx ~]$


■インポート実行
[ec2-user@amazon-lnx ~]$ ./vmdk_import.sh
Requesting volume size: 100 GB
TaskType        IMPORTINSTANCE  TaskId  import-i-fg5bb5f2       ExpirationTime  2014-05-30T07:51:01Z    Status  active  StatusMessage  Pending InstanceID      i-cdee1cd4
DISKIMAGE       DiskImageFormat VMDK    DiskImageSize   1644029440      VolumeSize      100       AvailabilityZone        ap-northeast-1c        ApproximateBytesConverted       0       Status  active  StatusMessage   Pending : Downloaded 0
Creating new manifest at cloud-bucket05/106dee24-5fff-4b4d-ac72-96b759e81450/cent65-web-disk1.vmdkmanifest.xml
Uploading the manifest file
Uploading 1644029440 bytes across 157 parts
0% |--------------------------------------------------| 100%
   |==================================================|
Done
Average speed was 7.145 MBps
The disk image for import-i-fg5bb5f2 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-user@amazon-lnxw ~]$
インポート作業中にS3を確認すると、指定したバケットに10MBのファイルがVMDKファイルサイズ分作成されていく。
インポートは成功。マネージメントコンソール上に新たなEC2が表示された。


■インポートしたVMの起動
マネージメントコンソールからstartしたが、下記エラー。
Are you sure you want to start this instance?
i-cdee1cd4 (cent65-web)
Error starting instances
Invalid value 'i-cdee1cd4' for instanceId. Instance does not have a volume attached at root (/dev/sda1)
原因はEBSを準備中に起動しようとしたため。しばらく待てば起動できた。
EC2正常起動完了後は、不要となったS3上のファイルは削除しました。


この情報が何かのお役にたてれば幸いです。m(_ _)m

0 件のコメント:

コメントを投稿