spatula 0.0.9 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
data/lib/spatula.rb CHANGED
@@ -49,8 +49,9 @@ module Spatula
49
49
  method_options :login => nil
50
50
  method_options :identity => nil
51
51
  method_options :upload_key => nil
52
+ method_options :keyfile => :string
52
53
  def prepare(server)
53
- Prepare.run(server, options[:port], options[:login], options[:identity], options[:upload_key])
54
+ Prepare.run(server, options[:port], options[:login], options[:identity], options[:upload_key], options[:keyfile])
54
55
  end
55
56
 
56
57
  private
@@ -1,7 +1,16 @@
1
1
  # Prepare :server: for chef solo to run on it
2
2
  module Spatula
3
3
  class Prepare < SshCommand
4
+
5
+ RUBYGEMS_VERSION = "1.6.2"
6
+ RUBY_PATH = "1.9/ruby-1.9.2-p180.tar.gz"
7
+
4
8
  def run
9
+
10
+ if @key_file and !@upload_key
11
+ @upload_key = true
12
+ end
13
+
5
14
  upload_ssh_key if @upload_key
6
15
  send "run_for_#{os}"
7
16
  end
@@ -50,12 +59,12 @@ module Spatula
50
59
  end
51
60
 
52
61
  def install_ruby_1_9_2
53
- ssh "curl -L 'ftp://ftp.ruby-lang.org//pub/ruby/1.9/ruby-1.9.2-p136.tar.gz' | tar xvzf -"
62
+ ssh "curl -L 'ftp://ftp.ruby-lang.org//pub/ruby/#{RUBY_PATH}' | tar xvzf -"
54
63
  ssh "cd ruby-1.9.2-* && ./configure && make && #{sudo} make install"
55
64
  end
56
65
 
57
66
  def install_rubygems
58
- ssh "curl -L 'http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz' | tar xvzf -"
67
+ ssh "curl -L 'http://production.cf.rubygems.org/rubygems/rubygems-#{RUBYGEMS_VERSION}.tgz' | tar xvzf -"
59
68
  ssh "cd rubygems* && #{sudo} ruby setup.rb --no-ri --no-rdoc"
60
69
  ssh "#{sudo} ln -sfv /usr/bin/gem1.8 /usr/bin/gem"
61
70
  end
@@ -70,15 +79,21 @@ module Spatula
70
79
 
71
80
  def upload_ssh_key
72
81
  authorized_file = "~/.ssh/authorized_keys"
73
- key_file = nil
74
- %w{rsa dsa}.each do |key_type|
75
- filename = "#{ENV['HOME']}/.ssh/id_#{key_type}.pub"
76
- if File.exists?(filename)
77
- key_file = filename
78
- break
82
+
83
+ unless @key_file
84
+ %w{rsa dsa}.each do |key_type|
85
+ filename = "#{ENV['HOME']}/.ssh/id_#{key_type}.pub"
86
+ if File.exists?(filename)
87
+ @key_file = filename
88
+ break
89
+ end
79
90
  end
80
91
  end
81
- key = File.open(key_file).read.split(' ')[0..1].join(' ')
92
+
93
+ raise "Key file '#{@key_file}' not found: aborting." unless File.exists?(@key_file)
94
+
95
+ key = File.open(@key_file).read.split(' ')[0..1].join(' ')
96
+
82
97
  ssh "mkdir -p .ssh && echo #{key} >> #{authorized_file}"
83
98
  ssh "cat #{authorized_file} | sort | uniq > #{authorized_file}.tmp && mv #{authorized_file}.tmp #{authorized_file}"
84
99
  end
@@ -4,13 +4,14 @@ module Spatula
4
4
  new(*args).run
5
5
  end
6
6
 
7
- def initialize(server, port=nil, login=nil, identity=nil, upload_key=nil)
7
+ def initialize(server, port=nil, login=nil, identity=nil, upload_key=nil, key_file=nil)
8
8
  @server = server
9
9
  @port = port
10
10
  @port_switch = port ? " -p #{port}" : ''
11
11
  @login_switch = login ? "-l #{login}" : ''
12
12
  @identity_switch = identity ? %Q|-i "#{identity}"| : ''
13
13
  @upload_key = upload_key
14
+ @key_file = key_file
14
15
  end
15
16
 
16
17
  def ssh(command)
metadata CHANGED
@@ -2,7 +2,7 @@
2
2
  name: spatula
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.0.9
5
+ version: 0.0.10
6
6
  platform: ruby
7
7
  authors:
8
8
  - Trotter Cashion
@@ -10,7 +10,7 @@ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-02-20 00:00:00 -05:00
13
+ date: 2011-03-21 00:00:00 -04:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency