spatula 0.0.8 → 0.0.9

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.rb CHANGED
@@ -22,7 +22,7 @@ module Spatula
22
22
  def install(name)
23
23
  file = JSON.parse(get_version_info(name))["file"]
24
24
  filename = File.basename(file)
25
- # Use ENV['HOME'] as the base here
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
28
  system "curl #{file} -o #{tarball_dir}/#{filename}"
@@ -36,11 +36,12 @@ 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 => nil
39
+ method_options :port => nil
40
40
  method_options :login => nil
41
41
  method_options :identity => nil
42
+ method_options :log_level => nil
42
43
  def cook(server, node)
43
- Cook.run(server, node, options[:port], options[:login], options[:identity])
44
+ Cook.run(server, node, options[:port], options[:login], options[:identity], options[:log_level])
44
45
  end
45
46
 
46
47
  desc "prepare SERVER", "Install software/libs required by chef on SERVER"
data/lib/spatula/cook.rb CHANGED
@@ -3,9 +3,10 @@ module Spatula
3
3
  REMOTE_CHEF_PATH = "/tmp/chef-solo" # Where to find upstream cookbooks
4
4
 
5
5
  class Cook < SshCommand
6
- def initialize(server, node, port=nil, login=nil, identity=nil)
6
+ def initialize(server, node, port=nil, login=nil, identity=nil, log_level=nil)
7
7
  super(server, port, login, identity)
8
8
  @node = node
9
+ @log_level = log_level
9
10
  end
10
11
 
11
12
  def run
@@ -14,6 +15,16 @@ module Spatula
14
15
  raise "Syntax error in #{recipe}" if not ok
15
16
  end
16
17
 
18
+ Dir["**/*.json"].each do |json|
19
+ begin
20
+ require 'json'
21
+ # parse without instantiating Chef classes
22
+ JSON.parse File.read(json), :create_additions => false
23
+ rescue => error
24
+ raise "Syntax error in #{json}: #{error.message}"
25
+ end
26
+ end
27
+
17
28
  if @server =~ /^local$/i
18
29
  sh chef_cmd
19
30
  else
@@ -24,7 +35,7 @@ module Spatula
24
35
 
25
36
  private
26
37
  def chef_cmd
27
- "sudo chef-solo -c config/solo.rb -j config/#@node.json"
38
+ "sudo chef-solo -c config/solo.rb -j config/#@node.json -l #{ @log_level || 'info'}"
28
39
  end
29
40
  end
30
41
  end
@@ -15,6 +15,8 @@ module Spatula
15
15
  "debian"
16
16
  when /fedora/i
17
17
  "fedora"
18
+ when /CentOS/i
19
+ "centos"
18
20
  when ""
19
21
  raise "Couldn't get system info from /etc/issue. Please check your SSH credentials."
20
22
  else
@@ -23,29 +25,47 @@ module Spatula
23
25
  end
24
26
 
25
27
  def run_for_ubuntu
26
- ssh "sudo apt-get update"
27
- ssh "sudo aptitude -y install ruby irb ri libopenssl-ruby1.8 libshadow-ruby1.8 ruby1.8-dev gcc g++ rsync curl"
28
- ssh "curl -L 'http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz' | tar xvzf -"
29
- ssh "cd rubygems* && sudo ruby setup.rb --no-ri --no-rdoc"
30
- ssh "sudo ln -sfv /usr/bin/gem1.8 /usr/bin/gem"
31
-
32
- ssh "sudo gem install rdoc chef ohai --no-ri --no-rdoc --source http://gems.opscode.com --source http://gems.rubyforge.org"
28
+ ssh "#{sudo} apt-get update"
29
+ ssh "#{sudo} apt-get install -y ruby irb ri libopenssl-ruby1.8 libshadow-ruby1.8 ruby1.8-dev gcc g++ rsync curl"
30
+ install_rubygems
31
+ install_chef
33
32
  end
34
33
 
35
34
  def run_for_debian
36
- ssh 'sudo apt-get update'
37
- ssh 'sudo apt-get install -y build-essential zlib1g-dev libssl-dev libreadline5-dev curl rsync screen vim'
38
- ssh 'curl -L http://rubyforge.org/frs/download.php/71096/ruby-enterprise-1.8.7-2010.02.tar.gz | tar xzvf -'
39
- # install REE 1.8.7 (and rubygems and irb and rake) to /usr
40
- ssh 'cd ruby-enterprise-1.8.7-2010.02 && sudo echo -e "\n/usr\n" | ./installer'
41
-
42
- ssh "sudo gem install rdoc chef ohai --no-ri --no-rdoc --source http://gems.opscode.com --source http://gems.rubyforge.org"
35
+ ssh "#{sudo} apt-get update"
36
+ ssh "#{sudo} apt-get install -y build-essential zlib1g-dev libssl-dev libreadline5-dev curl rsync"
37
+ install_rubygems
38
+ install_chef
43
39
  end
