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 件のコメント:
コメントを投稿