spatula 0.0.5 → 0.0.6
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/lib/spatula/cook.rb +6 -14
- data/lib/spatula/prepare.rb +1 -26
- data/lib/spatula/ssh_command.rb +32 -0
- data/lib/spatula.rb +6 -3
- metadata +4 -3
data/lib/spatula/cook.rb
CHANGED
@@ -2,15 +2,10 @@ module Spatula
|
|
2
2
|
# TODO: Set REMOTE_CHEF_PATH using value for file_cache_path
|
3
3
|
REMOTE_CHEF_PATH = "/tmp/chef-solo" # Where to find upstream cookbooks
|
4
4
|
|
5
|
-
class Cook
|
6
|
-
def
|
7
|
-
|
8
|
-
end
|
9
|
-
|
10
|
-
def initialize(server, node, port=22)
|
11
|
-
@server = server
|
5
|
+
class Cook < SshCommand
|
6
|
+
def initialize(server, node, port=nil, login=nil, identity=nil)
|
7
|
+
super(server, port, login, identity)
|
12
8
|
@node = node
|
13
|
-
@port = port
|
14
9
|
end
|
15
10
|
|
16
11
|
def run
|
@@ -18,11 +13,12 @@ module Spatula
|
|
18
13
|
ok = sh "ruby -c #{recipe} >/dev/null 2>&1"
|
19
14
|
raise "Syntax error in #{recipe}" if not ok
|
20
15
|
end
|
16
|
+
|
21
17
|
if @server =~ /^local$/i
|
22
18
|
sh chef_cmd
|
23
19
|
else
|
24
|
-
sh "rsync -rlP --rsh=\"ssh
|
25
|
-
|
20
|
+
sh "rsync -rlP --rsh=\"ssh #{ssh_opts}\" --delete --exclude '.*' ./ #@server:#{REMOTE_CHEF_PATH}"
|
21
|
+
ssh "cd #{REMOTE_CHEF_PATH}; #{chef_cmd}"
|
26
22
|
end
|
27
23
|
end
|
28
24
|
|
@@ -30,9 +26,5 @@ module Spatula
|
|
30
26
|
def chef_cmd
|
31
27
|
"sudo chef-solo -c config/solo.rb -j config/#@node.json"
|
32
28
|
end
|
33
|
-
|
34
|
-
def sh(command)
|
35
|
-
system command
|
36
|
-
end
|
37
29
|
end
|
38
30
|
end
|
data/lib/spatula/prepare.rb
CHANGED
@@ -1,26 +1,6 @@
|
|
1
1
|
# Prepare :server: for chef solo to run on it
|
2
2
|
module Spatula
|
3
|
-
class Prepare
|
4
|
-
def self.run(*args)
|
5
|
-
new(*args).run
|
6
|
-
end
|
7
|
-
|
8
|
-
def initialize(server, port=nil, login=nil, identity=nil)
|
9
|
-
@server = server
|
10
|
-
@port = port
|
11
|
-
@port_switch = port ? " -p #{port}" : ''
|
12
|
-
@login_switch = login ? "-l #{login}" : ''
|
13
|
-
@identity_switch = identity ? %Q|-i "#{identity}"| : ''
|
14
|
-
end
|
15
|
-
|
16
|
-
def ssh(command)
|
17
|
-
sh ssh_command(command)
|
18
|
-
end
|
19
|
-
|
20
|
-
def ssh_command(command)
|
21
|
-
%Q|ssh -t#@port_switch #@login_switch #@identity_switch #@server "#{command.gsub('"', '\\"')}"|
|
22
|
-
end
|
23
|
-
|
3
|
+
class Prepare < SshCommand
|
24
4
|
def run
|
25
5
|
send "run_for_#{os}"
|
26
6
|
end
|
@@ -43,10 +23,5 @@ module Spatula
|
|
43
23
|
|
44
24
|
ssh "sudo gem install rdoc chef ohai --no-ri --no-rdoc --source http://gems.opscode.com --source http://gems.rubyforge.org"
|
45
25
|
end
|
46
|
-
|
47
|
-
private
|
48
|
-
def sh(command)
|
49
|
-
system command
|
50
|
-
end
|
51
26
|
end
|
52
27
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
module Spatula
|
2
|
+
class SshCommand
|
3
|
+
def self.run(*args)
|
4
|
+
new(*args).run
|
5
|
+
end
|
6
|
+
|
7
|
+
def initialize(server, port=nil, login=nil, identity=nil)
|
8
|
+
@server = server
|
9
|
+
@port = port
|
10
|
+
@port_switch = port ? " -p #{port}" : ''
|
11
|
+
@login_switch = login ? "-l #{login}" : ''
|
12
|
+
@identity_switch = identity ? %Q|-i "#{identity}"| : ''
|
13
|
+
end
|
14
|
+
|
15
|
+
def ssh(command)
|
16
|
+
sh ssh_command(command)
|
17
|
+
end
|
18
|
+
|
19
|
+
def ssh_command(command)
|
20
|
+
%Q|ssh -t#{ssh_opts} #@server "#{command.gsub('"', '\\"')}"|
|
21
|
+
end
|
22
|
+
|
23
|
+
def ssh_opts
|
24
|
+
"#@port_switch #@login_switch #@identity_switch"
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
def sh(command)
|
29
|
+
system command
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
data/lib/spatula.rb
CHANGED
@@ -25,7 +25,7 @@ module Spatula
|
|
25
25
|
# Use ENV['HOME'] as the base here
|
26
26
|
tarball_dir = "#{ENV['HOME']}/.spatula/cookbook_tarballs"
|
27
27
|
FileUtils.mkdir_p(tarball_dir)
|
28
|
-
system "curl #{file} -o #{tarball_dir}"
|
28
|
+
system "curl #{file} -o #{tarball_dir}/#{filename}"
|
29
29
|
system "tar xzvf #{tarball_dir}/#{filename} -C cookbooks"
|
30
30
|
end
|
31
31
|
|
@@ -36,9 +36,11 @@ module Spatula
|
|
36
36
|
end
|
37
37
|
|
38
38
|
desc "cook SERVER NODE", "Cook SERVER with the specification in config/NODE.js. Use local as the server to cook this box."
|
39
|
-
method_options :port =>
|
39
|
+
method_options :port => nil
|
40
|
+
method_options :login => nil
|
41
|
+
method_options :identity => nil
|
40
42
|
def cook(server, node)
|
41
|
-
Cook.run(server, node, options[:port])
|
43
|
+
Cook.run(server, node, options[:port], options[:login], options[:identity])
|
42
44
|
end
|
43
45
|
|
44
46
|
desc "prepare SERVER", "Install software/libs required by chef on SERVER"
|
@@ -73,6 +75,7 @@ if __FILE__ == $0
|
|
73
75
|
$: << File.dirname(__FILE__)
|
74
76
|
end
|
75
77
|
|
78
|
+
require 'spatula/ssh_command'
|
76
79
|
require 'spatula/search'
|
77
80
|
require 'spatula/prepare'
|
78
81
|
require 'spatula/cook'
|
metadata
CHANGED
@@ -5,8 +5,8 @@ version: !ruby/object:Gem::Version
|
|
5
5
|
segments:
|
6
6
|
- 0
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
version: 0.0.
|
8
|
+
- 6
|
9
|
+
version: 0.0.6
|
10
10
|
platform: ruby
|
11
11
|
authors:
|
12
12
|
- Trotter Cashion
|
@@ -14,7 +14,7 @@ autorequire:
|
|
14
14
|
bindir: bin
|
15
15
|
cert_chain: []
|
16
16
|
|
17
|
-
date: 2010-
|
17
|
+
date: 2010-04-11 00:00:00 -04:00
|
18
18
|
default_executable:
|
19
19
|
dependencies: []
|
20
20
|
|
@@ -32,6 +32,7 @@ files:
|
|
32
32
|
- lib/spatula/cook.rb
|
33
33
|
- lib/spatula/prepare.rb
|
34
34
|
- lib/spatula/search.rb
|
35
|
+
- lib/spatula/ssh_command.rb
|
35
36
|
- lib/spatula.rb
|
36
37
|
has_rdoc: true
|
37
38
|
homepage: http://trottercashion.com
|