44
40
 
45
41
  def run_for_fedora
46
42
  sudo = ssh('which sudo > /dev/null 2>&1') ? 'sudo' : ''
47
- ssh "#{sudo} yum install -y make gcc rsync sudo openssl-devel rubygems ruby-devel ruby-shadow"
48
- ssh "#{sudo} gem install chef --no-ri --no-rdoc --source http://gems.opscode.com --source http://gems.rubyforge.org"
43
+ ssh "#{sudo} yum install -y make gcc rsync sudo openssl-devel rubygems ruby-devel ruby-shadow curl"
44
+ end
45
+
46
+ def run_for_centos
47
+ ssh "#{sudo} yum install -y make gcc rsync sudo openssl-devel curl"
48
+ install_ruby_1_9_2
49
+ install_chef
50
+ end
51
+
52
+ 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 -"
54
+ ssh "cd ruby-1.9.2-* && ./configure && make && #{sudo} make install"
55
+ end
56
+
57
+ def install_rubygems
58
+ ssh "curl -L 'http://rubyforge.org/frs/download.php/69365/rubygems-1.3.6.tgz' | tar xvzf -"
59
+ ssh "cd rubygems* && #{sudo} ruby setup.rb --no-ri --no-rdoc"
60
+ ssh "#{sudo} ln -sfv /usr/bin/gem1.8 /usr/bin/gem"
61
+ end
62
+
63
+ def install_chef
64
+ ssh "#{sudo} gem install rdoc chef ohai --no-ri --no-rdoc --source http://gems.opscode.com --source http://gems.rubyforge.org"
65
+ end
66
+
67
+ def sudo
68
+ ssh('which sudo > /dev/null 2>&1') ? 'sudo' : ''
49
69
  end
50
70
 
51
71
  def upload_ssh_key
metadata CHANGED
@@ -1,12 +1,8 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: spatula
3
3
  version: !ruby/object:Gem::Version
4
- prerelease: false
5
- segments:
6
- - 0
7
- - 0
8
- - 8
9
- version: 0.0.8
4
+ prerelease:
5
+ version: 0.0.9
10
6
  platform: ruby
11
7
  authors:
12
8
  - Trotter Cashion
@@ -14,7 +10,7 @@ autorequire:
14
10
  bindir: bin
15
11
  cert_chain: []
16
12
 
17
- date: 2010-10-26 00:00:00 -04:00
13
+ date: 2011-02-20 00:00:00 -05:00
18
14
  default_executable:
19
15
  dependencies:
20
16
  - !ruby/object:Gem::Dependency
@@ -25,10 +21,6 @@ dependencies:
25
21
  requirements:
26
22
  - - ">="
27
23
  - !ruby/object:Gem::Version
28
- segments:
29
- - 0
30
- - 13
31
- - 4
32
24
  version: 0.13.4
33
25
  type: :runtime
34
26
  version_requirements: *id001
@@ -40,10 +32,6 @@ dependencies:
40
32
  requirements:
41
33
  - - ">="
42
34
  - !ruby/object:Gem::Version
43
- segments:
44
- - 1
45
- - 2
46
- - 4
47
35
  version: 1.2.4
48
36
  type: :runtime
49
37
  version_requirements: *id002
@@ -77,21 +65,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
77
65
  requirements:
78
66
  - - ">="
79
67
  - !ruby/object:Gem::Version
80
- segments:
81
- - 0
82
68
  version: "0"
83
69
  required_rubygems_version: !ruby/object:Gem::Requirement
84
70
  none: false
85
71
  requirements:
86
72
  - - ">="
87
73
  - !ruby/object:Gem::Version
88
- segments:
89
- - 0
90
74
  version: "0"
91
75
  requirements: []
92
76
 
93
77
  rubyforge_project:
94
- rubygems_version: 1.3.7
78
+ rubygems_version: 1.5.0
95
79
  signing_key:
96
80
  specification_version: 3
97
81
  summary: Command line helper app for use with Chef