Possibly fixed test
[p5sagit/Oyster.git] / .build / spEUsgyear / lib / Oyster / Provision / AmazonEC2.pm
CommitLineData
e74d6d9c 1package Oyster::Provision::AmazonEC2;
2use Moose::Role;
3use Net::Amazon::EC2;
4
5requires 'config';
6
7my $ec2_image_id = "ami-1a837773";
8my $ec2_username = "AKIAJXSD25MPWFYTQWIQ";
9my $ec2_password = "m76s9DyoXrHdpVy8HkhjgD0RAjy14bhkQ5Zts/gg";
10
11my $ec2 = Net::Amazon::EC2->new(
12 AWSAccessKeyId => $ec2_username,
13 SecretAccessKey => $ec2_password,
14);
15
16my $ec2_oyster_key = "OysterDefault";
17my $key_pairs = $ec2->describe_key_pairs({ KeyName => $ec2_oyster_key });
18
19unless(defined($key_pairs)) {
20
21 print("Creating $ec2_oyster_key key pair\n");
22 $ec2->create_key_pair({ KeyName => $ec2_oyster_key });
23
24}
25
26
27sub create {
28 my $self = shift;
29
30 $self->config();
31
32
33 # Start 1 new instance from AMI: ami-XXXXXXXX
34 my $instance = $ec2->run_instances(
35 ImageId => $ec2_image_id,
36 KeyName => $ec2_oyster_key,
37 MinCount => 1,
38 MaxCount => 1,
39 );
40
41}
42
43sub delete {
44 my $self = shift;
45
46 $self->config();
47}
48
49sub resize {
50 my $self = shift;
51
52 $self->config();
53}
54
551;
56
57__END__
58
59=head1 NAME
60
61Oyster::Provision::AmazonEC2 -- Provision your Oyster on Amazon EC2
62
63=head1 SYNOPSIS
64
65Use the Rackspace backend on your Oyster configuration file
66
67=head1 REQUIRED PARAMETERS
68
69The following are required to instantiate a backend:
70
71=over
72
73=item name
74
75The name of your new/existing rackspace server.
76
77=item size
78
79The size ID of the rackspace server you want to create.
80Use the following incantation to see them:
81
82 perl -MNet::RackSpace::CloudServers -e'
83 $r=Net::RackSpace::CloudServers->new(
84 user=>$ENV{CLOUDSERVERS_USER},
85 key=>$ENV{CLOUDSERVERS_KEY},
86 );
87 print map
88 { "id $_->{id} ram $_->{ram} disk $_->{disk}\n" }
89 $r->get_flavor_detail
90 '
91 id 1 ram 256 disk 10
92 id 2 ram 512 disk 20
93 id 3 ram 1024 disk 40
94 id 4 ram 2048 disk 80
95 id 5 ram 4096 disk 160
96 id 6 ram 8192 disk 320
97 id 7 ram 15872 disk 620
98
99=item image
100
101The image ID of the rackspace server you want to create.
102Use the following incantation to see them:
103
104 perl -MNet::RackSpace::CloudServers -e'
105 $r=Net::RackSpace::CloudServers->new(
106 user=>$ENV{CLOUDSERVERS_USER},
107 key=>$ENV{CLOUDSERVERS_KEY},
108 );
109 print map
110 { "id $_->{id} name $_->{name}\n" }
111 $r->get_image_detail
112 '
113 id 29 name Windows Server 2003 R2 SP2 x86
114 id 69 name Ubuntu 10.10 (maverick)
115 id 41 name Oracle EL JeOS Release 5 Update 3
116 id 40 name Oracle EL Server Release 5 Update 4
117 id 187811 name CentOS 5.4
118 id 4 name Debian 5.0 (lenny)
119 id 10 name Ubuntu 8.04.2 LTS (hardy)
120 id 23 name Windows Server 2003 R2 SP2 x64
121 id 24 name Windows Server 2008 SP2 x64
122 id 49 name Ubuntu 10.04 LTS (lucid)
123 id 14362 name Ubuntu 9.10 (karmic)
124 id 62 name Red Hat Enterprise Linux 5.5
125 id 53 name Fedora 13
126 id 17 name Fedora 12
127 id 71 name Fedora 14
128 id 31 name Windows Server 2008 SP2 x86
129 id 51 name CentOS 5.5
130 id 14 name Red Hat Enterprise Linux 5.4
131 id 19 name Gentoo 10.1
132 id 28 name Windows Server 2008 R2 x64
133 id 55 name Arch 2010.05
134
135Oyster only supports Linux images, specifically
136Ubuntu 10.10 (maverick).
137
138=item pub_ssh
139
140The public ssh key you would like copied to the
141new server's C</root/.ssh/authorized_keys> file
142to allow you to ssh in the box without providing
143a root password.
144
145=back
146
147=cut