Firstly if your existing machine is physical you should download the vCenter converter from below:
https://www.vmware.com/products/converter
Once you have converted your physical machine into a virtualized format you should download and install the AWS Command Line Interface from:
http://aws.amazon.com/cli/
There are also some pre-requisites on importing / exporting machines from AWS - including the operating system support:
- Microsoft Windows Server 2003 (with at least SP1)
- Microsoft Windows Server 2003 R2
- Microsoft Windows Server 2008
- Microsoft Windows Server 2008 R2
- Microsoft Windows Server 2012
- Microsoft Windows Server 2012 R2
- Windows 7
- Windows 8
- Windows 8.1
- Various Linux Versions
Disk images must be in either VHD, VMDK or OVA containers.
For a more detailed list please see:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/VMImportPrerequisites.html
We wil proceed by uploading our VMDK image to AWS via the AWS Command Line Interface by opening up a command prompt:
cd C:\Program Files\Amazon\AWSCLI
aws --version
Run the following to configure your AWS command line client:
aws configure
We will also need to create a specific role that will allow us to perform the import process - so we should create a file named "role.json" containing the following:
{
"Version":"2012-10-17",
"Statement":[
{
"Sid":"",
"Effect":"Allow",
"Principal":{
"Service":"vmie.amazonaws.com"
},
"Action":"sts:AssumeRole",
"Condition":{
"StringEquals":{
"sts:ExternalId":"vmimport"
}
}
}
]
}
and create the role, specifying the file we just created:
aws iam create-role --role-name vmimport --assume-role-policy-document file://role.json
We will also have to create a role policy - so create another file called "policy.json" and insert the following (replacing <
disk-image-file-bucket> with the bucket where you VMDK file is stored:
And then run the following command to apply the policy:{ "Version":"2012-10-17", "Statement":[ { "Effect":"Allow", "Action":[ "s3:ListBucket", "s3:GetBucketLocation" ], "Resource":[ "arn:aws:s3:::<disk-image-file-bucket>
" ] }, { "Effect":"Allow", "Action":[ "s3:GetObject" ], "Resource":[ "arn:aws:s3:::<disk-image-file-bucket>
/*" ] }, { "Effect":"Allow", "Action":[ "ec2:ModifySnapshotAttribute", "ec2:CopySnapshot", "ec2:RegisterImage", "ec2:Describe*" ], "Resource":"*" } ] }
aws iam put-role-policy --role-name vmimport --policy-name vmimport --policy-document file://policy.json
Proceed by creating a new S3 bucket (if needed) for the VMDK file:
aws s3 mb s3://bucket-name
And copy the VMDK on your local file system to the newly created bucket:
aws s3 cp C:\path-to-vmdk\vm.vmdk s3://bucket-name/test2.txt
Finally verify it has uploaded successfuly:
aws s3 ls s3://mybucket
We can now use the import-image command to import the image into AWS.
For importing multiple VMDK's we can use:
$ aws ec2 import-image --cli-input-json "{ \"Description\": \"Windows 2008 VMDKs\", \"DiskContainers\": [ { \"Description\": \"Second CLI task\", \"UserBucket\": { \"S3Bucket\": \"my-import-bucket\", \"S3Key\" : \"my-windows-2008-vm-disk1.vmdk\" } }, { \"Description\": \"First CLI task\", \"UserBucket\": { \"S3Bucket\": \"my-import-bucket\", \"S3Key\" : \"my-windows-2008-vm-disk2.vmdk\" } } ] }"
or for importing a single OVA file we can use:
$ aws ec2 import-image --cli-input-json "{ \"Description\": \"Windows 2008 OVA\", \"DiskContainers\": [ { \"Description\": \"First CLI task\", \"UserBucket\": { \"S3Bucket\": \"my-import-bucket\", \"S3Key\" : \"my-windows-2008-vm.ova\" } } ]}"
For more detailed information please refer to:
http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/ImportVMImportImage.html
We can monitor the import process with:
ec2 describe-import-image-tasks
We are then able to launch an instance of the VM we imported as an AMI:
ec2-run-instances ami-1111111 -k my-key-pair --availability-zone us-east-1a
No comments:
Post a Comment