scud 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/bin/scud +1 -1
- data/lib/scud.rb +2 -3
- data/lib/scud/provisioner/capistrano.rb +13 -5
- data/lib/scud/ui/bootstrap_command.rb +6 -1
- data/lib/scud/ui/create_command.rb +7 -1
- data/lib/scud/version.rb +1 -1
- data/scud.gemspec +1 -1
- metadata +5 -5
data/bin/scud
CHANGED
data/lib/scud.rb
CHANGED
@@ -2,9 +2,8 @@ require 'scud/version'
|
|
2
2
|
require 'scud/provider'
|
3
3
|
require 'scud/provisioner/capistrano'
|
4
4
|
|
5
|
-
#
|
6
|
-
#
|
7
|
-
|
5
|
+
# external deps
|
6
|
+
#
|
8
7
|
require 'pp'
|
9
8
|
require 'fog'
|
10
9
|
require 'table_print'
|
@@ -4,22 +4,30 @@ require 'capistrano/cli'
|
|
4
4
|
module Scud
|
5
5
|
module Provisioner
|
6
6
|
module Capistrano
|
7
|
-
extend self
|
8
7
|
|
9
|
-
def bootstrap(opts={})
|
8
|
+
def self.bootstrap(opts={})
|
10
9
|
config = ::Capistrano::Configuration.new
|
11
10
|
config.logger.level = ::Capistrano::Logger::TRACE
|
12
|
-
|
11
|
+
bootstrapname = find_bootstrap(opts[:bootstrapname])
|
12
|
+
unless bootstrapname
|
13
|
+
puts "No provisioning tasks found - #{opts[:bootstrapname]}"
|
14
|
+
exit 1
|
15
|
+
end
|
16
|
+
config.load bootstrapname
|
13
17
|
|
14
18
|
config.default_run_options[:pty] = true
|
15
19
|
|
16
|
-
#TODO: find better way of parsing options to cap tasks
|
17
|
-
#
|
18
20
|
ENV['HOSTS'] = opts[:dns_name]
|
19
21
|
|
20
22
|
puts "\nbootstrapping #{ENV['HOSTS']}....."
|
21
23
|
config.bootstrap
|
22
24
|
end
|
25
|
+
|
26
|
+
private
|
27
|
+
|
28
|
+
def self.find_bootstrap(name)
|
29
|
+
Gem.find_files('**/*.rb').select { |path| path =~ /#{name}\/bootstrap.rb/ }.first
|
30
|
+
end
|
23
31
|
end
|
24
32
|
end
|
25
33
|
end
|
@@ -1,6 +1,6 @@
|
|
1
1
|
desc 'bootstrap an instance'
|
2
2
|
long_desc '''
|
3
|
-
This will run all of the capistrano tasks declared in $HOME/scud
|
3
|
+
This will run all of the capistrano tasks declared in $HOME/scud/*/bootstrap.rb
|
4
4
|
'''
|
5
5
|
command :bootstrap do |c|
|
6
6
|
|
@@ -8,6 +8,11 @@ command :bootstrap do |c|
|
|
8
8
|
c.long_desc 'What is the name of the instance you wish to bootstrap - eg: ec2-54-253-9-16.ap-southeast-2.compute.amazonaws.com'
|
9
9
|
c.flag :dns_name
|
10
10
|
|
11
|
+
c.desc 'name of the bootstrap task to run'
|
12
|
+
c.long_desc 'What bootstrap task to run - eg: puppetclient, standalone, lamp etc'
|
13
|
+
c.default_value 'basic'
|
14
|
+
c.flag :bootstrapname
|
15
|
+
|
11
16
|
c.desc 'EC2 region'
|
12
17
|
c.long_desc 'Which EC2 region ?'
|
13
18
|
c.default_value 'ap-southeast-2'
|
@@ -26,6 +26,7 @@ command :create do |c|
|
|
26
26
|
|
27
27
|
c.desc 'instance name'
|
28
28
|
c.long_desc 'Friendly name to display in AWS console'
|
29
|
+
c.default_value (0...8).map{(65+rand(26)).chr}.join
|
29
30
|
c.flag :name
|
30
31
|
|
31
32
|
c.desc 'bootstrap host'
|
@@ -33,11 +34,16 @@ command :create do |c|
|
|
33
34
|
c.default_value true
|
34
35
|
c.switch :bootstrap
|
35
36
|
|
37
|
+
c.desc 'name of the bootstrap task to run'
|
38
|
+
c.long_desc 'What bootstrap task to run - eg: puppetclient, standalone, lamp etc'
|
39
|
+
c.default_value 'basic'
|
40
|
+
c.flag :bootstrapname
|
41
|
+
|
36
42
|
c.action do |global_options, options, args|
|
37
43
|
opts=global_options.merge(options)
|
38
44
|
server = Scud::Provider::EC2.create(opts)
|
39
45
|
if opts[:bootstrap]
|
40
|
-
server.wait_for { print '.'; openport?(server.public_ip_address, 22) }
|
46
|
+
server.wait_for(60) { print '.'; openport?(server.public_ip_address, 22) }
|
41
47
|
Scud::Provisioner::Capistrano.bootstrap(opts.merge(:dns_name => server.dns_name))
|
42
48
|
puts "#{server.dns_name} has been bootstrapped."
|
43
49
|
else
|
data/lib/scud/version.rb
CHANGED
data/scud.gemspec
CHANGED
@@ -6,7 +6,7 @@ spec = Gem::Specification.new do |s|
|
|
6
6
|
s.version = Scud::VERSION
|
7
7
|
s.author = 'Mick Pollard'
|
8
8
|
s.email = 'aussielunix@gmail.com'
|
9
|
-
s.homepage = 'http://
|
9
|
+
s.homepage = 'http://aussielunix.github.io/scud/'
|
10
10
|
s.platform = Gem::Platform::RUBY
|
11
11
|
s.summary = 'scud is for creating, terminating and bootstrapping VMs (cloud instances).'
|
12
12
|
# Add your other files here if you make them
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: scud
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-09-25 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
@@ -148,7 +148,7 @@ files:
|
|
148
148
|
- ext/tasks/puppet.rb
|
149
149
|
- ext/bootstrap.rb
|
150
150
|
- scud.rdoc
|
151
|
-
homepage: http://
|
151
|
+
homepage: http://aussielunix.github.io/scud/
|
152
152
|
licenses: []
|
153
153
|
post_install_message:
|
154
154
|
rdoc_options:
|
@@ -167,7 +167,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
167
167
|
version: '0'
|
168
168
|
segments:
|
169
169
|
- 0
|
170
|
-
hash: -
|
170
|
+
hash: -3999055534572787464
|
171
171
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
172
172
|
none: false
|
173
173
|
requirements:
|
@@ -176,7 +176,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
176
176
|
version: '0'
|
177
177
|
segments:
|
178
178
|
- 0
|
179
|
-
hash: -
|
179
|
+
hash: -3999055534572787464
|
180
180
|
requirements: []
|
181
181
|
rubyforge_project:
|
182
182
|
rubygems_version: 1.8.23
|