caterer 0.9.6 → 0.10.0

Sign up to get free protection for your applications and to get access to all the features.
data/.gitignore CHANGED
@@ -2,7 +2,7 @@
2
2
  *.rbc
3
3
  .bundle
4
4
  .config
5
- .vagrant
5
+ .vagrant*
6
6
  .yardoc
7
7
  Gemfile.lock
8
8
  InstalledFiles
data/Vagrantfile CHANGED
@@ -1,22 +1,17 @@
1
1
  #!/usr/bin/env ruby
2
2
 
3
- # require 'berkshelf/vagrant'
4
- require 'vagrant-vbguest' unless defined? VagrantVbguest::Config
3
+ Vagrant.configure("2") do |config|
5
4
 
6
- Vagrant::Config.run do |config|
5
+ # ubuntu
6
+ config.vm.box = 'precise'
7
+ config.vm.box_url = 'http://files.vagrantup.com/precise64.box'
7
8
 
8
- # config.berkshelf.config_path = './knife.rb'
9
+ config.vm.provider "virtualbox" do |v|
10
+ v.customize ["modifyvm", :id, "--cpus", "2", "--memory", "1024", "--cpuexecutioncap", "75"]
11
+ end
9
12
 
10
- config.vm.box = "precise64"
11
- config.vm.box_url = "http://files.vagrantup.com/precise64.box"
12
- config.vm.customize ["modifyvm", :id, "--cpus", 1, "--memory", 512]
13
- config.vm.network :hostonly, "33.33.33.10"
14
- config.vm.share_folder("v-root", "/vagrant", ".")
15
- config.vbguest.auto_update = true
13
+ config.vm.network :private_network, ip: "33.33.33.10"
16
14
 
17
- config.vm.provision :chef_solo do |chef|
18
- chef.cookbooks_path = ['cookbooks']
19
- chef.add_recipe 'users'
20
- end
15
+ config.ssh.forward_agent = true
21
16
 
22
17
  end
@@ -1,3 +1,5 @@
1
+ require 'digest'
2
+
1
3
  module Caterer
2
4
  module Action
3
5
  module Berkshelf
@@ -5,12 +7,14 @@ module Caterer
5
7
 
6
8
  attr_reader :shelf
7
9
  attr_reader :berksfile
10
+ attr_reader :cachefile
8
11
 
9
12
  def initialize(app, env)
10
13
  super
11
14
 
12
15
  @shelf = Caterer::Berkshelf.shelf_for(env)
13
16
  @berksfile = ::Berkshelf::Berksfile.from_file(env[:config].berkshelf.berksfile_path)
17
+ @cachefile = "#{shelf}/.cache"
14
18
  end
15
19
 
16
20
 
@@ -18,7 +22,13 @@ module Caterer
18
22
 
19
23
  if env[:provisioner].is_a? Caterer::Provisioner::ChefSolo
20
24
  configure_cookbooks_path(env[:provisioner])
21
- install(env)
25
+ if needs_update?
26
+ ::Berkshelf.formatter.msg "installing cookbooks..."
27
+ install(env)
28
+ update_cache
29
+ else
30
+ ::Berkshelf.formatter.msg "up-to-date"
31
+ end
22
32
  end
23
33
 
24
34
  @app.call(env)
@@ -26,12 +36,22 @@ module Caterer
26
36
 
27
37
  protected
28
38
 
39
+ def shelf_digest
40
+ berks_content = ::File.read(berksfile.filepath) rescue nil
41
+ shelf_content = ::Dir.glob("#{shelf}/[^\.]*")
42
+ ::Digest::MD5.hexdigest("#{berks_content}/#{shelf_content}")
43
+ end
44
+
45
+ def needs_update?
46
+ !(::File.exists?(cachefile) and ::File.read(cachefile) == shelf_digest)
47
+ end
48
+
49
+ def update_cache
50
+ ::File.write(cachefile, shelf_digest)
51
+ end
52
+
29
53
  def install(env)
30
- ::Berkshelf.formatter.msg "installing cookbooks..."
31
- opts = {
32
- path: shelf
33
- }.merge(env[:config].berkshelf.to_hash).symbolize_keys!
34
- berksfile.install(opts)
54
+ berksfile.install({path: shelf}.merge(env[:config].berkshelf.to_hash).symbolize_keys!)
35
55
  end
36
56
 
37
57
  def configure_cookbooks_path(provisioner)
@@ -0,0 +1,13 @@
1
+ module Caterer
2
+ module Action
3
+ module Environment
4
+ class Setup < Base
5
+
6
+ def call(env)
7
+ @app.call(env)
8
+ end
9
+
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,7 @@
1
+ module Caterer
2
+ module Action
3
+ module Environment
4
+ autoload :Setup, 'caterer/action/environment/setup'
5
+ end
6
+ end
7
+ end
@@ -3,6 +3,7 @@ module Caterer
3
3
  autoload :Base, 'caterer/action/base'
4
4
  autoload :Berkshelf, 'caterer/action/berkshelf'
5
5
  autoload :Config, 'caterer/action/config'
6
+ autoload :Environment, 'caterer/action/environment'
6
7
  autoload :Runner, 'caterer/action/runner'
