cloud-maker 0.0.0 → 0.1.0.pre

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.
Files changed (3) hide show
  1. data/bin/cloud-maker +54 -26
  2. data/lib/cloud_maker/ec2.rb +0 -4
  3. metadata +4 -4
data/bin/cloud-maker CHANGED
@@ -2,11 +2,28 @@
2
2
  require 'thor'
3
3
  require 'colorize'
4
4
  require 'cloud-maker'
5
- # require 'pry'
5
+ require 'pry'
6
6
 
7
7
  class CloudMakerCLI < Thor
8
8
  include Thor::Actions
9
9
 
10
+ desc "user_data [INSTANCE_CONFIG_YAML]", "Generate the Cloud Init user data for an instance described by INSTANCE_CONFIG_YAML"
11
+ method_option :set,
12
+ :alias => '-s',
13
+ :type => :hash,
14
+ :default => {},
15
+ :desc => "Set parameters in the CloudMaker config"
16
+ method_option :tags,
17
+ :alias => '-t',
18
+ :type => :hash,
19
+ :default => {},
20
+ :desc => "Set tags for EC2, merges with and overrides the tag property in the CloudMaker config"
21
+ def user_data(instance_config_yaml)
22
+ config = build_config(instance_config_yaml, options)
23
+ say "User Data:".green
24
+ puts config.to_user_data
25
+ end
26
+
10
27
  desc "launch [INSTANCE_CONFIG_YAML]", "Launch a new EC2 instance as described by INSTANCE_CONFIG_YAML"
11
28
  method_option :aws_access_key_id,
12
29
  :desc => "Your AWS access key id",
@@ -21,30 +38,17 @@ class CloudMakerCLI < Thor
21
38
  :type => :hash,
22
39
  :default => {},
23
40
  :desc => "Set parameters in the CloudMaker config"
41
+ method_option :tags,
42
+ :alias => '-t',
43
+ :type => :hash,
44
+ :default => {},
45
+ :desc => "Set tags for EC2, merges with and overrides the tag property in the CloudMaker config"
24
46
  def launch(instance_config_yaml)
25
- puts "---------------------------"
47
+ puts "--------------------------------------------------------------------------------".green
26
48
  puts "Launching new EC2 instance"
27
- puts "---------------------------\n"
49
+ puts "--------------------------------------------------------------------------------\n".green
28
50
 
29
- config = CloudMaker::Config.from_yaml(instance_config_yaml)
30
- options.set.each_pair {|key, val| config[key] = val}
31
-
32
- if !config.valid?
33
- say "Before an instance can be launched we need a few more values to be specified.".yellow
34
- say "Currently missing: #{config.missing_values.map{|key| key.cyan}.join(', ')}"
35
- puts
36
-
37
- config.missing_values.each do |key|
38
- config[key] = ENV[key] if ENV[key]
39
- end
40
-
41
- config.missing_values.each do |key|
42
- if (config.options[key]["description"])
43
- say config.options[key]["description"]
44
- end
45
- config[key] = ask "Please choose a value for #{key.cyan}: "
46
- end
47
- end
51
+ config = build_config(instance_config_yaml, options)
48
52
 
49
53
  cloud_maker = CloudMaker::Ec2.new(config,
50
54
  :aws_access_key_id => options.aws_access_key_id,
@@ -80,11 +84,35 @@ class CloudMakerCLI < Thor
80
84
  end
81
85
  end
82
86
 
83
- desc "scratch", "Play with Thor"
84
- def scratch(arg1)
85
- say 'hello'
86
- say 'hello in red'.red
87
+ private
88
+ def build_config(instance_config_yaml, options)
89
+ config = CloudMaker::Config.from_yaml(instance_config_yaml)
90
+ options.set.each_pair {|key, val| config[key] = val}
91
+
92
+ config['tags'] ||= {}
93
+ config['tags'].merge!(options.tags)
94
+
95
+ if !config.valid?
96
+ say "Before an instance can be launched we need a few more values to be specified.".yellow
97
+ say "Currently missing: #{config.missing_values.map{|key| key.cyan}.join(', ')}"
98
+ puts
99
+
100
+ config.missing_values.each do |key|
101
+ config[key] = ENV[key] if ENV[key]
102
+ end
103
+
104
+ config.missing_values.each do |key|
105
+ if (config.options[key]["description"])
106
+ say config.options[key]["description"]
107
+ end
108
+ config[key] = ask "Please choose a value for #{key.cyan}: "
109
+ end
110
+ end
111
+
112
+ config
87
113
  end
88
114
  end
89
115
 
116
+
117
+
90
118
  CloudMakerCLI.start
@@ -48,15 +48,11 @@ module CloudMaker
48
48
 
49
49
  instance_id = instance[:aws_instance_id]
50
50
 
51
- puts "Launched instance: #{instance_id.to_s.on_light_blue}"
52
-
53
51
  ec2.create_tags(instance_id, self.config["tags"]) if self.config["tags"]
54
52
 
55
53
  if (self.config["elastic_ip"])
56
54
  #we can't associate IPs while the state is pending
57
55
  while instance[:aws_state] == 'pending'
58
- print '.'
59
- STDOUT.flush
60
56
  #this is going to hammer EC2 a bit, it might be necessary to add some delay in here
61
57
  instance = ec2.describe_instances([instance_id]).first
62
58
  end
metadata CHANGED
@@ -1,8 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloud-maker
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.0
5
- prerelease:
4
+ version: 0.1.0.pre
5
+ prerelease: 6
6
6
  platform: ruby
7
7
  authors:
8
8
  - Nathan Baxter
@@ -88,9 +88,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
88
88
  required_rubygems_version: !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
- - - ! '>='
91
+ - - ! '>'
92
92
  - !ruby/object:Gem::Version
93
- version: '0'
93
+ version: 1.3.1
94
94
  requirements: []
95
95
  rubyforge_project:
96
96
  rubygems_version: 1.8.24