ec2-instance-manager 0.3.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/LICENSE CHANGED
@@ -1,4 +1,4 @@
1
- Copyright (c) 2009 Oliver Kiessler
1
+ Copyright (c) 2009-2011 Oliver Kiessler
2
2
 
3
3
  Permission is hereby granted, free of charge, to any person obtaining
4
4
  a copy of this software and associated documentation files (the
data/README.md ADDED
@@ -0,0 +1,112 @@
1
+ ec2-instance-manager
2
+ ====================
3
+
4
+ ec2-instance-manager is a command line utility written in ruby to manage Amazon EC2 instances and clusters (launchplan groups) for multiple AWS accounts (customer config keys).
5
+
6
+ You can launch and terminate EC2 instances, create whole launchplans of instances divided into groups, start all launchplan groups or start a specific launchplan group, assign public IP's and attach volumes.
7
+
8
+
9
+ Installation:
10
+ -------------
11
+
12
+ [sudo] gem install amazon-ec2 ec2-instance-manager
13
+
14
+
15
+ Configuration:
16
+ --------------
17
+
18
+ You can either run ec2-instance-manager from a local "config.yml" in your current work directory or use a global ".ec2_instance_manager_config.yml" in your home directory. If a local configuration file in the current work directory is found, it has precendence over the global configuration file.
19
+
20
+ There are basically two types of launchplan instance definitions:
21
+
22
+ 1. Simple
23
+ 2. Detailed
24
+
25
+ With the simple type you can quickly launch a number of instances by their AMI ID. This type uses the default settings for availability_zone, instance_type and architecture.
26
+
27
+ If you need fine-grained control over each instance, you should go for the detailed launchplan instance definition. You can name each instance in a group. Make sure the instance nicknames are unique.
28
+
29
+ Each definition consists of the following required values:
30
+
31
+ * AMI ID
32
+ * Architecture (x86_64 or i386)
33
+ * EC2 Instance Type
34
+
35
+ You can also specify the following optional values:
36
+
37
+ * Elastic IP to assign
38
+ * Volumes to attach at a given mountpoint (Comma separated)
39
+
40
+ The instances are created sequentially in order of their definition.
41
+
42
+ Configuration example:
43
+
44
+ default: # Default customer config key
45
+ amazon_access_key_id: YOUR_ACCESS_KEY
46
+ amazon_secret_access_key: YOUR_SECRET
47
+ amazon_account_number: YOUR_CUSTOMER_NUMBER
48
+ ec2_server_region: "eu-west-1.ec2.amazonaws.com"
49
+ key: YOUR_SSH_KEY
50
+ availability_zone: eu-west-1a
51
+ instance_type: t1.micro
52
+ architecture: x86_64 #i386
53
+ launch_plan:
54
+ webservers:
55
+ "ami_id_xxx1": 2
56
+ dbservers:
57
+ "ami_id_xxx2": 1
58
+ detailed:
59
+ "appserver1": "ami_id_xxx3;x86_64;t1.micro;"
60
+ "appserver2": "ami_id_xxx3;x86_64;t1.micro;192.168.1.1;vol-xxx1@/dev/sdf,vol-xxx2@/dev/sdg"
61
+ "appserver3": "ami_id_xxx3;x86_64;t1.micro;;vol-xxx3@/dev/sdf,vol-xxx4@/dev/sdg"
62
+
63
+
64
+ Please have a look at the "config.yml.sample" for further configuration examples.
65
+
66
+
67
+ Usage:
68
+ ------
69
+
70
+ Run ec2-instance-manager --help for options and commands.
71
+
72
+ ec2-instance-manager 0.4.0 [options]
73
+ -s, --status Status only
74
+ -t, --terminate-all Terminates all instances running under a customer config key
75
+ -l, --start-launch-plan Starts a launch plan under a customer config key
76
+ -g, --group LAUNCH_GROUP_NAME Starts a launch plan group under a customer config key
77
+ -c, --config CONFIG_KEY Sets the customer config key
78
+ -h, --help Display this screen
79
+
80
+
81
+ Examples:
82
+ ---------
83
+
84
+ Checking the status of your instances/cluster:
85
+
86
+ ec2-instance-manager -c YOUR_CONFIG_KEY -s
87
+
88
+ Terminating all instances:
89
+
90
+ ec2-instance-manager -c YOUR_CONFIG_KEY -t
91
+
92
+ Terminating all instances of a launch group:
93
+
94
+ ec2-instance-manager -c YOUR_CONFIG_KEY -g LAUNCH_GROUP_NAME -t
95
+
96
+ Launching all groups of your launchplan:
97
+
98
+ ec2-instance-manager -c YOUR_CONFIG_KEY -l
99
+
100
+ Launching a specific group of your launchplan:
101
+
102
+ ec2-instance-manager -c YOUR_CONFIG_KEY -g LAUNCH_GROUP_NAME -l
103
+
104
+ Launching an individual instance without a definition (launch console):
105
+
106
+ ec2-instance-manager -c YOUR_CONFIG_KEY
107
+
108
+
109
+ Copyright
110
+ ---------
111
+
112
+ Copyright (c) 2009-2011 Oliver Kiessler. See LICENSE for details.
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ begin
11
11
  gem.homepage = "http://github.com/okiess/ec2-instance-manager"
12
12
  gem.authors = ["Oliver Kiessler"]
13
13
  gem.add_dependency "amazon-ec2"
14
- gem.add_development_dependency "thoughtbot-shoulda"
14
+ # gem.add_development_dependency "shoulda"
15
15
  # gem is a Gem::Specification... see http://www.rubygems.org/read/chapter/20 for additional settings
16
16
  end
17
17
  rescue LoadError
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.1
1
+ 0.4.0
@@ -2,16 +2,6 @@
2
2
 
3
3
  require File.dirname(__FILE__) + '/../lib/ec2-instance-manager'
4
4
 
5
- if ENV['AMAZON_ACCESS_KEY_ID'].nil? or ENV['AMAZON_SECRET_ACCESS_KEY'].nil?
6
- if ENV['AMAZON_ACCESS_KEY_ID'].nil?
7
- puts "Please set your AMAZON_ACCESS_KEY_ID environment variable (for your default account)."
8
- end
9
- if ENV['AMAZON_SECRET_ACCESS_KEY'].nil?
10
- puts "Please set your AMAZON_SECRET_ACCESS_KEY environment variable (for your default account)."
11
- end
12
- exit
13
- end
14
-
15
5
  # Create and run the application
16
6
  app = Ec2InstanceManager.new(ARGV, STDIN)
17
7
  app.run
data/config.yml.sample CHANGED
@@ -1,31 +1,41 @@
1
- default:
1
+ default: # Default customer config key
2
2
  amazon_access_key_id:
3
3
  amazon_secret_access_key:
4
4
  amazon_account_number:
5
+ ec2_server_region: "eu-west-1.ec2.amazonaws.com"
5
6
  key:
6
7
  availability_zone: eu-west-1a
7
- instance_type: m1.small
8
+ instance_type: t1.micro
9
+ architecture: x86_64 #i386
8
10
  launch_plan:
9
- group1:
10
- "ami_id_xxx1": 1
11
- group2:
12
- "ami_id_xxx2": 1
11
+ webservers:
12
+ "ami_id_xxx1": 2
13
+ dbservers:
14
+ "ami_id_xxx2": 1
15
+ detailed:
16
+ "appserver1": "ami_id_xxx3;x86_64;t1.micro;"
17
+ "appserver2": "ami_id_xxx3;x86_64;t1.micro;192.168.1.1;vol-xxx1@/dev/sdf,vol-xxx2@/dev/sdg"
18
+ "appserver3": "ami_id_xxx3;x86_64;t1.micro;;vol-xxx3@/dev/sdf,vol-xxx4@/dev/sdg"
13
19
 
14
- customer1:
20
+ customer1: # another AWS account
15
21
  amazon_access_key_id:
16
22
  amazon_secret_access_key:
17
23
  amazon_account_number:
24
+ ec2_server_region: "eu-west-1.ec2.amazonaws.com"
18
25
  key:
19
26
  availability_zone: eu-west-1a
20
27
  instance_type: m1.small
28
+ architecture: i386
21
29
 
22
30
  customer2:
23
31
  amazon_access_key_id:
24
32
  amazon_secret_access_key:
25
33
  amazon_account_number:
34
+ ec2_server_region: "eu-west-1.ec2.amazonaws.com"
26
35
  key:
27
36
  availability_zone: eu-west-1a
28
37
  instance_type: m1.small
38
+ architecture: i386
29
39
  launch_plan:
30
40
  group1:
31
41
  ami_id_xxx1: 1
@@ -1,64 +1,60 @@
1
1
  # Generated by jeweler
2
- # DO NOT EDIT THIS FILE
3
- # Instead, edit Jeweler::Tasks in Rakefile, and run `rake gemspec`
2
+ # DO NOT EDIT THIS FILE DIRECTLY
3
+ # Instead, edit Jeweler::Tasks in Rakefile, and run 'rake gemspec'
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
7
  s.name = %q{ec2-instance-manager}
8
- s.version = "0.3.1"
8
+ s.version = "0.4.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
11
  s.authors = ["Oliver Kiessler"]
12
- s.date = %q{2009-10-17}
12
+ s.date = %q{2011-02-05}
13
13
  s.default_executable = %q{ec2-instance-manager}
14
14
  s.description = %q{Launches EC2 instances for multiple AWS accounts}
15
15
  s.email = %q{kiessler@inceedo.com}
16
16
  s.executables = ["ec2-instance-manager"]
17
17
  s.extra_rdoc_files = [
18
18
  "LICENSE",
19
- "README.rdoc"
19
+ "README.md"
20
20
  ]
21
21
  s.files = [
22
22
  ".document",
23
- ".gitignore",
24
- "LICENSE",
25
- "README.rdoc",
26
- "Rakefile",
27
- "VERSION",
28
- "bin/ec2-instance-manager",
29
- "config.yml.sample",
30
- "ec2-instance-manager.gemspec",
31
- "lib/ec2-instance-manager.rb",
32
- "lib/ec2-instance-manager/ec2_instance_manager.rb",
33
- "lib/ec2-instance-manager/launch.rb",
34
- "lib/ec2-instance-manager/output.rb",
35
- "lib/ec2-instance-manager/status.rb",
36
- "test/ec2-instance-manager_test.rb",
37
- "test/test_helper.rb"
23
+ "LICENSE",
24
+ "README.md",
25
+ "Rakefile",
26
+ "VERSION",
27
+ "bin/ec2-instance-manager",
28
+ "config.yml.sample",
29
+ "ec2-instance-manager.gemspec",
30
+ "lib/ec2-instance-manager.rb",
31
+ "lib/ec2-instance-manager/ec2_instance_manager.rb",
32
+ "lib/ec2-instance-manager/launch.rb",
33
+ "lib/ec2-instance-manager/output.rb",
34
+ "lib/ec2-instance-manager/status.rb",
35
+ "test/ec2-instance-manager_test.rb",
36
+ "test/test_helper.rb"
38
37
  ]
39
38
  s.homepage = %q{http://github.com/okiess/ec2-instance-manager}
40
- s.rdoc_options = ["--charset=UTF-8"]
41
39
  s.require_paths = ["lib"]
42
- s.rubygems_version = %q{1.3.5}
40
+ s.rubygems_version = %q{1.3.7}
43
41
  s.summary = %q{Simple EC2 Instance Manager}
44
42
  s.test_files = [
45
43
  "test/ec2-instance-manager_test.rb",
46
- "test/test_helper.rb"
44
+ "test/test_helper.rb"
47
45
  ]
48
46
 
49
47
  if s.respond_to? :specification_version then
50
48
  current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
51
49
  s.specification_version = 3
52
50
 
53
- if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
51
+ if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
54
52
  s.add_runtime_dependency(%q<amazon-ec2>, [">= 0"])
55
- s.add_development_dependency(%q<thoughtbot-shoulda>, [">= 0"])
56
53
  else
57
54
  s.add_dependency(%q<amazon-ec2>, [">= 0"])
58
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
59
55
  end
60
56
  else
61
57
  s.add_dependency(%q<amazon-ec2>, [">= 0"])
62
- s.add_dependency(%q<thoughtbot-shoulda>, [">= 0"])
63
58
  end
64
59
  end
60
+
@@ -2,6 +2,7 @@
2
2
 
3
3
  require "rubygems"
4
4
  require 'optparse'
5
+ require 'yaml'
5
6
 
6
7
  gem 'amazon-ec2'
7
8
  require 'AWS'
@@ -4,7 +4,7 @@ require File.dirname(__FILE__) + '/output'
4
4
 
5
5
  class Ec2InstanceManager
6
6
  include Status, Launch, Output
7
- VERSION = '0.3.1'
7
+ VERSION = '0.4.0'
8
8
 
9
9
  attr_reader :config, :customer_key, :options
10
10
 
@@ -22,22 +22,22 @@ class Ec2InstanceManager
22
22
  end
23
23
 
24
24
  options[:terminate] = false
25
- opts.on( '-t', '--terminate-all', 'Terminates all instances running under a config key' ) do
25
+ opts.on( '-t', '--terminate-all', 'Terminates all instances running under a customer config key' ) do
26
26
  options[:terminate] = true
27
27
  end
28
28
 
29
29
  options[:start_launch_plan] = false
30
- opts.on( '-l', '--start-launch-plan', 'Starts a launch plan under a config key' ) do
30
+ opts.on( '-l', '--start-launch-plan', 'Starts a launch plan under a customer config key' ) do
31
31
  options[:start_launch_plan] = true
32
32
  end
33
33
 
34
34
  options[:group] = nil
35
- opts.on( '-g', '--group LAUNCH_GROUP_NAME', 'Starts a launch plan group under a config key' ) do |group|
35
+ opts.on( '-g', '--group LAUNCH_GROUP_NAME', 'Starts a launch plan group under a customer config key' ) do |group|
36
36
  options[:group] = group
37
37
  end
38
38
 
39
39
  options[:config] = nil
40
- opts.on( '-c', '--config CONFIG_KEY', 'Sets the config key' ) do |key|
40
+ opts.on( '-c', '--config CONFIG_KEY', 'Sets the customer config key' ) do |key|
41
41
  options[:config] = key
42
42
  end
43
43
 
@@ -67,8 +67,9 @@ class Ec2InstanceManager
67
67
  end
68
68
 
69
69
  def ec2
70
- @ec2 ||= AWS::EC2::Base.new(:access_key_id => config[@customer_key]['amazon_access_key_id'],
71
- :secret_access_key => config[@customer_key]['amazon_secret_access_key'])
70
+ @ec2 = AWS::EC2::Base.new(:access_key_id => config[@customer_key]['amazon_access_key_id'],
71
+ :secret_access_key => config[@customer_key]['amazon_secret_access_key'],
72
+ :server => config[@customer_key]['ec2_server_region'])
72
73
  end
73
74
 
74
75
  def run
@@ -61,21 +61,26 @@ module Launch
61
61
  end
62
62
 
63
63
  def start_launch_plan
64
- ami_ids_to_launch = []
64
+ ami_ids_to_launch = []; detailed_ami_ids_to_launch = []
65
65
  puts
66
66
  puts "Your Launch Plan:"
67
67
  if config[@customer_key]["launch_plan"] and config[@customer_key]["launch_plan"].any?
68
-
68
+
69
69
  launch_plan_groups = config[@customer_key]["launch_plan"].keys.sort
70
-
70
+
71
71
  if self.options[:group]
72
72
  puts
73
73
  puts "Existing groups: #{launch_plan_groups.join(", ")}"
74
74
  if launch_plan_groups.include?(self.options[:group])
75
75
  puts "Targeted Group: #{self.options[:group]}"
76
76
  config[@customer_key]["launch_plan"][self.options[:group]].each do |ami_id|
77
- puts "#{ami_id[0]} => #{ami_id[1]} Instances to launch"
78
- ami_ids_to_launch << [ami_id[0], ami_id[1]]
77
+ if (ami_id[1].is_a?(Fixnum))
78
+ puts "#{ami_id[0]} => #{ami_id[1]} Instances to launch"
79
+ ami_ids_to_launch << [ami_id[0], ami_id[1]]
80
+ else
81
+ puts "#{ami_id[0]} => Detailed launch: #{ami_id[1]}"
82
+ detailed_ami_ids_to_launch << [ami_id[0], ami_id[1]]
83
+ end
79
84
  end
80
85
  else
81
86
  puts white("Targeted Launch plan group '#{self.options[:group]}' not found.")
@@ -86,8 +91,13 @@ module Launch
86
91
  puts "Group: #{launch_plan_group}"
87
92
  if config[@customer_key]["launch_plan"][launch_plan_group] and config[@customer_key]["launch_plan"][launch_plan_group].any?
88
93
  config[@customer_key]["launch_plan"][launch_plan_group].keys.each do |ami_id|
89
- puts "#{ami_id} => #{config[@customer_key]["launch_plan"][launch_plan_group][ami_id]} Instances to launch"
90
- ami_ids_to_launch << [ami_id, config[@customer_key]["launch_plan"][launch_plan_group][ami_id]]
94
+ if (config[@customer_key]["launch_plan"][launch_plan_group][ami_id].is_a?(Fixnum))
95
+ puts "#{ami_id} => #{config[@customer_key]["launch_plan"][launch_plan_group][ami_id]} Instances to launch"
96
+ ami_ids_to_launch << [ami_id, config[@customer_key]["launch_plan"][launch_plan_group][ami_id]]
97
+ else
98
+ puts "#{ami_id} => Detailed launch: #{config[@customer_key]["launch_plan"][launch_plan_group][ami_id]}"
99
+ detailed_ami_ids_to_launch << [ami_id, config[@customer_key]["launch_plan"][launch_plan_group][ami_id]]
100
+ end
91
101
  end
92
102
  else
93
103
  puts white("No Ami Id's to launch defined.")
@@ -97,7 +107,7 @@ module Launch
97
107
 
98
108
  puts
99
109
  puts red("Warning: Now launching your plan...")
100
- puts red("Please cancel within the next 5 seconds if this isn't want you want...")
110
+ puts red("Please press CTRL-C to cancel within the next 5 seconds if this isn't what you want...")
101
111
  puts
102
112
  sleep 5
103
113
 
@@ -107,20 +117,61 @@ module Launch
107
117
  result = launch_ami(group_ami_id_pair[0])
108
118
  }
109
119
  end
120
+ puts if ami_ids_to_launch.any?
121
+
122
+ detailed_ami_ids_to_launch.each do |group_ami_id_pair|
123
+ your_instance_name = group_ami_id_pair[0]
124
+ instance_assignments = group_ami_id_pair[1].split(";")
125
+ ami_id = instance_assignments[0]
126
+ raise "Incomplete detailed launchplan definition." if instance_assignments.size < 3
127
+
128
+ puts "Launching '#{your_instance_name}'..."
129
+ architecture = instance_assignments[1]; instance_type = instance_assignments[2]
130
+ result = launch_ami(ami_id, {:instance_type => instance_type, :architecture => architecture})
131
+
132
+ if result and result["instancesSet"]["item"] and (instance_id = result["instancesSet"]["item"][0]["instanceId"])
133
+ instance_state = ''
134
+ while(instance_state != 'running') do
135
+ instance_state, dns_name = get_instance_state(instance_id)
136
+ puts "Running state of instance #{instance_id}: #{output_running_state(instance_state)}"
137
+ sleep 5
138
+ end
139
+
140
+ if instance_assignments[3] and not instance_assignments[3].empty?
141
+ puts "Associating IP #{instance_assignments[3]}..."
142
+ result = ec2.associate_address(:instance_id => instance_id, :public_ip => instance_assignments[3])
143
+ end
144
+
145
+ if instance_assignments[4] and not instance_assignments[4].empty?
146
+ volumes = instance_assignments[4].split(",")
147
+ volumes.each do |volume_pair|
148
+ volume = volume_pair.split("@")
149
+ puts "Attaching volume #{volume[0]} at mount point #{volume[1]}..."
150
+ result = ec2.attach_volume(:volume_id => volume[0], :instance_id => instance_id, :device => volume[1])
151
+ end
152
+ end
153
+ end
154
+ puts
155
+ end
110
156
 
111
- puts white("All instances are launching now...")
157
+ puts white("Launchplan executed!")
112
158
  else
113
159
  puts white("No launch plan groups defined.")
114
160
  end
115
161
  end
116
162
 
117
- def launch_ami(ami_id)
118
- ec2.run_instances(
119
- :image_id => ami_id,
120
- :instance_type => config[@customer_key]['instance_type'],
163
+ def launch_ami(ami_id, options = {})
164
+ default_options = {
165
+ :instance_type => config[@customer_key]['instance_type'],
121
166
  :key_name => config[@customer_key]['key'],
122
- :availability_zone => config[@customer_key]['availability_zone']
123
- )
167
+ :availability_zone => config[@customer_key]['availability_zone'],
168
+ :architecture => config[@customer_key]['architecture'],
169
+ :image_id => ami_id
170
+ }
171
+
172
+ run_options = default_options.merge(options)
173
+ puts "Launch Options: #{run_options.inspect}"
174
+ ec2.run_instances(run_options)
124
175
  end
125
176
 
126
177
  private
@@ -13,7 +13,7 @@ module Output
13
13
 
14
14
  def cancel_message(instances)
15
15
  puts red("Warning: Terminating all instances: #{instances.join(", ")}")
16
- puts red("Please cancel within the next 5 seconds if this isn't want you want...")
16
+ puts red("Please press CTRL-C to cancel within the next 5 seconds if this isn't what you want...")
17
17
  end
18
18
 
19
19
  def green(str)
@@ -49,7 +49,11 @@ module Status
49
49
  if vol["attachmentSet"]
50
50
  instance_id = vol["attachmentSet"]["item"].first["instanceId"]
51
51
  end
52
- puts "#{white(vol["volumeId"])} (Size: #{vol["size"]} / Zone: #{vol["availabilityZone"]}) - #{vol["status"]} => #{instance_id.nil? ? 'unassigned' : instance_id}"
52
+ if vol["status"] == 'deleting'
53
+ puts "#{white(vol["volumeId"])} (Size: #{vol["size"]} / Zone: #{vol["availabilityZone"]}) - #{vol["status"]}"
54
+ else
55
+ puts "#{white(vol["volumeId"])} (Size: #{vol["size"]} / Zone: #{vol["availabilityZone"]}) - #{vol["status"]} => #{instance_id.nil? ? 'unassigned' : instance_id}"
56
+ end
53
57
  end
54
58
  else
55
59
  puts white("No volumes.")
@@ -1,7 +1,7 @@
1
1
  require 'test_helper'
2
2
 
3
3
  class Ec2InstanceManagerTest < Test::Unit::TestCase
4
- should "test" do
4
+ def test_truth
5
5
  assert true
6
6
  end
7
7
  end
data/test/test_helper.rb CHANGED
@@ -1,6 +1,5 @@
1
1
  require 'rubygems'
2
2
  require 'test/unit'
3
- require 'shoulda'
4
3
 
5
4
  $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
6
5
  $LOAD_PATH.unshift(File.dirname(__FILE__))
metadata CHANGED
@@ -1,7 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ec2-instance-manager
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ hash: 15
5
+ prerelease: false
6
+ segments:
7
+ - 0
8
+ - 4
9
+ - 0
10
+ version: 0.4.0
5
11
  platform: ruby
6
12
  authors:
7
13
  - Oliver Kiessler
@@ -9,29 +15,23 @@ autorequire:
9
15
  bindir: bin
10
16
  cert_chain: []
11
17
 
12
- date: 2009-10-17 00:00:00 +02:00
18
+ date: 2011-02-05 00:00:00 +01:00
13
19
  default_executable: ec2-instance-manager
14
20
  dependencies:
15
21
  - !ruby/object:Gem::Dependency
16
22
  name: amazon-ec2
17
- type: :runtime
18
- version_requirement:
19
- version_requirements: !ruby/object:Gem::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: "0"
24
- version:
25
- - !ruby/object:Gem::Dependency
26
- name: thoughtbot-shoulda
27
- type: :development
28
- version_requirement:
29
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
30
26
  requirements:
31
27
  - - ">="
32
28
  - !ruby/object:Gem::Version
29
+ hash: 3
30
+ segments:
31
+ - 0
33
32
  version: "0"
34
- version:
33
+ type: :runtime
34
+ version_requirements: *id001
35
35
  description: Launches EC2 instances for multiple AWS accounts
36
36
  email: kiessler@inceedo.com
37
37
  executables:
@@ -40,12 +40,11 @@ extensions: []
40
40
 
41
41
  extra_rdoc_files:
42
42
  - LICENSE
43
- - README.rdoc
43
+ - README.md
44
44
  files:
45
45
  - .document
46
- - .gitignore
47
46
  - LICENSE
48
- - README.rdoc
47
+ - README.md
49
48
  - Rakefile
50
49
  - VERSION
51
50
  - bin/ec2-instance-manager
@@ -63,26 +62,32 @@ homepage: http://github.com/okiess/ec2-instance-manager
63
62
  licenses: []
64
63
 
65
64
  post_install_message:
66
- rdoc_options:
67
- - --charset=UTF-8
65
+ rdoc_options: []
66
+
68
67
  require_paths:
69
68
  - lib
70
69
  required_ruby_version: !ruby/object:Gem::Requirement
70
+ none: false
71
71
  requirements:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
+ hash: 3
75
+ segments:
76
+ - 0
74
77
  version: "0"
75
- version:
76
78
  required_rubygems_version: !ruby/object:Gem::Requirement
79
+ none: false
77
80
  requirements:
78
81
  - - ">="
79
82
  - !ruby/object:Gem::Version
83
+ hash: 3
84
+ segments:
85
+ - 0
80
86
  version: "0"
81
- version:
82
87
  requirements: []
83
88
 
84
89
  rubyforge_project:
85
- rubygems_version: 1.3.5
90
+ rubygems_version: 1.3.7
86
91
  signing_key:
87
92
  specification_version: 3
88
93
  summary: Simple EC2 Instance Manager
data/.gitignore DELETED
@@ -1,5 +0,0 @@
1
- *.sw?
2
- .DS_Store
3
- coverage
4
- rdoc
5
- pkg
data/README.rdoc DELETED
@@ -1,34 +0,0 @@
1
- = ec2-instance-manager
2
-
3
- Simple EC2 Instance Manager that is able to work with multiple AWS accounts (in config.yml). See config.yml.sample.
4
-
5
- Create a "config.yml" in the current directory and run "ec2_instance_manager". You can launch & terminate instances, create whole launch plans, start all launch plan groups or start an individual launch plan group, assign public IP's and attach volumes.
6
-
7
- Run ec2-instance-manager --help for options and commands.
8
-
9
- This gem should be considered ALPHA! More features to come...
10
-
11
- == Installation
12
-
13
- sudo gem install amazon-ec2
14
-
15
- sudo gem install ec2-instance-manager (Gemcutter)
16
-
17
- or
18
-
19
- sudo gem install okiess-ec2-instance-manager (Github)
20
-
21
- == Note on Patches/Pull Requests
22
-
23
- * Fork the project.
24
- * Make your feature addition or bug fix.
25
- * Add tests for it. This is important so I don't break it in a
26
- future version unintentionally.
27
- * Commit, do not mess with rakefile, version, or history.
28
- (if you want to have your own version, that is fine but
29
- bump version in a commit by itself I can ignore when I pull)
30
- * Send me a pull request. Bonus points for topic branches.
31
-
32
- == Copyright
33
-
34
- Copyright (c) 2009 Oliver Kiessler. See LICENSE for details.