7
8
  autoload :Provisioner, 'caterer/action/provisioner'
8
9
  autoload :Server, 'caterer/action/server'
@@ -11,6 +11,7 @@ end
11
11
 
12
12
  Caterer.actions.register(:lock) do
13
13
  Vli::Action::Builder.new do
14
+ use Caterer::Action::Environment::Setup
14
15
  use Caterer::Action::Server::Validate::SSH
15
16
  use Caterer::Action::Server::Lock
16
17
  end
@@ -18,6 +19,7 @@ end
18
19
 
19
20
  Caterer.actions.register(:unlock) do
20
21
  Vli::Action::Builder.new do
22
+ use Caterer::Action::Environment::Setup
21
23
  use Caterer::Action::Server::Validate::SSH
22
24
  use Caterer::Action::Server::Unlock
23
25
  end
@@ -25,6 +27,7 @@ end
25
27
 
26
28
  Caterer.actions.register(:bootstrap) do
27
29
  Vli::Action::Builder.new do
30
+ use Caterer::Action::Environment::Setup
28
31
  use Caterer.actions.get(:validate)
29
32
  use Caterer::Action::Provisioner::Load
30
33
  use Caterer::Action::Provisioner::Prepare
@@ -38,6 +41,7 @@ end
38
41
 
39
42
  Caterer.actions.register(:provision) do
40
43
  Vli::Action::Builder.new do
44
+ use Caterer::Action::Environment::Setup
41
45
  use Caterer.actions.get(:validate)
42
46
  use Caterer::Action::Provisioner::Load
43
47
  use Caterer::Action::Provisioner::Prepare
@@ -51,6 +55,7 @@ end
51
55
 
52
56
  Caterer.actions.register(:up) do
53
57
  Vli::Action::Builder.new do
58
+ use Caterer::Action::Environment::Setup
54
59
  use Caterer.actions.get(:validate)
55
60
  use Caterer::Action::Provisioner::Load
56
61
  use Caterer::Action::Provisioner::Prepare
@@ -65,6 +70,7 @@ end
65
70
 
66
71
  Caterer.actions.register(:reboot) do
67
72
  Vli::Action::Builder.new do
73
+ use Caterer::Action::Environment::Setup
68
74
  use Caterer::Action::Server::Validate::SSH
69
75
  use Caterer::Action::Server::Reboot
70
76
  end
@@ -72,6 +78,7 @@ end
72
78
 
73
79
  Caterer.actions.register(:clean) do
74
80
  Vli::Action::Builder.new do
81
+ use Caterer::Action::Environment::Setup
75
82
  use Caterer.actions.get(:validate)
76
83
  use Caterer::Action::Provisioner::Load
77
84
  use Caterer::Action::Provisioner::Uninstall
@@ -1,3 +1,3 @@
1
1
  module Caterer
2
- VERSION = "0.9.6"
2
+ VERSION = "0.10.0"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: caterer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.6
4
+ version: 0.10.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-04-17 00:00:00.000000000 Z
12
+ date: 2013-04-19 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: log4r
@@ -175,7 +175,6 @@ files:
175
175
  - bin/cater
176
176
  - caterer.gemspec
177
177
  - config/default.rb
178
- - cookbooks/users/recipes/default.rb
179
178
  - example/Caterfile
180
179
  - example/bootstrap.sh
181
180
  - knife.rb
@@ -190,6 +189,8 @@ files:
190
189
  - lib/caterer/action/config/validate.rb
191
190
  - lib/caterer/action/config/validate/image.rb
192
191
  - lib/caterer/action/config/validate/provisioner.rb
192
+ - lib/caterer/action/environment.rb
193
+ - lib/caterer/action/environment/setup.rb
193
194
  - lib/caterer/action/provisioner.rb
194
195
  - lib/caterer/action/provisioner/bootstrap.rb
195
196
  - lib/caterer/action/provisioner/cleanup.rb
@@ -261,7 +262,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
261
262
  version: '0'
262
263
  segments:
263
264
  - 0
264
- hash: 4326016804323478888
265
+ hash: -4253641693695072200
265
266
  required_rubygems_version: !ruby/object:Gem::Requirement
266
267
  none: false
267
268
  requirements:
@@ -270,7 +271,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
270
271
  version: '0'
271
272
  segments:
272
273
  - 0
273
- hash: 4326016804323478888
274
+ hash: -4253641693695072200
274
275
  requirements: []
275
276
  rubyforge_project:
276
277
  rubygems_version: 1.8.23
@@ -1,18 +0,0 @@
1
-
2
- package "build-essential" do
3
- action :nothing
4
- end.run_action(:install)
5
-
6
- package 'whois'
7
- chef_gem 'ruby-shadow'
8
-
9
- [['bert', 'password'], ['ernie', 'password'], ['tylerflint', 'password']].each do |u, pass|
10
- user u do
11
- supports :manage_home => true
12
- home "/home/#{u}"
13
- gid "admin"
14
- shell "/bin/bash"
15
- password `echo #{pass} | mkpasswd -s -m sha-512`.chomp
16
- end
17
- end
18
-