vagrant-berkshelf 3.0.1 → 4.0.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.
- checksums.yaml +4 -4
- data/.gitignore +36 -17
- data/.travis.yml +6 -4
- data/CONTRIBUTING.md +4 -4
- data/Gemfile +2 -2
- data/{LICENSE.txt → LICENSE} +1 -1
- data/README.md +67 -24
- data/Rakefile +14 -0
- data/lib/vagrant-berkshelf.rb +17 -1
- data/lib/vagrant-berkshelf/action/base.rb +48 -0
- data/lib/vagrant-berkshelf/action/check.rb +44 -0
- data/lib/vagrant-berkshelf/action/clean.rb +29 -0
- data/lib/vagrant-berkshelf/action/install.rb +35 -0
- data/lib/vagrant-berkshelf/action/load.rb +59 -0
- data/lib/vagrant-berkshelf/action/share.rb +38 -0
- data/lib/vagrant-berkshelf/action/upload.rb +99 -0
- data/lib/vagrant-berkshelf/config.rb +87 -0
- data/lib/vagrant-berkshelf/env.rb +14 -0
- data/lib/vagrant-berkshelf/errors.rb +79 -0
- data/lib/vagrant-berkshelf/helpers.rb +180 -0
- data/lib/vagrant-berkshelf/plugin.rb +40 -0
- data/lib/vagrant-berkshelf/version.rb +5 -0
- data/spec/spec_helper.rb +1 -4
- data/spec/unit/vagrant-berkshelf/config_spec.rb +119 -0
- data/vagrant-berkshelf.gemspec +26 -14
- metadata +35 -52
- data/Thorfile +0 -59
- data/integration/Berksfile +0 -3
- data/integration/Gemfile +0 -10
- data/integration/Vagrantfile +0 -19
- data/lib/berkshelf/vagrant.rb +0 -68
- data/lib/berkshelf/vagrant/action.rb +0 -64
- data/lib/berkshelf/vagrant/action/clean.rb +0 -27
- data/lib/berkshelf/vagrant/action/configure_chef.rb +0 -27
- data/lib/berkshelf/vagrant/action/install.rb +0 -69
- data/lib/berkshelf/vagrant/action/load_shelf.rb +0 -52
- data/lib/berkshelf/vagrant/action/upload.rb +0 -53
- data/lib/berkshelf/vagrant/berks_config.rb +0 -48
- data/lib/berkshelf/vagrant/chef_config.rb +0 -88
- data/lib/berkshelf/vagrant/config.rb +0 -113
- data/lib/berkshelf/vagrant/env.rb +0 -16
- data/lib/berkshelf/vagrant/env_helpers.rb +0 -160
- data/lib/berkshelf/vagrant/errors.rb +0 -71
- data/lib/berkshelf/vagrant/plugin.rb +0 -41
- data/lib/berkshelf/vagrant/version.rb +0 -5
- data/spec/unit/berkshelf/vagrant/config_spec.rb +0 -97
- data/spec/unit/berkshelf/vagrant/errors_spec.rb +0 -12
- data/spec/unit/berkshelf/vagrant_spec.rb +0 -31
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f21f3e8d10fc7c1d2205c55b0ae8bca1221777a
|
4
|
+
data.tar.gz: fcd4acefc3f607775f97873bc04206b9bf2fcb08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4308dafc20d438f3c2a1524ed5076258c4b93e7f2291ca63c696fd116ec9aa7d81630c8a19bcda17d1a48fac25c87bcfa28caf6e343bfc66379a803dea72d61
|
7
|
+
data.tar.gz: fe57bc6dc166bf013d2eff69316d3ac0490ae79b6fafc3666052bc5cdadc07b434c0a91b13df7f7dbaf6c70a36bc1f697394b1488a0309258577eac4b7187a3e
|
data/.gitignore
CHANGED
@@ -1,20 +1,39 @@
|
|
1
|
+
### Ruby ###
|
1
2
|
*.gem
|
2
3
|
*.rbc
|
3
|
-
|
4
|
-
|
5
|
-
|
4
|
+
/.config
|
5
|
+
/coverage/
|
6
|
+
/InstalledFiles
|
7
|
+
/pkg/
|
8
|
+
/spec/reports/
|
9
|
+
/test/tmp/
|
10
|
+
/test/version_tmp/
|
11
|
+
/tmp/
|
12
|
+
/bin/
|
13
|
+
|
14
|
+
## Specific to RubyMotion:
|
15
|
+
.dat*
|
16
|
+
.repl_history
|
17
|
+
build/
|
18
|
+
|
19
|
+
## Documentation cache and generated files:
|
20
|
+
/.yardoc/
|
21
|
+
/_yardoc/
|
22
|
+
/doc/
|
23
|
+
/rdoc/
|
24
|
+
|
25
|
+
## Environment normalisation:
|
26
|
+
/.bundle/
|
27
|
+
/lib/bundler/man/
|
28
|
+
|
29
|
+
# for a library or gem, you might want to ignore these files since the code is
|
30
|
+
# intended to run in multiple environments; otherwise, check them in:
|
6
31
|
Gemfile.lock
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
test/tmp
|
16
|
-
test/version_tmp
|
17
|
-
tmp
|
18
|
-
.rspec
|
19
|
-
.vagrant
|
20
|
-
integration/Berksfile.lock
|
32
|
+
.ruby-version
|
33
|
+
.ruby-gemset
|
34
|
+
|
35
|
+
# unless supporting rvm < 1.11.0 or doing something fancy, ignore this:
|
36
|
+
.rvmrc
|
37
|
+
|
38
|
+
### Vagrant ###
|
39
|
+
.vagrant/
|
data/.travis.yml
CHANGED
@@ -1,14 +1,16 @@
|
|
1
1
|
language: ruby
|
2
|
+
|
2
3
|
rvm:
|
3
4
|
- 2.0.0
|
4
|
-
- 2.1
|
5
|
+
- 2.1
|
6
|
+
|
5
7
|
notifications:
|
6
8
|
irc:
|
7
9
|
channels:
|
8
10
|
- "irc.freenode.org#berkshelf"
|
9
11
|
skip_join: true
|
10
12
|
use_notice: true
|
13
|
+
|
11
14
|
bundler_args: --without doc guard --jobs 7
|
12
|
-
|
13
|
-
|
14
|
-
script: 'bundle exec thor spec:ci'
|
15
|
+
|
16
|
+
script: bundle exec rake
|
data/CONTRIBUTING.md
CHANGED
@@ -23,7 +23,7 @@ Install the latest version of [Bundler](http://gembundler.com)
|
|
23
23
|
|
24
24
|
Clone the project
|
25
25
|
|
26
|
-
$ git clone
|
26
|
+
$ git clone https://github.com/berkshelf/vagrant-berkshelf.git
|
27
27
|
|
28
28
|
and run:
|
29
29
|
|
@@ -32,11 +32,11 @@ and run:
|
|
32
32
|
|
33
33
|
Bundler will install all gems and their dependencies required for testing and developing.
|
34
34
|
|
35
|
-
### Running
|
35
|
+
### Running tests
|
36
36
|
|
37
|
-
One-time run with
|
37
|
+
One-time run with Rake
|
38
38
|
|
39
|
-
$ bundle exec
|
39
|
+
$ bundle exec rake spec
|
40
40
|
|
41
41
|
Or you can setup a quick feedback loop with Guard
|
42
42
|
|
data/Gemfile
CHANGED
@@ -3,11 +3,11 @@ source 'https://rubygems.org'
|
|
3
3
|
gemspec
|
4
4
|
|
5
5
|
group :development do
|
6
|
-
gem 'vagrant', github: 'mitchellh/vagrant'
|
6
|
+
gem 'vagrant', github: 'mitchellh/vagrant'
|
7
7
|
end
|
8
8
|
|
9
9
|
group :plugins do
|
10
|
-
gem
|
10
|
+
gem 'vagrant-berkshelf', path: '.'
|
11
11
|
end
|
12
12
|
|
13
13
|
group :guard do
|
data/{LICENSE.txt → LICENSE}
RENAMED
data/README.md
CHANGED
@@ -1,42 +1,85 @@
|
|
1
|
-
|
1
|
+
Vagrant Berkshelf Plugin
|
2
|
+
========================
|
3
|
+
[][gem]
|
4
|
+
[][travis]
|
2
5
|
|
3
|
-
[
|
4
|
-
[
|
6
|
+
[gem]: https://rubygems.org/gems/vagrant-berkshelf
|
7
|
+
[travis]: http://travis-ci.org/berkshelf/vagrant-berkshelf
|
5
8
|
|
6
|
-
|
9
|
+
Vagrant Berkshelf is a Vagrant plugin that adds Berkshelf integration to the
|
10
|
+
Chef provisioners. Vagrant Berkshelf will automatically download and install
|
11
|
+
cookbooks onto the Vagrant Virtual Machine.
|
7
12
|
|
8
|
-
## Installation
|
9
13
|
|
10
|
-
|
11
|
-
|
12
|
-
|
14
|
+
Installation
|
15
|
+
------------
|
16
|
+
1. Install the latest version of [Vagrant](http://www.vagrantup.com/downloads.html)
|
17
|
+
2. Install the latest version of [ChefDK](http://getchef.com/downloads/chef-dk)
|
18
|
+
3. Install the Vagrant Berkshelf plugin:
|
13
19
|
|
14
|
-
|
20
|
+
$ vagrant plugin install vagrant-berkshelf
|
15
21
|
|
16
|
-
## Usage
|
17
22
|
|
18
|
-
|
23
|
+
Usage
|
24
|
+
-----
|
25
|
+
If the Vagrant Berkshelf plugin is installed, it will intelligent detect when a
|
26
|
+
Berksfile is present in the same working directory as the Vagrantfile.
|
19
27
|
|
20
|
-
|
21
|
-
...
|
22
|
-
config.berkshelf.enabled = true
|
23
|
-
...
|
24
|
-
end
|
28
|
+
Here is an example Vagrantfile configuration section for Vagrant Berkshelf:
|
25
29
|
|
26
|
-
|
30
|
+
```ruby
|
31
|
+
Vagrant.configure("2") do |config|
|
32
|
+
# The path to the Berksfile to use. The default value is "Berksfile" if one
|
33
|
+
# exists, or nil if it does not.
|
34
|
+
config.berkshelf.berksfile_path = "custom.Berksfile"
|
27
35
|
|
28
|
-
|
36
|
+
# Enable Berkshelf. If a Berksfile exists or a berksfile_path is given, this
|
37
|
+
# value is automatically set to true. If not, the value is false
|
38
|
+
config.berkshelf.enabled = true
|
29
39
|
|
30
|
-
|
40
|
+
# A list of Berkshelf groups to only install and sync to the Vagrant Virtual
|
41
|
+
# Machine. The default value is an empty array.
|
42
|
+
config.berkshelf.only = ["group_a", "group_b"]
|
31
43
|
|
32
|
-
|
33
|
-
|
44
|
+
# A list of Berkshelf groups to not install and sync to the Vagrant Virtual
|
45
|
+
# Machine. The default value is an empty array.
|
46
|
+
config.berkshelf.except = ["group_c", "group_d"]
|
34
47
|
|
35
|
-
#
|
48
|
+
# A list of extra values to pass to the `berks` executable. The default value
|
49
|
+
# is an empty array.
|
50
|
+
config.berkshelf.args = ["--format json"]
|
51
|
+
end
|
52
|
+
```
|
36
53
|
|
37
|
-
- Jamie Winsor (<jamie@vialstudios.com>)
|
38
|
-
- Michael Ivey (<michael.ivey@riotgames.com>)
|
39
54
|
|
55
|
+
Contributing
|
56
|
+
------------
|
40
57
|
Thank you to all of our [Contributors](https://github.com/berkshelf/vagrant-berkshelf/graphs/contributors), testers, and users.
|
41
58
|
|
59
|
+
- Please report issues [on the GitHub issue tracker](https://github.com/berkshelf/berkshelf/issues)
|
60
|
+
- Hangout with us in #chef or #berkshelf on freenode
|
61
|
+
|
42
62
|
If you'd like to contribute, please see our [contribution guidelines](https://github.com/berkshelf/vagrant-berkshelf/blob/master/CONTRIBUTING.md) first.
|
63
|
+
|
64
|
+
|
65
|
+
License & Authors
|
66
|
+
-----------------
|
67
|
+
- Jamie Winsor (jamie@vialstudios.com)
|
68
|
+
- Michael Ivey (michael.ivey@riotgames.com)
|
69
|
+
- Seth Vargo (sethvargo@gmail.com)
|
70
|
+
|
71
|
+
```text
|
72
|
+
Copyright (c) 2012-2014 Riot Games
|
73
|
+
|
74
|
+
Licensed under the Apache License, Version 2.0 (the "License");
|
75
|
+
you may not use this file except in compliance with the License.
|
76
|
+
You may obtain a copy of the License at
|
77
|
+
|
78
|
+
http://www.apache.org/licenses/LICENSE-2.0
|
79
|
+
|
80
|
+
Unless required by applicable law or agreed to in writing, software
|
81
|
+
distributed under the License is distributed on an "AS IS" BASIS,
|
82
|
+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
83
|
+
See the License for the specific language governing permissions and
|
84
|
+
limitations under the License.
|
85
|
+
```
|
data/Rakefile
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
|
3
|
+
require 'rspec/core/rake_task'
|
4
|
+
RSpec::Core::RakeTask.new do |t|
|
5
|
+
t.rspec_opts = [].tap do |a|
|
6
|
+
a.push('--color')
|
7
|
+
a.push('--format progress')
|
8
|
+
end.join(' ')
|
9
|
+
end
|
10
|
+
|
11
|
+
desc 'Run all tests'
|
12
|
+
task :test => [:spec]
|
13
|
+
|
14
|
+
task :default => [:test]
|
data/lib/vagrant-berkshelf.rb
CHANGED
@@ -1 +1,17 @@
|
|
1
|
-
require '
|
1
|
+
require 'vagrant'
|
2
|
+
|
3
|
+
require_relative 'vagrant-berkshelf/config'
|
4
|
+
require_relative 'vagrant-berkshelf/plugin'
|
5
|
+
require_relative 'vagrant-berkshelf/version'
|
6
|
+
|
7
|
+
module VagrantPlugins
|
8
|
+
module Berkshelf
|
9
|
+
def self.berkshelf_path
|
10
|
+
ENV['BERKSHELF_PATH'] || File.expand_path('~/.berkshelf')
|
11
|
+
end
|
12
|
+
|
13
|
+
def self.shelves_path
|
14
|
+
File.join(berkshelf_path, 'vagrant-berkshelf', 'shelves')
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,48 @@
|
|
1
|
+
require 'vagrant/action'
|
2
|
+
|
3
|
+
require_relative '../helpers'
|
4
|
+
|
5
|
+
module VagrantPlugins
|
6
|
+
module Berkshelf
|
7
|
+
module Action
|
8
|
+
class Base
|
9
|
+
# Cleanup any shared folders before destroying the VM.
|
10
|
+
def self.clean
|
11
|
+
Vagrant::Action::Builder.new.tap do |b|
|
12
|
+
b.use setup
|
13
|
+
b.use Action::Clean
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
# Provision the VM, calling setup, install, and upload.
|
18
|
+
def self.provision
|
19
|
+
Vagrant::Action::Builder.new.tap do |b|
|
20
|
+
b.use Action::Install
|
21
|
+
b.use Action::Upload
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
# Setup all the required middlemare, including checking for the presence
|
26
|
+
# of Berkshelf, checking for the proper version of Berkshelf, and
|
27
|
+
# loading the datafile from disk.
|
28
|
+
def self.setup
|
29
|
+
Vagrant::Action::Builder.new.tap do |b|
|
30
|
+
b.use Action::Check
|
31
|
+
b.use Vagrant::Action::Builtin::EnvSet, berkshelf: Env.new
|
32
|
+
b.use Action::Load
|
33
|
+
b.use Action::Share
|
34
|
+
end
|
35
|
+
end
|
36
|
+
|
37
|
+
include VagrantPlugins::Berkshelf::Helpers
|
38
|
+
|
39
|
+
def initialize(app, env)
|
40
|
+
@app = app
|
41
|
+
|
42
|
+
klass = self.class.name.downcase.split('::').last
|
43
|
+
@logger = Log4r::Logger.new("vagrant::berkshelf::#{klass}")
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module Berkshelf
|
5
|
+
module Action
|
6
|
+
class Check < Base
|
7
|
+
BERKS_REQUIREMENT = "~> 3.2"
|
8
|
+
|
9
|
+
def call(env)
|
10
|
+
check_berks_bin!(env)
|
11
|
+
berkshelf_version_check!(env)
|
12
|
+
|
13
|
+
@app.call(env)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Check that the Berkshelf `berks` bin is in the PATH.
|
17
|
+
# @raise [BerkshelfNotFound]
|
18
|
+
def check_berks_bin!(env)
|
19
|
+
if berks_bin.nil?
|
20
|
+
raise BerkshelfNotFound
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
# Check that the installed version of Berkshelf is valid for this
|
25
|
+
# version of Vagrant Berkshelf.
|
26
|
+
# @raise [InvalidBerkshelfVersionError]
|
27
|
+
def berkshelf_version_check!(env)
|
28
|
+
result = berks("--version", "--format", "json")
|
29
|
+
|
30
|
+
begin
|
31
|
+
json = JSON.parse(result.stdout, symbolize_names: true)
|
32
|
+
version = Gem::Version.new(json[:version])
|
33
|
+
|
34
|
+
unless Gem::Requirement.new(BERKS_REQUIREMENT).satisfied_by?(version)
|
35
|
+
raise InvalidBerkshelfVersionError.new(berks_bin, BERKS_REQUIREMENT, version)
|
36
|
+
end
|
37
|
+
rescue JSON::ParserError
|
38
|
+
raise InvalidBerkshelfVersionError.new(berks_bin, BERKS_REQUIREMENT, version)
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module Berkshelf
|
5
|
+
module Action
|
6
|
+
class Clean < Base
|
7
|
+
def call(env)
|
8
|
+
if !berkshelf_enabled?(env)
|
9
|
+
@logger.info "Berkshelf disabled, skipping"
|
10
|
+
return @app.call(env)
|
11
|
+
end
|
12
|
+
|
13
|
+
env[:machine].ui.info "Running cleanup tasks for 'berkshelf'..."
|
14
|
+
|
15
|
+
if env[:berkshelf].shelf
|
16
|
+
if File.exist?(env[:berkshelf].shelf)
|
17
|
+
FileUtils.rm_rf(env[:berkshelf].shelf)
|
18
|
+
env[:berkshelf].shelf = nil
|
19
|
+
else
|
20
|
+
@logger.warn "The Berkshelf shelf did not exist for cleanup!"
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
@app.call(env)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
@@ -0,0 +1,35 @@
|
|
1
|
+
require_relative 'base'
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module Berkshelf
|
5
|
+
module Action
|
6
|
+
class Install < Base
|
7
|
+
def call(env)
|
8
|
+
if !berkshelf_enabled?(env)
|
9
|
+
@logger.info "Berkshelf disabled, skipping"
|
10
|
+
return @app.call(env)
|
11
|
+
end
|
12
|
+
|
13
|
+
if !provision_enabled?(env)
|
14
|
+
@logger.info "Provisioning disabled, skipping"
|
15
|
+
return @app.call(env)
|
16
|
+
end
|
17
|
+
|
18
|
+
vendor(env)
|
19
|
+
@app.call(env)
|
20
|
+
end
|
21
|
+
|
22
|
+
# Vendor the cookbooks in the Berkshelf shelf.
|
23
|
+
def vendor(env)
|
24
|
+
shelf = env[:berkshelf].shelf
|
25
|
+
env[:machine].ui.info "Updating Vagrant's Berkshelf..."
|
26
|
+
|
27
|
+
options = env[:machine].config.berkshelf.to_hash
|
28
|
+
|
29
|
+
result = berks('vendor', shelf, options)
|
30
|
+
env[:machine].ui.output(result.stdout)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|