version 1.14, 2011/02/18 02:46:16
|
version 1.16, 2011/02/18 03:47:33
|
Line 15 Before you can start playing with Amazon
|
Line 15 Before you can start playing with Amazon
|
1. you "sign-up" directly on [Amazon Web Services](http://aws.amazon.com/) home-page. This is where you enter your credentials, and confirm your AWS account registration. |
1. you "sign-up" directly on [Amazon Web Services](http://aws.amazon.com/) home-page. This is where you enter your credentials, and confirm your AWS account registration. |
1. you sign-up to EC2 through [EC2 AWS home-page](http://aws.amazon.com/ec2/). You will be asked some more information, like a credit card (for billing), and a phone-number, for account validation. |
1. you sign-up to EC2 through [EC2 AWS home-page](http://aws.amazon.com/ec2/). You will be asked some more information, like a credit card (for billing), and a phone-number, for account validation. |
|
|
## What do you need to know |
## What do you need to know? |
|
|
EC2 uses different types of credentials. In addition to your login and password, you need an access key, a X.509 certificate (with its private key), and a pair of RSA keys, for remote SSH access. |
EC2 uses different types of credentials. In addition to your login and password, you need an access key, a X.509 certificate (with its private key), and a pair of RSA keys, for remote SSH access. |
|
|
Line 54 export EC2_SECRET_KEY=MYSECRETACCESSKEY
|
Line 54 export EC2_SECRET_KEY=MYSECRETACCESSKEY
|
|
|
Please note that the rest of the tutorial will assume that these variables are set. |
Please note that the rest of the tutorial will assume that these variables are set. |
|
|
### Installing EC2 API tools |
## Installing EC2 API tools |
|
|
NetBSD provides EC2 API tools, to ease EC2 account management a little bit. The package is found inside [pkgsrc](http://www.pkgsrc.org), under [[!template id=pkg category=misc name=ec2-api-tools]]. |
NetBSD provides EC2 API tools, to ease EC2 account management a little bit. The package is found inside [pkgsrc](http://www.pkgsrc.org), under [[!template id=pkg category=misc name=ec2-api-tools]]. |
|
|
Line 65 make ACCEPTABLE_LICENSES+=amazon-softwar
|
Line 65 make ACCEPTABLE_LICENSES+=amazon-softwar
|
|
|
Package depends on Java, so build will take some time to finish. While it builds, just continue reading. |
Package depends on Java, so build will take some time to finish. While it builds, just continue reading. |
|
|
### EC2 vocabulary -- last notes |
## EC2 vocabulary -- last notes |
|
|
Before starting to play with EC2, you need to be familiar with the EC2 vocabulary used throughout this tutorial. |
Before starting to play with EC2, you need to be familiar with the EC2 vocabulary used throughout this tutorial. |
|
|
Line 77 These instances are tied to a *region* (
|
Line 77 These instances are tied to a *region* (
|
|
|
AKI, or *Amazon Kernel Image*, are a specific type of image. It represents the Xen guest para-virtualized kernel, as used by an AMI. Certain AKIs are allowed to boot customized operating systems, e.g. those that are still not officially supported by Amazon. Thanks to [PyGrub](http://wiki.xensource.com/xenwiki/PyGrub), it can boot a kernel that resides inside an AMI's snapshot. |
AKI, or *Amazon Kernel Image*, are a specific type of image. It represents the Xen guest para-virtualized kernel, as used by an AMI. Certain AKIs are allowed to boot customized operating systems, e.g. those that are still not officially supported by Amazon. Thanks to [PyGrub](http://wiki.xensource.com/xenwiki/PyGrub), it can boot a kernel that resides inside an AMI's snapshot. |
|
|
# Building your first AMI (Amazon Image) |
# Building-up your NetBSD system |
|
|
## Pre-built AMIs |
|
|
|
(For the future) Once NetBSD has decent support for Amazon EC2, we will publish the AMI identifiers so you can quickly boot up in a NetBSD environment without going through all the steps given below. |
|
|
|
## Fetch and build NetBSD |
## Fetch and build NetBSD |
|
|
Line 93 This tutorial assumes that you will buil
|
Line 89 This tutorial assumes that you will buil
|
|
|
XXX build and install /mnt/ec2 |
XXX build and install /mnt/ec2 |
|
|
## Configuration |
# Configuration of your NetBSD EC2 tree |
|
|
/!\This part assumes that you have a non-configured NetBSD system extracted under */mnt/ec2*; that is, it should have not been modified through [[!template id=man name=sysinst section=8]], nor by you. |
/!\This part assumes that you have a non-configured NetBSD system extracted under */mnt/ec2*; that is, it should have not been modified through [[!template id=man name=sysinst section=8]], nor by you. |
|
|
Line 140 Image `NetBSD-AMI.img' complete
|
Line 136 Image `NetBSD-AMI.img' complete
|
$ gzip -9n NetBSD-AMI.img |
$ gzip -9n NetBSD-AMI.img |
"""]] |
"""]] |
|
|
## Upload your OS |
# Uploading NetBSD to EC2 |
|
|
We must now upload our NetBSD system to EC2. For that, we will have to create a minimalist EC2 instance, to which we will copy our files to construct our snapshots. For that, we will use an Amazon Linux AMI instance. |
We must now upload our NetBSD system to EC2. For that, we will have to create a minimalist EC2 instance, to which we will copy our files to construct our snapshots. For that, we will use an Amazon Linux AMI instance. |
|
|
Line 148 EC2 being localized in geographical regi
|
Line 144 EC2 being localized in geographical regi
|
|
|
The examples listed here assume that the instances run in **US East**, within the **c** zone (e.g. **us-east-1c**). To have a list of EC2 regions, you can use the command **ec2-describe-regions**, and **ec2-describe-availability-zones** for availability zones. |
The examples listed here assume that the instances run in **US East**, within the **c** zone (e.g. **us-east-1c**). To have a list of EC2 regions, you can use the command **ec2-describe-regions**, and **ec2-describe-availability-zones** for availability zones. |
|
|
### Creating the instance |
## Creating the instance |
|
|
Creating an instance straightforward. Amazon provides [different types of instances](http://aws.amazon.com/ec2/pricing/), with varying levels of billing and reliability. We will use a [*micro* instance](http://aws.amazon.com/ec2/faqs/#How_much_compute_power_do_Micro_instances_provide); its pricing is almost free. |
Creating an instance straightforward. Amazon provides [different types of instances](http://aws.amazon.com/ec2/pricing/), with varying levels of billing and reliability. We will use a [*micro* instance](http://aws.amazon.com/ec2/faqs/#How_much_compute_power_do_Micro_instances_provide); its pricing is almost free. |
|
|
Line 166 $ sleep 5 && ec2-describe-instances i-5b
|
Line 162 $ sleep 5 && ec2-describe-instances i-5b
|
INSTANCE i-5babe737 ami-74f0061d <strong>ec2-67-202-24-108.compute-1.amazonaws.com</strong> ip-10-99-86-193.ec2.internal running <your_ssh_key_pair_name> 0 t1.micro 2011-02-17T23:22:37+0000 us-east-1c aki-427d952b monitoring-disabled 67.202.24.108 10.99.86.193 ebs |
INSTANCE i-5babe737 ami-74f0061d <strong>ec2-67-202-24-108.compute-1.amazonaws.com</strong> ip-10-99-86-193.ec2.internal running <your_ssh_key_pair_name> 0 t1.micro 2011-02-17T23:22:37+0000 us-east-1c aki-427d952b monitoring-disabled 67.202.24.108 10.99.86.193 ebs |
"""]] |
"""]] |
|
|
### Upload your files |
## Upload your files |
|
|
We will have to create and attach two EBS volumes: |
We will have to create and attach two EBS volumes: |
|
|
1. one to contain the Grub *menu.lst* config file, as well as the NetBSD kernel. |
1. one to contain the Grub *menu.lst* config file, as well as the NetBSD kernel. |
1. the other one will contain the root file-system. |
1. the other one will contain the root file-system. |
|
|
#### Creating and attaching volumes |
### Creating and attaching volumes |
|
|
[[!template id=programlisting text=""" |
[[!template id=programlisting text=""" |
<strong>ec2-create-volume -s 1 -z us-east-1c</strong> # 1GiB -- will be used for Grub and kernel |
<strong>ec2-create-volume -s 1 -z us-east-1c</strong> # 1GiB -- will be used for Grub and kernel |
Line 197 VOLUME vol-24f88d4c 1
|
Line 193 VOLUME vol-24f88d4c 1
|
ATTACHMENT vol-24f88d4c i-5babe737 /dev/sdg attached 2011-02-18T00:14:10+0000 |
ATTACHMENT vol-24f88d4c i-5babe737 /dev/sdg attached 2011-02-18T00:14:10+0000 |
"""]] |
"""]] |
|
|
### Snapshots! |
## Snapshots! |
|
|
We have to upload the kernel and the NetBSD disk image created earlier, *NetBSD-AMI.img*, to our instance host: |
We have to upload the kernel and the NetBSD disk image created earlier, *NetBSD-AMI.img*, to our instance host: |
|
|
Line 241 EOF
|
Line 237 EOF
|
[root@ip-10-99-86-193 ec2-user]# sync |
[root@ip-10-99-86-193 ec2-user]# sync |
"""]] |
"""]] |
|
|
### Shutdown the Linux instance |
## Shutdown the Linux instance |
|
|
We now have to detach volumes, snapshot them, then we shutdown the Linux instance. |
We now have to detach volumes, snapshot them, then we shutdown the Linux instance. |
|
|
Line 258 SNAPSHOT <strong>snap-8aef2be6</s
|
Line 254 SNAPSHOT <strong>snap-8aef2be6</s
|
INSTANCE i-5babe737 running shutting-down |
INSTANCE i-5babe737 running shutting-down |
"""]] |
"""]] |
|
|
|
# Playing with your first NetBSD instance |
|
|
## Create your first NetBSD AMI |
## Create your first NetBSD AMI |
|
|
An AMI requires multiples components to be registered: the snapshots IDs we made in the previous chapter, as well as a specific AKI: the one that can chain-load Xenified kernels through PyGrub. |
An AMI requires multiples components to be registered: the snapshots IDs we made in the previous chapter, as well as a specific AKI: the one that can chain-load Xenified kernels through PyGrub. |
Line 270 The list of AKIs that suits our situatio
|
Line 268 The list of AKIs that suits our situatio
|
# Obtain all kernel images (AKI) for region US East, for which manifest location contains pv-grub (for PyGrub) |
# Obtain all kernel images (AKI) for region US East, for which manifest location contains pv-grub (for PyGrub) |
# ec2-describe-images -a --region=us-east-1 -F image-type=kernel -F manifest-location=*pv-grub* |
# ec2-describe-images -a --region=us-east-1 -F image-type=kernel -F manifest-location=*pv-grub* |
IMAGE aki-407d9529 ec2-public-images/pv-grub-hd0-V1.01-i386.gz.manifest.xml amazon available public i386 kernel instance-store paravirtual xen |
IMAGE aki-407d9529 ec2-public-images/pv-grub-hd0-V1.01-i386.gz.manifest.xml amazon available public i386 kernel instance-store paravirtual xen |
IMAGE aki-427d952b ec2-public-images/pv-grub-hd0-V1.01-x86_64.gz.manifest.xml amazon available public x86_64 kernel instance-store paravirtual xen |
<strong>IMAGE aki-427d952b ec2-public-images/pv-grub-hd0-V1.01-x86_64.gz.manifest.xml amazon available public x86_64 kernel instance-store paravirtual xen</strong> |
IMAGE aki-4c7d9525 ec2-public-images/pv-grub-hd00-V1.01-i386.gz.manifest.xml amazon available public i386 kernel instance-store paravirtual xen |
IMAGE aki-4c7d9525 ec2-public-images/pv-grub-hd00-V1.01-i386.gz.manifest.xml amazon available public i386 kernel instance-store paravirtual xen |
<strong>IMAGE aki-4e7d9527 ec2-public-images/pv-grub-hd00-V1.01-x86_64.gz.manifest.xml amazon available public x86_64 kernel instance-store paravirtual xen</strong> |
IMAGE aki-4e7d9527 ec2-public-images/pv-grub-hd00-V1.01-x86_64.gz.manifest.xml amazon available public x86_64 kernel instance-store paravirtual xen |
"""]] |
"""]] |
|
|
We pick the one with the correct architecture (x86_64). **hd00** are for EBS backed images, while **hd0** are for S3 backed ones. Chose **hd00** AKIs. In our case, its ID is **aki-4e7d9527**. |
Pick the one with the correct architecture (x86_64 here). **hd0** are for AMIs where the snapshot contains no partition (where the volume is itself the whole partition), while **hd00** are for snapshots partitioned in a classical way (via MBR). Choose **hd0** AKIs. In this case, that will be **aki-427d952b**. |
|
|
We can proceed to the creation of our AMI, with: |
We can proceed to the creation of our AMI, with: |
|
|
Line 289 $ ec2-register -a x86_64 --kernel aki-4e
|
Line 287 $ ec2-register -a x86_64 --kernel aki-4e
|
IMAGE <strong>ami-74d0231d</strong> |
IMAGE <strong>ami-74d0231d</strong> |
"""]] |
"""]] |
|
|
# Play with your first NetBSD instance |
## Launch your first instance |
|
|
You can now start your own NetBSD instance, via: |
You can now start your own NetBSD instance, via: |
|
|
Line 300 INSTANCE <strong>i-953d72f9</stro
|
Line 298 INSTANCE <strong>i-953d72f9</stro
|
*** Wait a few minutes, micro instances take time to start *** |
*** Wait a few minutes, micro instances take time to start *** |
# Query console output for your new instance |
# Query console output for your new instance |
$ ec2-get-console-output i-953d72f9 |
$ ec2-get-console-output i-953d72f9 |
|
Copyright (c) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, |
|
2006, 2007, 2008, 2009, 2010, 2011 |
|
The NetBSD Foundation, Inc. All rights reserved. |
|
Copyright (c) 1982, 1986, 1989, 1991, 1993 |
|
The Regents of the University of California. All rights reserved. |
|
|
|
NetBSD 5.99.45 (XEN3_DOMU) #9: Wed Feb 16 21:14:49 CET 2011 |
|
jym@paris:/home/jym/cvs/obj/sys/arch/amd64/compile/XEN3_DOMU |
[...] |
[...] |
"""]] |
"""]] |
|
|
## Connect to it |
## Connect to your NetBSD instance |
|
|
## And now? |
## And now? |