1 package Oyster::Provision::AmazonEC2;
7 has 'api_username' => ( is => 'ro', isa => 'Str', required => 1, default => sub {
8 return "AKIAJXSD25MPWFYTQWIQ";
9 confess "Need api_username";
11 has 'api_password' => ( is => 'ro', isa => 'Str', required => 1, default => sub {
12 return "m76s9DyoXrHdpVy8HkhjgD0RAjy14bhkQ5Zts/gg";
13 confess "Need api_password";
16 has ec2_oyster_key => (is => 'rw', isa => 'Str', default => "OysterDefault");
21 my $ec2 = Net::Amazon::EC2->new(
22 AWSAccessKeyId => $self->api_username,
23 SecretAccessKey => $self->api_password,
26 my $key_pairs = $ec2->describe_key_pairs({ KeyName => $self->ec2_oyster_key });
28 unless(defined($key_pairs)) {
30 print("Creating $ec2_oyster_key key pair\n");
31 $ec2->create_key_pair({ KeyName => $self->ec2_oyster_key });
43 # Start 1 new instance from AMI: ami-XXXXXXXX
44 my $instance = $ec2->run_instances(
45 ImageId => $self->image() or "ami-1a837773",
46 KeyName => $self->ec2_oyster_key,
71 Oyster::Provision::AmazonEC2 -- Provision your Oyster on Amazon EC2
75 Use the Rackspace backend on your Oyster configuration file
77 =head1 REQUIRED PARAMETERS
79 The following are required to instantiate a backend:
85 The name of your new/existing rackspace server.
89 This is a key name to pass to EC2
93 The size ID of the rackspace server you want to create.
94 Use the following incantation to see them:
96 perl -MNet::RackSpace::CloudServers -e'
97 $r=Net::RackSpace::CloudServers->new(
98 user=>$ENV{CLOUDSERVERS_USER},
99 key=>$ENV{CLOUDSERVERS_KEY},
102 { "id $_->{id} ram $_->{ram} disk $_->{disk}\n" }
103 $r->get_flavor_detail
107 id 3 ram 1024 disk 40
108 id 4 ram 2048 disk 80
109 id 5 ram 4096 disk 160
110 id 6 ram 8192 disk 320
111 id 7 ram 15872 disk 620
115 The image ID of the rackspace server you want to create.
116 Use the following incantation to see them:
118 perl -MNet::RackSpace::CloudServers -e'
119 $r=Net::RackSpace::CloudServers->new(
120 user=>$ENV{CLOUDSERVERS_USER},
121 key=>$ENV{CLOUDSERVERS_KEY},
124 { "id $_->{id} name $_->{name}\n" }
127 id 29 name Windows Server 2003 R2 SP2 x86
128 id 69 name Ubuntu 10.10 (maverick)
129 id 41 name Oracle EL JeOS Release 5 Update 3
130 id 40 name Oracle EL Server Release 5 Update 4
131 id 187811 name CentOS 5.4
132 id 4 name Debian 5.0 (lenny)
133 id 10 name Ubuntu 8.04.2 LTS (hardy)
134 id 23 name Windows Server 2003 R2 SP2 x64
135 id 24 name Windows Server 2008 SP2 x64
136 id 49 name Ubuntu 10.04 LTS (lucid)
137 id 14362 name Ubuntu 9.10 (karmic)
138 id 62 name Red Hat Enterprise Linux 5.5
142 id 31 name Windows Server 2008 SP2 x86
143 id 51 name CentOS 5.5
144 id 14 name Red Hat Enterprise Linux 5.4
145 id 19 name Gentoo 10.1
146 id 28 name Windows Server 2008 R2 x64
147 id 55 name Arch 2010.05
149 Oyster only supports Linux images, specifically
150 Ubuntu 10.10 (maverick).
154 The public ssh key you would like copied to the
155 new server's C</root/.ssh/authorized_keys> file
156 to allow you to ssh in the box without providing