chef-tlc-workflow 0.2.0 → 0.3.0

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.
@@ -0,0 +1,15 @@
1
+ ---
2
+ !binary "U0hBMQ==":
3
+ metadata.gz: !binary |-
4
+ Zjk4Zjk4YzRmNzRiM2M0YmM0OWI2OTZkNzRhNTY3NDg1NGVhNmJhYw==
5
+ data.tar.gz: !binary |-
6
+ ZDU4ZTkzYjJkZTdhNzgwM2Y3MzE4NGMwNDJkMmVkNTk1ZmJiNzgwYQ==
7
+ !binary "U0hBNTEy":
8
+ metadata.gz: !binary |-
9
+ YTk1MTVjYmFiZTYxOGJlZTdmM2U0MzczOTYzNDk1ZThlZTg0ZDgxMDcxMjM3
10
+ ZGI3YWViNGQ0ZTk0MjNmNjk2ZTVjZWUwNGQyYmU0YzgzODU1YmI1OWY2YmU4
11
+ NTg0OTE1YzAyNWJlZTZlMjI5OWVjNmU4MTBiMGZjOWYxNWNkMDk=
12
+ data.tar.gz: !binary |-
13
+ NDBlM2I2ZmU3N2JkMTcxYzAxMzA0YzNlYzI5YWI2ZTIxOTU2NjFlODhlODFi
14
+ ZjdhOTZhMzM5MzhkYTIyYzNiYmQ2YWQ1NzA4M2UzNDk1MDVkZmJhMjIxYTI4
15
+ Y2IwMTRiYmZkZGE2YjMzOWZhYWFhYTVkOTNjNTU3YzQyYThhNDk=
@@ -1,4 +1,17 @@
1
1
 
