4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
1 |
========================= |
2 |
Bazaar Windows EC2 Server |
|
3 |
========================= |
|
4 |
||
5 |
We have an Amazon EC2 virtual machine called Desolation_ for |
|
6 |
building Windows packages and general testing on Windows. As of |
|
7 |
2009-02-19, this is just experimental and this is a draft specification, |
|
8 |
but we aim to use it for the production Windows installer build of 1.13 in |
|
9 |
March. |
|
10 |
||
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
11 |
See also: |
4012.2.2
by Martin Pool
ReST syntax fix |
12 |
|
13 |
* `Bazaar Developer Documentation Catalog <index.html>`_. |
|
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
14 |
|
15 |
||
16 |
.. _Desolation: http://en.wikipedia.org/wiki/Desolation_Island |
|
17 |
||
18 |
||
19 |
Goals |
|
20 |
===== |
|
21 |
||
22 |
* The instance is only running (and incurring charges) when it's needed |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
23 |
for testing or packaging. |
24 |
||
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
25 |
* It can be started or stopped by anyone on the team using a |
26 |
straightforward script. |
|
27 |
||
28 |
* Multiple people can get into the same instance at the same time, e.g. |
|
29 |
if one person needs to pass work on to some one else. |
|
30 |
||
31 |
* We keep snapshot of the OS and tool chain so that we can roll back if |
|
32 |
we need to. |
|
33 |
||
34 |
* bzr branches and similar information are kept on stable storage that |
|
35 |
survives rollbacks of the OS state, and that can be backed up. |
|
36 |
||
37 |
Later on we may try automated Windows testing in a similar setup. |
|
38 |
||
39 |
||
40 |
Approach |
|
41 |
======== |
|
42 |
||
43 |
The working disk and the AMI images are stored in one person's account for |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
44 |
billing purposes. |
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
45 |
|
46 |
Ideally we want to give other people access to run this machine without |
|
47 |
giving full access to the account. I'm not sure if that's feasible. If |
|
48 |
it's not, we might need to allow people to launch the image within their |
|
49 |
own account; this may be problematic if the shared volume is already in |
|
50 |
use by someone else. |
|
51 |
||
52 |
I don't think it's possible to have an EBS that's shared across accounts, |
|
53 |
and they can't be attached to multiple running instances. So for now it's |
|
54 |
probably best to just ignore the concept and store the working data on the |
|
55 |
instance's local storage, and to copy things up e.g. to Launchpad as |
|
56 |
required. |
|
57 |
||
58 |
On this machine, ``C:`` should be used only for the Windows system files, |
|
59 |
``D:`` for installed programs and working directories, and other drive |
|
60 |
letters can be used later for mounting EBS storage if desired. |
|
61 |
||
62 |
Through ``ec2-modify-image-attribute`` we can allow nominated users to |
|
63 |
access an existing image. We need to have their AWS opaque ID. |
|
64 |
||
65 |
Through ``ec2-bundle-image`` we can make a new snapshot at any point, |
|
66 |
which will be stored into the current user's S3 account. |
|
67 |
||
68 |
We'll (probably) have one shared account for running builds which is also |
|
69 |
an administrator for ease of installing software. |
|
70 |
||
71 |
You do need to have an RSA keypair to get the initial password for a |
|
4165.3.1
by Robert Collins
Various tweaks to ec2 stuff, and make it less windows only. |
72 |
Windows machine, even though you can't use it to log in later. |
4165.3.2
by Robert Collins
Review feedback. |
73 |
``ec2-get-password`` takes the full path to the private key to obtain the |
74 |
password from Amazon, and ``ec2-add-keypair`` creates a named keypair at |
|
4165.3.1
by Robert Collins
Various tweaks to ec2 stuff, and make it less windows only. |
75 |
Amazon and returns the private path. One keypair is all that is needed. |
76 |
This is distinct from the account identifier - likely due to the different |
|
77 |
toolchains in use (the keypairs are used for unix ssh keys, and I (Robert) |
|
78 |
suspect a rather unix friendly core at Amazon). |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
79 |
Once a custom image is made with a saved password, you can skip using |
4165.3.2
by Robert Collins
Review feedback. |
80 |
``ec2-get-password`` (which is only needed for Windows anyway). |
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
81 |
|
82 |
It would be nice if rdesktop could use private key authentication but |
|
83 |
apparently not. |
|
84 |
||
85 |
Should check how the Launchpad ec2test scripts work. |
|
86 |
||
87 |
||
88 |
||
89 |
Procedures |
|
90 |
========== |
|
91 |
||
92 |
Preparation |
|
93 |
----------- |
|
94 |
||
95 |
* Be in the bzr core team. If you are interested in helping with |
|
96 |
Windows packaging, testing or development just ask. |
|
97 |
||
98 |
* Install the |
|
99 |
`Amazon EC2 API tools`_ (needs-packaging `bug 330930`_) |
|
100 |
||
4165.3.1
by Robert Collins
Various tweaks to ec2 stuff, and make it less windows only. |
101 |
* Create an Amazon Web Services account, sign up for S3 and EC2, and do |
102 |
the various steps to create authentication devices. |
|
103 |
||
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
104 |
* Create a private key and certificate for yourself. |
105 |
Check these environment variables are set and exported, e.g. by setting |
|
106 |
them in the file ``~/.aws``. Make sure the files are private.:: |
|
107 |
||
4165.3.1
by Robert Collins
Various tweaks to ec2 stuff, and make it less windows only. |
108 |
export EC2_PRIVATE_KEY=~/.ec2/pk-XXXXXX.pem |
109 |
export EC2_CERT=~/.ec2/cert-XXXXXX.pem |
|
110 |
export EC2_HOME=~/build/ec2-api-tools-1.3-30349 |
|
111 |
export AWS_SECRET_ACCESS_KEY=XXXXXXXXX |
|
112 |
export AWS_ACCESS_KEY_ID=XXXXXXXXXXX |
|
113 |
export EC2_KEYPAIR_NAME=XXXXXXXXX |
|
114 |
export PATH=$PATH:$EC2_HOME/bin |
|
115 |
export JAVA_HOME=/usr/lib/jvm/java-6-openjdk |
|
116 |
ssh-add ~/.ec2/id_rsa |
|
117 |
||
118 |
You can now '. ~/.aws' to get the ec2 commands available. |
|
119 |
||
120 |
* (Unix images only) run ec2-add-keypair SOMENAME, e.g. 'bzr'. Put the |
|
121 |
result (minus the first line) somewhere like ~/.ec2/id_rsa and chmod go-rw. |
|
122 |
||
123 |
* A useful Unix image is `ami-bdfe19d4`_, Eric Hammonds 64-bit Ubuntu image. |
|
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
124 |
|
125 |
* Install the rdesktop client, to actually access the machine. |
|
126 |
||
127 |
* Possibly read some of the `EC2 documentation`_ for background. |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
128 |
|
129 |
.. _`bug 330930`: https://bugs.edge.launchpad.net/ubuntu/+bug/330930 |
|
130 |
.. _`Amazon EC2 API tools`: |
|
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
131 |
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=368&categoryID=88 |
132 |
.. _`EC2 documentation`: http://aws.amazon.com/ |
|
4165.3.1
by Robert Collins
Various tweaks to ec2 stuff, and make it less windows only. |
133 |
.. _`ami-bdfe19d4`: |
134 |
http://developer.amazonwebservices.com/connect/entry.jspa?externalID=1762&categoryID=101 |
|
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
135 |
|
136 |
* Create a security group for your that allows rdesktop access and icmp with:: |
|
137 |
||
138 |
ec2-add-group desolation-group -d 'bzr win32 build machine' |
|
139 |
ec2-authorize desolation-group -p 3389 -s 1.2.3.4/32 |
|
140 |
ec2-authorize desolation-group -t -1:-1 -P icmp |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
141 |
|
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
142 |
Add your public IP there. You can repeat that command to allow others |
143 |
in. |
|
144 |
||
145 |
||
146 |
To start up an instance |
|
147 |
----------------------- |
|
148 |
||
149 |
1. Get the right AMI image ID from another developer. |
|
150 |
||
151 |
1. Start the instance:: |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
152 |
|
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
153 |
ec2-run-instances $image_id -g desolation-group |
154 |
||
155 |
This will print out some information including the image id, something |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
156 |
like ``i-31a74258``. |
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
157 |
|
158 |
1. Actually starting the machine will take a few minutes. Once it's in |
|
159 |
the *running* state, get the machine's public IP with :: |
|
160 |
||
161 |
ec2-describe-instances |
|
162 |
||
163 |
1. and then connect :: |
|
164 |
||
165 |
rdesktop -g 1200x850 -u Administrator $machine_ip |
|
166 |
||
167 |
Don't forget to shut it down when you're done, and check with |
|
168 |
``ec2-describe-instances`` that it did terminate. |
|
169 |
||
170 |
||
171 |
To save a system snapshot as an image |
|
172 |
------------------------------------- |
|
173 |
||
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
174 |
1. Bundle the current state. *Doing this will reboot the machine.* |
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
175 |
You need to choose a unique s3 bucket name, |
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
176 |
typically based on a domain or email address, which can contain |
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
177 |
any number of images. You also need a name unique within the bucket |
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
178 |
for this image, like ``desolation-vs2008-20090219``. And finally |
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
179 |
it needs your AWS S3 access key and secret key, which should be set in |
180 |
``~/.aws``:: |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
181 |
|
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
182 |
ec2-bundle-instance -b ec2.sourcefrog.net \ |
183 |
-p desolation-vs2008-2009021 \ |
|
184 |
-o "$AWS_ACCESS_KEY_ID" \ |
|
4853.1.1
by Patrick Regan
Removed trailing whitespace from files in doc directory |
185 |
-w "$AWS_SECRET_ACCESS_KEY" |
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
186 |
|
187 |
1. This will take several minutes: You can check progress with :: |
|
188 |
||
189 |
ec2-describe-bundle-tasks |
|
190 |
||
191 |
1. Register the files as an image, e.g.:: |
|
192 |
||
193 |
ec2-register ec2.sourcefrog.net/desolation-vs2008-2009021 |
|
194 |
||
195 |
This will give you an AMI id for the image. |
|
196 |
||
197 |
1. Give access to other team members identified by their Amazon account id:: |
|
198 |
||
199 |
ec2-modify-image-attributes $ami_id -l -a 123412341234 |
|
200 |
||
201 |
||
4165.3.1
by Robert Collins
Various tweaks to ec2 stuff, and make it less windows only. |
202 |
Management console (useful!) |
203 |
---------------------------- |
|
204 |
||
205 |
https://console.aws.amazon.com/ec2/home |
|
206 |
||
4012.2.1
by Martin Pool
Documentation on using EC2 Windows VM |
207 |
.. |
208 |
vim: ft=rst tw=74 ai |