2
+ # [0.3.0] from 06/18/2013
3
+
4
+ * update to Chef 11 and yank chef-workflow-tasklib (GH-2)
5
+ * replace librarian-chef with [berkshelf](http://berkshelf.com/) (GH-3)
6
+ * update `test/sample-app`: add `Berksfile`, add `Vagrantfile` with [vagrant-berkshelf](https://github.com/riotgames/vagrant-berkshelf) plugin
7
+ * code cleanup, lots of code not needed anymore
8
+
9
+ # [0.2.0] from 06/11/2013
10
+
11
+ * update to Vagrant from 1.0 to 1.2 (GH-1)
12
+ * replace mccloud and knife-solo with [vagrant-aws](https://github.com/mitchellh/vagrant-aws) and [vagrant-managed-servers](https://github.com/tknerr/vagrant-managed-servers) providers
13
+ * update `Vagrantfile`s in `test/` directory for Vagrant 1.2
14
+
2
15
  # [0.1.3] from 05/30/2013
3
16
 
4
17
  * relax version constraint on vagrant gem so that both 1.0.5 and 1.0.5.1 ([windows fixes](https://github.com/mitchellh/vagrant/issues/247)) can be used
data/README.md CHANGED
@@ -2,11 +2,9 @@
2
2
 
3
3
  `chef-tlc-workflow` supports an opiniated workflow for working with Chef. It is based on the strict distinction of top-level vs. dependent cookbooks (see below) and it's currently focussed on chef-solo only.
4
4
 
5
- First of all, it provides a [working sample](https://github.com/tknerr/chef-tlc-workflow/tree/master/test/vagrant-1.x-bootstrap) for deployment to esx, ec2 and local from within single `Vagrantfile`.
5
+ It provides a [working sample](https://github.com/tknerr/chef-tlc-workflow/tree/master/test/vagrant-1.x-bootstrap) for deployment to esx, ec2 and local from within single `Vagrantfile`.
6
6
 
7
- Other than that it provides helper methods to use the dependencies defined in `metadata.rb` from within [librarian](https://github.com/applicationsonline/librarian) `Cheffile`s. This ensures consistency between the dependencies specified in metadata and resolved via librarian (**NOTE:** to be replaced with Berkshelf soon!)
8
-
9
- Finally, it ensures a consistent gem set by declaring all the gems we use in our workflow in its own gemspec, i.e. `chef-tlc-workflow` is the only gem you need to depend on - everything else (like vagrant, mcloud, etc..) comes in as transitive dependencies.
7
+ Also, it ensures a consistent gem set by declaring all the gems we use in our workflow in its own gemspec, i.e. `chef-tlc-workflow` is the only gem you need to depend on - everything else (like vagrant, mcloud, etc..) comes in as transitive dependencies.
10
8
 
11
9
 
12
10
  ## Terminology
@@ -63,10 +61,10 @@ Using multi_json (1.7.6)
63
61
  Then you need to resolve the [sample-app](https://github.com/tknerr/chef-tlc-workflow/tree/master/test/sample-app) top-level cookbook along with all its dependencies into the `./cookbooks` directory:
64
62
  ```
65
63
  $ rake resolve_sample_app
66
- cd tmp/tlc/sample-app-0.1.0 && librarian-chef install --path D:/Repos/_github/chef-tlc-workflow/test/vagrant-1.x-bootstrap/cookbooks/sample-app-0.1.0
64
+ cd tmp/tlc/sample-app-0.1.0 && berks install --path D:/Repos/_github/chef-tlc-workflow/test/vagrant-1.x-bootstrap/cookbooks/sample-app-0.1.0
65
+ Using sample-app (0.1.0) at path: 'D:/Repos/_github/chef-tlc-workflow/test/sample-app'
67
66
  Installing apache2 (1.5.0)
68
67
  Installing apt (1.3.2)
69
- Installing sample-app (0.1.0)
70
68
  ```
71
69
 
72
70
  See, the dependencies are now resolved per top-level cookbook (i.e. `sample-app-0.1.0` in this case) separately:
@@ -97,37 +95,6 @@ vagrant up sample-app-esx --provider=managed
97
95
  vagrant provision sample-app-esx
98
96
  ```
99
97
 
100
-
101
- ### Librarian Helper
102
-
103
- **NOTE:** this is going to be replaced with Berkshelf soon
104
-
105
- Since librarian does not support reading the cookbook dependencies from `metadata.rb`, the `ChefTLCWorkflow::Helpers` module adds this functionality.
106
-
107
- In the trivial case you can use it in your cookbook project's `Cheffile` like so:
108
-
109
- ```ruby
110
- require 'chef-tlc-workflow/helpers'
111
-
112
- ChefTLCWorkflow::Helpers::from_metadata.each do |cb_name, cb_version|
113
- cookbook cb_name, cb_version
114
- end
115
- ```
116
-
117
- If some of the cookbooks defined in metadata.rb are not available from the community site, you can define your overrides like so:
118
-
119
- ```ruby
120
- ...
121
- @overrides = {
122
- 'tlc-base' => { :git => 'https://github.com/tknerr/cookbook-tlc-base.git', :ref => 'master' },
123
- }
124
-
125
- ChefTLCWorkflow::Helpers::from_metadata.each do |cb_name, cb_version|
126
- cookbook cb_name, cb_version, @overrides[cb_name]
127
- end
128
- ```
129
-
130
-
131
98
  ### Single Gemfile Dependency
132
99
 
133
100
  It references all gems we need for our Chef workflow, this means that your `Gemfile` basically looks like this:
@@ -138,7 +105,7 @@ source :rubygems
138
105
  gem "chef-tlc-workflow", "0.2.0"
139
106
  ```
140
107
 
141
- This brings in all the transitive gem dependencies as defined in the `chef-tlc-workflow.gemspec`, e.g. librarian, chef, foodcritic, etc...
108
+ This brings in all the transitive gem dependencies as defined in the `chef-tlc-workflow.gemspec`, e.g. berkshelf, chef, foodcritic, etc...
142
109
 
143
110
  While this is not ideal in terms of keeping the LOAD_PATH as small as possible, it's a tradeoff in favor of convenience and consistency.
144
111
 
data/Rakefile CHANGED
@@ -11,7 +11,7 @@ task :test => [
11
11
  # TODO:
12
12
  # * rewrite as cucumber feature
13
13
  # * check for apache default page
14
- # * more realistic scenario: e.g. scaffold infra, create Cheffile and node.json on the fly, etc...
14
+ # * more realistic scenario: e.g. scaffold infrastructure and app cookbook
15
15
  #
16
16
  desc "tests bootstrapping in an esx-like environment via vagrant-managed-servers provider"
17
17
  task :test_vagrant_esx_bootstrap do
@@ -17,11 +17,14 @@ Gem::Specification.new do |gem|
17
17
  gem.test_files = gem.files.grep(%r{^(test|spec|features)/})
18
18
  gem.require_paths = ["lib"]
19
19
 
20
- # lock down dependencies
20
+ # lock down direct dependencies
21
21
  #
22
- gem.add_dependency 'chef-workflow-tasklib', '0.2.2'
23
- gem.add_dependency 'chef', '10.18.2'
24
- gem.add_dependency 'librarian-chef', '0.0.1'
22
+ gem.add_dependency 'chef', '11.4.4'
23
+ gem.add_dependency 'berkshelf', '2.0.4'
24
+ gem.add_dependency 'rake'
25
+
26
+ # help bundler resolve the json conflict (see RiotGames/berkshelf#676)
27
+ gem.add_dependency 'json', '1.7.7'
25
28
 
26
29
  #
27
30
  # further dependencies that are not `require`d here but we pull in for convenience
@@ -29,13 +32,12 @@ Gem::Specification.new do |gem|
29
32
  #
30
33
 
31
34
  # testing related
32
- gem.add_dependency 'foodcritic', '1.7.0'
33
- gem.add_dependency 'chefspec', '0.9.0'
34
- gem.add_dependency 'fauxhai', '0.1.1'
35
+ gem.add_dependency 'foodcritic', '2.0.1'
36
+ gem.add_dependency 'chefspec', '1.3.1'
37
+ gem.add_dependency 'fauxhai', '1.1.1'
35
38
 
36
39
  # others
37
- gem.add_dependency 'sahara', '0.0.13'
38
- gem.add_dependency 'knife-solo_data_bag', '0.3.1'
40
+ gem.add_dependency 'knife-solo_data_bag', '0.4.0'
39
41
 
40
42
  # need these on windows only
41
43
  if RUBY_PLATFORM =~ /mswin|mingw/
@@ -22,13 +22,13 @@ The `chef-tlc-workflow` makes our workflow for developing with Chef explict by a
22
22
  * create
23
23
  * release
24
24
  * resolve_deps
25
- * validate (Cheffile in .gitignore)
25
+ * validate (Berksfile in .gitignore)
26
26
  * test (u.a. => test:converge, ggf. chef-workflow testlib?)
27
27
  * app
28
28
  * create
29
29
  * release
30
30
  * resolve_deps
31
- * validate (=> u.a. deps:check, Cheffile nicht in .gitignore)
31
+ * validate (=> u.a. deps:check, Berksfile nicht in .gitignore)
32
32
  * test (was auch immer das heisst)
33
33
  * infra
34
34
  * create
@@ -71,7 +71,7 @@ Currently available are these tasks.
71
71
  The `deps` namespace embodies the workflow concerning cookbook dependency management
72
72
 
73
73
  * `tlc:deps:resolve` - resolve dependencies using [librarian](https://github.com/applicationsonline/librarian)
74
- * `tlc:deps:check` - check if dependencies in `metadata.rb` and `Cheffile` are consistent
74
+ * `tlc:deps:check` - check if dependencies in `metadata.rb` and `Berksfile` are consistent
75
75
 
76
76
  #### Cookbook Testing
77
77
 
@@ -16,59 +16,16 @@ module ChefTLCWorkflow
16
16
  end
17
17
 
18
18
  #
19
- # reads the direct dependencies defined in `Cheffile` and
20
- # returns a map of dependency => version, e.g.:
21
- #
22
- # { 'foo' => '1.0.0', 'bar' => '0.1.0' }
23
- #
24
- def self.read_cheffile_deps
25
- require 'librarian/chef/environment'
26
- env = ::Librarian::Chef::Environment.new
27
- deps = env.spec.dependencies
28
- Hash[deps.map { |dep| [dep.name, dep.requirement.to_s] }]
29
- end
30
-
31
- #
32
- # resolves the dependencies as specified in `Cheffile` and
33
- # returns a map of dependency => version (including the
34
- # transitive ones), e.g.:
19
+ # returns the resolved dependencies as specified in `Berksfile` as a
20
+ # map of dependency => version (including the transitive ones), e.g.:
35
21
  #
36
22
  # { 'foo' => '1.0.0', 'bar' => '0.1.0', 'baz_which_depends_on_bar' => '1.5.0' }
37
23
  #
38
- def self.read_and_resolve_cheffile_deps
39
- require 'librarian/chef/environment'
40
- env = ::Librarian::Chef::Environment.new
41
- deps = env.resolver.resolve(env.spec).manifests
42
- Hash[deps.map { |dep| [dep.name, dep.version.to_s] }]
43
- end
44
-
45
- #
46
- # returns the direct dependencies defined in `metadata.rb` as an
47
- # array of triples:
48
- #
49
- # [[<cookbook_name>, <cookbook_version>, <location>], ...]
50
- #
51
- # where `<location>` is `nil`, unless the `locations_yml`
52
- # parameter is given and the specified file contains a location
53
- # mapping for `<cookbook_name>`
54
- #
55
- # Example usage in `Cheffile`:
56
- #
57
- # require 'chef-tlc-workflow/helpers'
58
- #
59
- # ChefTLCWorkflow::Helpers::from_metadata.each do |cb_name, cb_version, location|
60
- # cookbook cb_name, cb_version, location
61
- # end
62
- #
63
- def self.from_metadata(locations_yml = nil)
64
- read_metadata_deps.to_a.map do |cb_name, cb_version|
65
- if locations_yml
66
- inferred_location = resolve_location_from_file(locations_yml, cb_name, cb_version)
67
- else
68
- inferred_location = nil
69
- end
70
- [cb_name, cb_version, inferred_location]
71
- end
24
+ def self.read_berkshelf_deps
25
+ require 'json'
26
+ deps = JSON.parse(`berks list --format=json`)
27
+ fail "error resolving cookbooks: #{deps['errors']}" unless deps['errors'].empty?
28
+ Hash[deps['cookbooks'].map { |cb| [cb['name'], cb['version']] }]
72
29
  end
73
30
 
74
31
  #
@@ -90,6 +47,7 @@ module ChefTLCWorkflow
90
47
  #
91
48
  def self.read_app_cookbooks(yml_file, name = nil, version = nil)
92
49
  # TODO: validate format
50
+ require 'yaml'
93
51
  app_cookbooks = YAML.load_file yml_file
94
52
  app_cookbooks.select! { |ac| ac['name'] == name } if name
95
53
  app_cookbooks.select! { |ac| ac['version'] == version } if version
@@ -108,19 +66,5 @@ module ChefTLCWorkflow
108
66
  end
109
67
  end
110
68
 
111
- private
112
-
113
- def self.resolve_location_from_file(locations_yml, cb_name, cb_version)
114
- cookbook_index = YAML.load_file(locations_yml)
115
- if cookbook_index[cb_name]
116
- default_opts = Hash.new
117
- default_opts[:git] = cookbook_index[cb_name][:git] if cookbook_index[cb_name][:git]
118
- default_opts[:ref] = cookbook_index[cb_name][:ref] if cookbook_index[cb_name][:ref]
119
- version_specific_opts = cookbook_index[cb_name][cb_version] || {}
120
- return default_opts.merge version_specific_opts
121
- else
122
- return nil
123
- end
124
- end
125
69
  end
126
70
  end
@@ -5,28 +5,25 @@ namespace :tlc do
5
5
  require 'chef-tlc-workflow/helpers'
6
6
 
7
7
  #
8
- # resolve dependencies using librarian
8
+ # resolve dependencies using berkshelf
9
9
  #
10
10
  task :resolve do
11
- require 'fileutils'
12
- FileUtils.rm_rf('Cheffile.lock')
13
- sh "librarian-chef clean"
14
- sh "librarian-chef install"
11
+ sh "berks install"
15
12
  end
16
13
 
17
14
  #
18
- # check if dependencies in metadata.rb and Cheffile are consistent
15
+ # check if dependencies in metadata.rb and Berksfile are consistent
19
16
  #
20
17
  task :check do
21
18
  errors = []
22
19
  metadata_deps = ChefTLCWorkflow::Helpers::read_metadata_deps
23
- resolved_cheffile_deps = ChefTLCWorkflow::Helpers::read_and_resolve_cheffile_deps
24
- resolved_cheffile_deps.each do | dep, version |
20
+ resolved_deps = ChefTLCWorkflow::Helpers::read_berkshelf_deps
21
+ resolved_deps.each do | dep, version |
25
22
  if metadata_deps.has_key?(dep)
26
23
  metadata_ver = ::Gem::Requirement.new(metadata_deps[dep])
27
- cheffile_ver = ::Gem::Requirement.new(version)
28
- if metadata_ver != cheffile_ver
29
- errors << "dependency version for '#{dep}' is inconsistent: '#{metadata_ver}' vs '#{cheffile_ver}'!"
24
+ berkshelf_ver = ::Gem::Requirement.new(version)
25
+ if metadata_ver != berkshelf_ver
26
+ errors << "dependency version for '#{dep}' is inconsistent: '#{metadata_ver}' vs '#{berkshelf_ver}'!"
30
27
  end
31
28
  else
32
29
  errors << "dependency '#{dep}' is missing in metadata.rb!"
@@ -48,11 +45,11 @@ namespace :tlc do
48
45
 
49
46
  #
50
47
  # resolve an application cookbook with all it's dependenices
51
- # whilst honoring the application cookbook's Cheffile:
48
+ # whilst honoring the application cookbook's Berksfile:
52
49
  #
53
50
  # 1. clone (:git,:ref) or copy (:path) the app cookbook to './tmp'
54
51
  # 2. resolve dependencies (inlcuding app cookbook itself) as defined in
55
- # the app cookbook's Cheffile to './cookbooks/<app-cookbook-name>-<version>'
52
+ # the app cookbook's Berksfile to './cookbooks/<app-cookbook-name>-<version>'
56
53
  #
57
54
  #
58
55
  def self.resolve_app_cookbook(app_cookbook)
@@ -80,17 +77,10 @@ namespace :tlc do
80
77
  end
81
78
 
82
79
  # resolve deps from tmp_dir into target_dir
83
- fail "No Cheffile found in '#{tmp_dir}'" unless File.exist? "#{tmp_dir}/Cheffile"
80
+ fail "No Berksfile found in '#{tmp_dir}'" unless File.exist? "#{tmp_dir}/Berksfile"
84
81
  FileUtils.rm_rf target_dir
85
82
  FileUtils.mkdir_p target_dir
86
- sh "cd #{tmp_dir} && librarian-chef install --path #{File.absolute_path(target_dir)}"
87
-
88
- # copy application cookbook itself if it was not reference in Cheffile using `:path => '.'`
89
- app_cookbook_in_targetdir = "#{target_dir}/#{name}"
90
- unless File.exist? app_cookbook_in_targetdir
91
- FileUtils.mkdir_p app_cookbook_in_targetdir
92
- FileUtils.cp_r Dir.glob("#{tmp_dir}/*"), app_cookbook_in_targetdir
93
- end
83
+ sh "cd #{tmp_dir} && berks install --path #{File.absolute_path(target_dir)}"
94
84
  end
95
85
 
96
86
  def self.cookbook_files_to_copy(path)
@@ -1,3 +1,3 @@
1
1
  module ChefTLCWorkflow
2
- VERSION = "0.2.0"
2
+ VERSION = "0.3.0"
3
3
  end
@@ -0,0 +1,2 @@
1
+ .kitchen
2
+ Berksfile.lock
@@ -0,0 +1,3 @@
1
+ site :opscode
2
+
3
+ metadata
@@ -1,20 +1,20 @@
1
- Description
2
- ===========
3
-
4
- A minimal sample application cookbook for testing.
5
-
6
- "Features" of an application cookbook:
7
-
8
- * strict dependency management - *all* dependency versions must be locked down in metadata.rb
9
- * Cheffile must exist and is *not* in .gitignore - we need it when resolving its dependencies
10
-
11
-
12
- Requirements
13
- ============
14
-
15
- Attributes
16
- ==========
17
-
18
- Usage
19
- =====
20
-
1
+ Description
2
+ ===========
3
+
4
+ A minimal sample top-level cookbook for testing.
5
+
6
+ Requirements of a top-level cookbook:
7
+
8
+ * strict dependency management - *all* dependency versions must be locked down in metadata.rb
9
+ * Berksfile must exist and is *not* in .gitignore - we need it when resolving its dependencies
10
+
11
+
12
+ Requirements
13
+ ============
14
+
15
+ Attributes
16
+ ==========
17
+
18
+ Usage
19
+ =====
20
+
@@ -0,0 +1,49 @@
1
+
2
+ # Vagrantfile for testing
3
+ #
4
+ # NOTE: you need the following plugins:
5
+ # - `vagrant plugin install vagrant-plugin-bundler --plugin-version 0.1.0`
6
+ #
7
+ Vagrant::configure("2") do |config|
8
+
9
+ # required vagrant plugins
10
+ config.plugin.deps do
11
+ depend 'vagrant-omnibus', '1.0.2'
12
+ depend 'vagrant-cachier', '0.1.0'
13
+ depend 'vagrant-berkshelf', '1.2.0'
14
+ end
15
+
16
+ # enable cachier
17
+ config.cache.auto_detect = true
18
+ # the Chef version to use
19
+ config.omnibus.chef_version = "11.4.4"
20
+ # enable berkshelf plugin
21
+ config.berkshelf.enabled = true
22
+
23
+ #
24
+ # define the sample-app VM
25
+ #
26
+ config.vm.define :"sample-app" do | sample_app_config |
27
+
28
+ # configure the basebox
29
+ sample_app_config.vm.box = "opscode_ubuntu-13.04_provisionerless"
30
+ sample_app_config.vm.box_url = "https://opscode-vm.s3.amazonaws.com/vagrant/opscode_ubuntu-13.04_provisionerless.box"
31
+ # configure host-only network
32
+ sample_app_config.vm.hostname = "sample-app-berkshelf.local"
33
+ sample_app_config.vm.network :private_network, ip: "33.33.40.15"
34
+ # virtualbox customizations
35
+ sample_app_config.vm.provider :virtualbox do |vbox, override|
36
+ vbox.customize ["modifyvm", :id, "--name", "sample-app-berkshelf.local"]
37
+ end
38
+
39
+ # provisioning
40
+ sample_app_config.vm.provision :chef_solo do |chef|
41
+ chef.add_recipe "sample-app"
42
+ chef.json = {
43
+ :sample_app => {
44
+ :words_of_wisdom => "Sample App with vagrant-berkshelf Plugin!"
45
+ }
46
+ }
47
+ end
48
+ end
49
+ end
@@ -1,4 +1,4 @@
1
- source :rubygems
1
+ source 'https://rubygems.org'
2
2
 
3
- gem "chef-tlc-workflow", "0.2.0.dev",
3
+ gem "chef-tlc-workflow", "0.3.0.dev",
4
4
  :path => "#{File.dirname(__FILE__)}/../../../chef-tlc-workflow"
@@ -1,5 +1,5 @@
1
1
  require 'bundler/setup'
2
- require 'chef-workflow/tasks/tlc/deps'
2
+ require 'chef-tlc-workflow/tasks'
3
3
 
4
4
  desc "resolve application cookbook with all its dependencies"
5
5
  task :resolve_deps, [:app_cookbook] do |t, args|
@@ -31,7 +31,7 @@ def aws_config(instance_type)
31
31
  override.vm.box_url = "https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box"
32
32
  # override ssh user and private key
33
33
  override.ssh.username = "ubuntu"
34
- override.ssh.private_key_path = "#{ENV['HOME']}/.ssh/mccloud_rsa"
34
+ override.ssh.private_key_path = "./ssh_key/chef-tlc-insecure-key"
35
35
 
36
36
  # aws specific settings
37
37
  aws.access_key_id = ENV['AWS_ACCESS_KEY']
@@ -40,8 +40,8 @@ def aws_config(instance_type)
40
40
  aws.region = "eu-west-1"
41
41
  aws.availability_zone = "eu-west-1c"
42
42
  aws.instance_type = instance_type
43
- aws.security_groups = [ "mccloud", "http" ]
44
- aws.keypair_name = "mccloud-key-tlc"
43
+ aws.security_groups = [ "ssh", "http" ]
44
+ aws.keypair_name = "chef-tlc-insecure-key"
45
45
  end
46
46
  end
47
47
 
@@ -60,13 +60,16 @@ end
60
60
  # Vagrantfile for testing
61
61
  #
62
62
  # NOTE: you need the following plugins:
63
- # - `vagrant plugin install vagrant-aws --plugin-version 0.2.2`
64
- # - `vagrant plugin install vagrant-managed-servers --plugin-version 0.1.0`
65
- # - `vagrant plugin install vagrant-omnibus --plugin-version 1.0.2`
66
- # - `vagrant plugin install vagrant-cachier --plugin-version 0.1.0`
63
+ # - `vagrant plugin install vagrant-plugin-bundler --plugin-version 0.1.0`
67
64
  #
68
65
  Vagrant::configure("2") do |config|
69
66
 
67
+ # required vagrant plugins
68
+ config.plugin.depend 'vagrant-aws', '0.2.2.rsyncfix'
69
+ config.plugin.depend 'vagrant-managed-servers', '0.1.0'
70
+ config.plugin.depend 'vagrant-omnibus', '1.0.2'
71
+ config.plugin.depend 'vagrant-cachier', '0.1.0'
72
+
70
73
  # the Chef version to use
71
74
  config.omnibus.chef_version = "11.4.4"
72
75
 
@@ -0,0 +1,23 @@
1
+ -----BEGIN RSA PRIVATE KEY-----
2
+ MIIEowIBAAKCAQEAsKLqz0Mkyv5w5hip7H1EV09NIvbYtY2Nc/r/zOUxdLl9bMj0tdmKmefdzWj7
3
+ afoa7e+4wbBNTlQD72Ar4D3aIMpNyplcpFQ6EXnfrwYgtjGdynavQv9/aKRmKcHn8l+BcMjVJcTA
4
+ biuIFbntR9waYkkaAwK4mzHcDI4/ENzNUuexTiPz3W0vNrMxmY9678DimZbjJjCtEkCiPDpnbmUO
5
+ scVzwSEdqoTRIHrIxI4MtOVWQJ3hobwyJYk5AzlkIS8p6U1qeTvIoMC8l+JTyERPziVGovhfTjrd
6
+ gjwFdXOgaOESaIP8la2Nu/29a+J7BFwllgwXfnx/uxAElMCmQFdpbwIDAQABAoIBAA9QcK87kQsQ
7
+ eFVauhDI4432UCfB4xQKi8MMdfUbwefu1RMDcUP68mtZkP9oJLQRfRg3+nrAgFNUMWslmWg9tJW3
8
+ NHtmRIPy0X4GZQBVtaxWLOoK1DMo17EI39qq9yMqaJyQrPozTsO+fnPzxMDAMoFm+RxdtgeukPd9
9
+ tbYOjrarPtpxbsUPcKp6590+ity7ZIyyyDsJyrgzaJDxAUQyjB0OfnBJQVk2iZQ1zsFO2hcTL7Xa
10
+ LQbQVkKQnHW6TpyfYQZFtRif2CmwoUfgNK++lLq/SRbfgi20ZHQI8uLGXZ3nvooBplIgIlK1QGc6
11
+ yOtZNAOroZgIciUjdRsEnkxH/7ECgYEA5GWotYbjCdbX8WExqSR2v6qSnrvnDYAodOLCzCK370o/
12
+ Mdv4KG5Dlz/QrgTeeDE7Sj4qljg22e0y7wRNdp+SqL4GZAwWvYAJsIBE9xQX5AMgTRVqhnEh347n
13
+ 3G3MNAILxVx3fe9cAR3UReaeGT7TCugbSDjFDSqJoN2YhxvpCFsCgYEAxfvXjPso1ynPbllrD40x
14
+ Y4msjJnGKj+6m/zat6A0/kMXzm4jv4JdZQGU+bf0RTi53uiBCqtURuDkWE7QVs1NrMwt6cG2/Bm9
15
+ q+xLm5oqPLI9HsLIGbAEcKPhI7nVXIfAdzq3gdBJ9by6ZwJI+ISmx2EX8z2x8V3my5cADc0DD30C
16
+ gYAzeT3Ge3nbk9HjEpaQmikxFQ4qPArcng+AGELyorh1c3Q+lmadJgyRn842Cd7hk6bbGpuac1zZ
17
+ TH34JC4ZF+mDoh/qmFbfqmWEo8PnM14XAyVaegMh/Yk2ywwyP4SQDA3/EtHTTgicL87RWiIzaldB
18
+ 1AGiCzlNuFKAMLDZck7YlQKBgQCIq66EAwmRZqpsGcwfQy+579sugCTdG3s9nVJ6+lw6vaQce8mv
19
+ tVW1mV729/bnJh6hc01JSTZ3a14WW+nUUgtx4s07Fd+0rixSF1+mPck0dzJcHsg1e13FSEvt9qYE
20
+ Jy5E4EK3mUrFGZBv9ZLcA+6BqlP3NTq2TUU6e7Ws0T5wnQKBgAwk4Eh3lUPiN7MOjsbzyXjfLrtv
21
+ DS9Oas7qQ4zJJGeh4SfCQcRCn8Q0EVetj5Xt2zEiSBUveWdtCNuBWE+F89YoEaey/GXiT1F9A9T/
22
+ /Re+YmI2ekmE+xNB8x15I02d0tDH2F+mzvSejDcgKXQlWCXbboHrCZ3DWje6Z1rMgVah
23
+ -----END RSA PRIVATE KEY-----
metadata CHANGED
@@ -1,148 +1,130 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: chef-tlc-workflow
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
5
- prerelease:
4
+ version: 0.3.0
6
5
  platform: ruby
7
6
  authors:
8
7
  - Torben Knerr
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2013-06-11 00:00:00.000000000 Z
11
+ date: 2013-06-18 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
- name: chef-workflow-tasklib
14
+ name: chef
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
17
  - - '='
20
18
  - !ruby/object:Gem::Version
21
- version: 0.2.2
19
+ version: 11.4.4
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
24
  - - '='
28
25
  - !ruby/object:Gem::Version
29
- version: 0.2.2
26
+ version: 11.4.4
30
27
  - !ruby/object:Gem::Dependency
31
- name: chef
28
+ name: berkshelf
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
31
  - - '='
36
32
  - !ruby/object:Gem::Version
37
- version: 10.18.2
33
+ version: 2.0.4
38
34
  type: :runtime
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
38
  - - '='
44
39
  - !ruby/object:Gem::Version
45
- version: 10.18.2
40
+ version: 2.0.4
46
41
  - !ruby/object:Gem::Dependency
47
- name: librarian-chef
42
+ name: rake
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - '='
45
+ - - ! '>='
52
46
  - !ruby/object:Gem::Version
53
- version: 0.0.1
47
+ version: '0'
54
48
  type: :runtime
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - '='
52
+ - - ! '>='
60
53
  - !ruby/object:Gem::Version
61
- version: 0.0.1
54
+ version: '0'
62
55
  - !ruby/object:Gem::Dependency
63
- name: foodcritic
56
+ name: json
64
57
  requirement: !ruby/object:Gem::Requirement
65
- none: false
66
58
  requirements:
67
59
  - - '='
68
60
  - !ruby/object:Gem::Version
69
- version: 1.7.0
61
+ version: 1.7.7
70
62
  type: :runtime
71
63
  prerelease: false
72
64
  version_requirements: !ruby/object:Gem::Requirement
73
- none: false
74
65
  requirements:
75
66
  - - '='
76
67
  - !ruby/object:Gem::Version
77
- version: 1.7.0
68
+ version: 1.7.7
78
69
  - !ruby/object:Gem::Dependency
79
- name: chefspec
70
+ name: foodcritic
80
71
  requirement: !ruby/object:Gem::Requirement
81
- none: false
82
72
  requirements:
83
73
  - - '='
84
74
  - !ruby/object:Gem::Version
85
- version: 0.9.0
75
+ version: 2.0.1
86
76
  type: :runtime
87
77
  prerelease: false
88
78
  version_requirements: !ruby/object:Gem::Requirement
89
- none: false
90
79
  requirements:
91
80
  - - '='
92
81
  - !ruby/object:Gem::Version
93
- version: 0.9.0
82
+ version: 2.0.1
94
83
  - !ruby/object:Gem::Dependency
95
- name: fauxhai
84
+ name: chefspec
96
85
  requirement: !ruby/object:Gem::Requirement
97
- none: false
98
86
  requirements:
99
87
  - - '='
100
88
  - !ruby/object:Gem::Version
101
- version: 0.1.1
89
+ version: 1.3.1
102
90
  type: :runtime
103
91
  prerelease: false
104
92
  version_requirements: !ruby/object:Gem::Requirement
105
- none: false
106
93
  requirements:
107
94
  - - '='
108
95
  - !ruby/object:Gem::Version
109
- version: 0.1.1
96
+ version: 1.3.1
110
97
  - !ruby/object:Gem::Dependency
111
- name: sahara
98
+ name: fauxhai
112
99
  requirement: !ruby/object:Gem::Requirement
113
- none: false
114
100
  requirements:
115
101
  - - '='
116
102
  - !ruby/object:Gem::Version
117
- version: 0.0.13
103
+ version: 1.1.1
118
104
  type: :runtime
119
105
  prerelease: false
120
106
  version_requirements: !ruby/object:Gem::Requirement
121
- none: false
122
107
  requirements:
123
108
  - - '='
124
109
  - !ruby/object:Gem::Version
125
- version: 0.0.13
110
+ version: 1.1.1
126
111
  - !ruby/object:Gem::Dependency
127
112
  name: knife-solo_data_bag
128
113
  requirement: !ruby/object:Gem::Requirement
129
- none: false
130
114
  requirements:
131
115
  - - '='
132
116
  - !ruby/object:Gem::Version
133
- version: 0.3.1
117
+ version: 0.4.0
134
118
  type: :runtime
135
119
  prerelease: false
136
120
  version_requirements: !ruby/object:Gem::Requirement
137
- none: false
138
121
  requirements:
139
122
  - - '='
140
123
  - !ruby/object:Gem::Version
141
- version: 0.3.1
124
+ version: 0.4.0
142
125
  - !ruby/object:Gem::Dependency
143
126
  name: ruby-wmi
144
127
  requirement: !ruby/object:Gem::Requirement
145
- none: false
146
128
  requirements:
147
129
  - - '='
148
130
  - !ruby/object:Gem::Version
@@ -150,7 +132,6 @@ dependencies:
150
132
  type: :runtime
151
133
  prerelease: false
152
134
  version_requirements: !ruby/object:Gem::Requirement
153
- none: false
154
135
  requirements:
155
136
  - - '='
156
137
  - !ruby/object:Gem::Version
@@ -158,7 +139,6 @@ dependencies:
158
139
  - !ruby/object:Gem::Dependency
159
140
  name: win32-service
160
141
  requirement: !ruby/object:Gem::Requirement
161
- none: false
162
142
  requirements:
163
143
  - - '='
164
144
  - !ruby/object:Gem::Version
@@ -166,7 +146,6 @@ dependencies:
166
146
  type: :runtime
167
147
  prerelease: false
168
148
  version_requirements: !ruby/object:Gem::Requirement
169
- none: false
170
149
  requirements:
171
150
  - - '='
172
151
  - !ruby/object:Gem::Version
@@ -186,18 +165,17 @@ files:
186
165
  - Rakefile
187
166
  - chef-tlc-workflow.gemspec
188
167
  - docs/ApplicationVsLibraryVsForkedCookbooks.md
189
- - docs/TmpLibrarianHelpers.md
190
168
  - docs/TmpWorkflowTasks.md
191
169
  - lib/chef-tlc-workflow.rb
192
170
  - lib/chef-tlc-workflow/helpers.rb
171
+ - lib/chef-tlc-workflow/tasks.rb
193
172
  - lib/chef-tlc-workflow/version.rb
194
- - lib/chef-workflow/tasks/tlc.rb
195
- - lib/chef-workflow/tasks/tlc/deps.rb
196
- - lib/chef-workflow/tasks/tlc/test.rb
197
173
  - test/esx_fake/Vagrantfile
174
+ - test/sample-app/.gitignore
175
+ - test/sample-app/Berksfile
198
176
  - test/sample-app/CHANGELOG.md
199
- - test/sample-app/Cheffile
200
177
  - test/sample-app/README.md
178
+ - test/sample-app/Vagrantfile
201
179
  - test/sample-app/attributes/default.rb
202
180
  - test/sample-app/metadata.rb
203
181
  - test/sample-app/recipes/default.rb
@@ -207,35 +185,37 @@ files:
207
185
  - test/vagrant-1.x-bootstrap/Rakefile
208
186
  - test/vagrant-1.x-bootstrap/Vagrantfile
209
187
  - test/vagrant-1.x-bootstrap/app_cookbooks.yml
188
+ - test/vagrant-1.x-bootstrap/ssh_key/chef-tlc-insecure-key
210
189
  homepage: https://github.com/tknerr/chef-tlc-workflow
211
190
  licenses: []
191
+ metadata: {}
212
192
  post_install_message:
213
193
  rdoc_options: []
214
194
  require_paths:
215
195
  - lib
216
196
  required_ruby_version: !ruby/object:Gem::Requirement
217
- none: false
218
197
  requirements:
219
198
  - - ! '>='
220
199
  - !ruby/object:Gem::Version
221
200
  version: '0'
222
201
  required_rubygems_version: !ruby/object:Gem::Requirement
223
- none: false
224
202
  requirements:
225
203
  - - ! '>='
226
204
  - !ruby/object:Gem::Version
227
205
  version: '0'
228
206
  requirements: []
229
207
  rubyforge_project:
230
- rubygems_version: 1.8.24
208
+ rubygems_version: 2.0.3
231
209
  signing_key:
232
- specification_version: 3
210
+ specification_version: 4
233
211
  summary: Chef Workflow based on the idea of Top-Level Cookbooks
234
212
  test_files:
235
213
  - test/esx_fake/Vagrantfile
214
+ - test/sample-app/.gitignore
215
+ - test/sample-app/Berksfile
236
216
  - test/sample-app/CHANGELOG.md
237
- - test/sample-app/Cheffile
238
217
  - test/sample-app/README.md
218
+ - test/sample-app/Vagrantfile
239
219
  - test/sample-app/attributes/default.rb
240
220
  - test/sample-app/metadata.rb
241
221
  - test/sample-app/recipes/default.rb
@@ -245,3 +225,4 @@ test_files:
245
225
  - test/vagrant-1.x-bootstrap/Rakefile
246
226
  - test/vagrant-1.x-bootstrap/Vagrantfile
247
227
  - test/vagrant-1.x-bootstrap/app_cookbooks.yml
228
+ - test/vagrant-1.x-bootstrap/ssh_key/chef-tlc-insecure-key
@@ -1,21 +0,0 @@
1
-
2
- ## Librarian Helpers
3
-
4
- Since librarian does not support reading the cookbook dependencies from `metadata.rb`,
5
- the `ChefTLCWorkflow::Helpers` module adds this functionality.
6
-
7
- In the trivial case you can use it in your cookbook project's `Cheffile` like so:
8
-
9
- require 'chef-tlc-workflow/helpers'
10
-
11
- ChefTLCWorkflow::Helpers::from_metadata.each do |cb_name, cb_version|
12
- cookbook cb_name, cb_version
13
- end
14
-
15
- If some of the cookbooks defined in metadata.rb are not available from the community site,
16
- you can provide a .yml file with custom location mappings and pass it to the helper method:
17
-
18
- ...
19
- ChefTLCWorkflow::Helpers::from_metadata('../../locations.yml').each do |cb_name, cb_version, location|
20
- cookbook cb_name, cb_version, location
21
- end
@@ -1,4 +0,0 @@
1
- require 'chef-workflow-tasklib'
2
-
3
- chef_workflow_task 'tlc/deps'
4
- chef_workflow_task 'tlc/test'
@@ -1,15 +0,0 @@
1
-
2
- namespace :tlc do
3
- namespace :test do
4
-
5
- #
6
- # destroy the default Vagrant VM, resolve dependencies and converge the default Vagrant VM
7
- #
8
- task :converge do
9
- sh "vagrant destroy -f"
10
- Rake::Task["tlc:deps:resolve"].invoke
11
- sh "vagrant up"
12
- end
13
- end
14
- end
15
-
@@ -1,15 +0,0 @@
1
- site "http://community.opscode.com/api/v1"
2
-
3
- require 'chef-tlc-workflow/helpers'
4
-
5
- #
6
- # read dependencies from metadata
7
- #
8
- ChefTLCWorkflow::Helpers::from_metadata.each do |cb_name, cb_version|
9
- cookbook cb_name, cb_version
10
- end
11
-
12
- #
13
- # resolve self for testing with vagrant
14
- #
15
- cookbook "sample-app", :path => '.'