berkshelf-vagrant 1.1.2 → 1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +15 -0
- data/lib/berkshelf-vagrant.rb +1 -1
- metadata +11 -206
- data/.gitignore +0 -18
- data/.travis.yml +0 -11
- data/CHANGELOG.md +0 -6
- data/CONTRIBUTING.md +0 -44
- data/Gemfile +0 -35
- data/Guardfile +0 -16
- data/LICENSE.txt +0 -13
- data/README.md +0 -35
- data/Thorfile +0 -58
- data/berkshelf-vagrant.gemspec +0 -36
- data/lib/berkshelf/vagrant.rb +0 -40
- data/lib/berkshelf/vagrant/action.rb +0 -63
- data/lib/berkshelf/vagrant/action/clean.rb +0 -28
- data/lib/berkshelf/vagrant/action/configure_chef.rb +0 -28
- data/lib/berkshelf/vagrant/action/install.rb +0 -51
- data/lib/berkshelf/vagrant/action/load_shelf.rb +0 -50
- data/lib/berkshelf/vagrant/action/set_ui.rb +0 -17
- data/lib/berkshelf/vagrant/action/upload.rb +0 -44
- data/lib/berkshelf/vagrant/config.rb +0 -91
- data/lib/berkshelf/vagrant/env.rb +0 -26
- data/lib/berkshelf/vagrant/env_helpers.rb +0 -55
- data/lib/berkshelf/vagrant/errors.rb +0 -33
- data/lib/berkshelf/vagrant/plugin.rb +0 -34
- data/lib/berkshelf/vagrant/version.rb +0 -5
- data/spec/spec_helper.rb +0 -22
- data/spec/unit/berkshelf/vagrant/config_spec.rb +0 -81
- data/spec/unit/berkshelf/vagrant/errors_spec.rb +0 -12
- data/spec/unit/berkshelf/vagrant_spec.rb +0 -25
checksums.yaml
ADDED
@@ -0,0 +1,15 @@
|
|
1
|
+
---
|
2
|
+
!binary "U0hBMQ==":
|
3
|
+
metadata.gz: !binary |-
|
4
|
+
ODdiNzQxMTZkMDhmMzdmOTgyYjBhZjEwZDUxYjYxZDc3YmYxNDU0OA==
|
5
|
+
data.tar.gz: !binary |-
|
6
|
+
ODRiNTAzMDQwOWJjNDNhZjNhZDEyMmI0NTBjOTRkNjEyODZlNTlkZg==
|
7
|
+
!binary "U0hBNTEy":
|
8
|
+
metadata.gz: !binary |-
|
9
|
+
MDhhNDRiZDY3YjY4NDU4YTY4ZGIxMjA0ODQ5MDk3MjllMDk3Njk3YzIyYjVi
|
10
|
+
ZWZiNGViOTUyNGRkNTQxMDAyNzRhODFmNmIxMGUyODY3NjM5N2EyY2QwOGFi
|
11
|
+
OTQ0MzdkYmNiM2ExYmY2ODhmZTZiNmQ2NTY3MTQwYWQ3ODY5Zjk=
|
12
|
+
data.tar.gz: !binary |-
|
13
|
+
ZWM5YWUzZTU4ZmU3YTU2ZWQyODJiOGQ5YmY2YmY5Njc0NTliNmExMmVhMGRi
|
14
|
+
YzVlYzQxMmZlYTZhN2EzYzQwZjU2MmQ3N2Q2M2RmZGQxMDIzNzU3NzU5NWQx
|
15
|
+
Y2QyYzliNDhhNzQ1ZWMyMGQ0YzQyNTA4ZmUwZmVmNjRjOWM2MTk=
|
data/lib/berkshelf-vagrant.rb
CHANGED
@@ -1 +1 @@
|
|
1
|
-
|
1
|
+
|
metadata
CHANGED
@@ -1,255 +1,60 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: berkshelf-vagrant
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
5
|
-
prerelease:
|
4
|
+
version: 1.1.3
|
6
5
|
platform: ruby
|
7
6
|
authors:
|
8
7
|
- Jamie Winsor
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-04-
|
11
|
+
date: 2013-04-19 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
|
-
name: berkshelf
|
14
|
+
name: vagrant-berkshelf
|
16
15
|
requirement: !ruby/object:Gem::Requirement
|
17
|
-
none: false
|
18
16
|
requirements:
|
19
17
|
- - ! '>='
|
20
18
|
- !ruby/object:Gem::Version
|
21
|
-
version: 1.
|
19
|
+
version: 1.2.0
|
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: 1.
|
30
|
-
-
|
31
|
-
name: activesupport
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
33
|
-
none: false
|
34
|
-
requirements:
|
35
|
-
- - ! '>='
|
36
|
-
- !ruby/object:Gem::Version
|
37
|
-
version: 3.2.0
|
38
|
-
- - <
|
39
|
-
- !ruby/object:Gem::Version
|
40
|
-
version: 3.2.13
|
41
|
-
type: :runtime
|
42
|
-
prerelease: false
|
43
|
-
version_requirements: !ruby/object:Gem::Requirement
|
44
|
-
none: false
|
45
|
-
requirements:
|
46
|
-
- - ! '>='
|
47
|
-
- !ruby/object:Gem::Version
|
48
|
-
version: 3.2.0
|
49
|
-
- - <
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
version: 3.2.13
|
52
|
-
- !ruby/object:Gem::Dependency
|
53
|
-
name: i18n
|
54
|
-
requirement: !ruby/object:Gem::Requirement
|
55
|
-
none: false
|
56
|
-
requirements:
|
57
|
-
- - ~>
|
58
|
-
- !ruby/object:Gem::Version
|
59
|
-
version: 0.6.0
|
60
|
-
type: :runtime
|
61
|
-
prerelease: false
|
62
|
-
version_requirements: !ruby/object:Gem::Requirement
|
63
|
-
none: false
|
64
|
-
requirements:
|
65
|
-
- - ~>
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
version: 0.6.0
|
68
|
-
- !ruby/object:Gem::Dependency
|
69
|
-
name: json
|
70
|
-
requirement: !ruby/object:Gem::Requirement
|
71
|
-
none: false
|
72
|
-
requirements:
|
73
|
-
- - ! '>='
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: 1.5.1
|
76
|
-
- - <
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: 1.8.0
|
79
|
-
type: :runtime
|
80
|
-
prerelease: false
|
81
|
-
version_requirements: !ruby/object:Gem::Requirement
|
82
|
-
none: false
|
83
|
-
requirements:
|
84
|
-
- - ! '>='
|
85
|
-
- !ruby/object:Gem::Version
|
86
|
-
version: 1.5.1
|
87
|
-
- - <
|
88
|
-
- !ruby/object:Gem::Version
|
89
|
-
version: 1.8.0
|
90
|
-
- !ruby/object:Gem::Dependency
|
91
|
-
name: net-ssh
|
92
|
-
requirement: !ruby/object:Gem::Requirement
|
93
|
-
none: false
|
94
|
-
requirements:
|
95
|
-
- - ~>
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: 2.6.6
|
98
|
-
type: :runtime
|
99
|
-
prerelease: false
|
100
|
-
version_requirements: !ruby/object:Gem::Requirement
|
101
|
-
none: false
|
102
|
-
requirements:
|
103
|
-
- - ~>
|
104
|
-
- !ruby/object:Gem::Version
|
105
|
-
version: 2.6.6
|
106
|
-
- !ruby/object:Gem::Dependency
|
107
|
-
name: net-scp
|
108
|
-
requirement: !ruby/object:Gem::Requirement
|
109
|
-
none: false
|
110
|
-
requirements:
|
111
|
-
- - ~>
|
112
|
-
- !ruby/object:Gem::Version
|
113
|
-
version: 1.1.0
|
114
|
-
type: :runtime
|
115
|
-
prerelease: false
|
116
|
-
version_requirements: !ruby/object:Gem::Requirement
|
117
|
-
none: false
|
118
|
-
requirements:
|
119
|
-
- - ~>
|
120
|
-
- !ruby/object:Gem::Version
|
121
|
-
version: 1.1.0
|
122
|
-
- !ruby/object:Gem::Dependency
|
123
|
-
name: bundler
|
124
|
-
requirement: !ruby/object:Gem::Requirement
|
125
|
-
none: false
|
126
|
-
requirements:
|
127
|
-
- - ~>
|
128
|
-
- !ruby/object:Gem::Version
|
129
|
-
version: '1.3'
|
130
|
-
type: :development
|
131
|
-
prerelease: false
|
132
|
-
version_requirements: !ruby/object:Gem::Requirement
|
133
|
-
none: false
|
134
|
-
requirements:
|
135
|
-
- - ~>
|
136
|
-
- !ruby/object:Gem::Version
|
137
|
-
version: '1.3'
|
138
|
-
- !ruby/object:Gem::Dependency
|
139
|
-
name: spork
|
140
|
-
requirement: !ruby/object:Gem::Requirement
|
141
|
-
none: false
|
142
|
-
requirements:
|
143
|
-
- - ! '>='
|
144
|
-
- !ruby/object:Gem::Version
|
145
|
-
version: '0'
|
146
|
-
type: :development
|
147
|
-
prerelease: false
|
148
|
-
version_requirements: !ruby/object:Gem::Requirement
|
149
|
-
none: false
|
150
|
-
requirements:
|
151
|
-
- - ! '>='
|
152
|
-
- !ruby/object:Gem::Version
|
153
|
-
version: '0'
|
154
|
-
- !ruby/object:Gem::Dependency
|
155
|
-
name: rspec
|
156
|
-
requirement: !ruby/object:Gem::Requirement
|
157
|
-
none: false
|
158
|
-
requirements:
|
159
|
-
- - ! '>='
|
160
|
-
- !ruby/object:Gem::Version
|
161
|
-
version: '0'
|
162
|
-
type: :development
|
163
|
-
prerelease: false
|
164
|
-
version_requirements: !ruby/object:Gem::Requirement
|
165
|
-
none: false
|
166
|
-
requirements:
|
167
|
-
- - ! '>='
|
168
|
-
- !ruby/object:Gem::Version
|
169
|
-
version: '0'
|
170
|
-
- !ruby/object:Gem::Dependency
|
171
|
-
name: thor
|
172
|
-
requirement: !ruby/object:Gem::Requirement
|
173
|
-
none: false
|
174
|
-
requirements:
|
175
|
-
- - ! '>='
|
176
|
-
- !ruby/object:Gem::Version
|
177
|
-
version: '0'
|
178
|
-
type: :development
|
179
|
-
prerelease: false
|
180
|
-
version_requirements: !ruby/object:Gem::Requirement
|
181
|
-
none: false
|
182
|
-
requirements:
|
183
|
-
- - ! '>='
|
184
|
-
- !ruby/object:Gem::Version
|
185
|
-
version: '0'
|
186
|
-
description: A Vagrant plugin to add Berkshelf integration to the Chef provisioners
|
26
|
+
version: 1.2.0
|
27
|
+
description: Renamed to vagrant-berkshelf
|
187
28
|
email:
|
188
29
|
- reset@riotgames.com
|
189
30
|
executables: []
|
190
31
|
extensions: []
|
191
32
|
extra_rdoc_files: []
|
192
33
|
files:
|
193
|
-
- .gitignore
|
194
|
-
- .travis.yml
|
195
|
-
- CHANGELOG.md
|
196
|
-
- CONTRIBUTING.md
|
197
|
-
- Gemfile
|
198
|
-
- Guardfile
|
199
|
-
- LICENSE.txt
|
200
|
-
- README.md
|
201
|
-
- Thorfile
|
202
|
-
- berkshelf-vagrant.gemspec
|
203
34
|
- lib/berkshelf-vagrant.rb
|
204
|
-
- lib/berkshelf/vagrant.rb
|
205
|
-
- lib/berkshelf/vagrant/action.rb
|
206
|
-
- lib/berkshelf/vagrant/action/clean.rb
|
207
|
-
- lib/berkshelf/vagrant/action/configure_chef.rb
|
208
|
-
- lib/berkshelf/vagrant/action/install.rb
|
209
|
-
- lib/berkshelf/vagrant/action/load_shelf.rb
|
210
|
-
- lib/berkshelf/vagrant/action/set_ui.rb
|
211
|
-
- lib/berkshelf/vagrant/action/upload.rb
|
212
|
-
- lib/berkshelf/vagrant/config.rb
|
213
|
-
- lib/berkshelf/vagrant/env.rb
|
214
|
-
- lib/berkshelf/vagrant/env_helpers.rb
|
215
|
-
- lib/berkshelf/vagrant/errors.rb
|
216
|
-
- lib/berkshelf/vagrant/plugin.rb
|
217
|
-
- lib/berkshelf/vagrant/version.rb
|
218
|
-
- spec/spec_helper.rb
|
219
|
-
- spec/unit/berkshelf/vagrant/config_spec.rb
|
220
|
-
- spec/unit/berkshelf/vagrant/errors_spec.rb
|
221
|
-
- spec/unit/berkshelf/vagrant_spec.rb
|
222
35
|
homepage: http://berkshelf.com
|
223
36
|
licenses:
|
224
37
|
- Apache 2.0
|
38
|
+
metadata: {}
|
225
39
|
post_install_message:
|
226
40
|
rdoc_options: []
|
227
41
|
require_paths:
|
228
42
|
- lib
|
229
43
|
required_ruby_version: !ruby/object:Gem::Requirement
|
230
|
-
none: false
|
231
44
|
requirements:
|
232
45
|
- - ! '>='
|
233
46
|
- !ruby/object:Gem::Version
|
234
47
|
version: 1.9.1
|
235
48
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
236
|
-
none: false
|
237
49
|
requirements:
|
238
50
|
- - ! '>='
|
239
51
|
- !ruby/object:Gem::Version
|
240
52
|
version: '0'
|
241
|
-
segments:
|
242
|
-
- 0
|
243
|
-
hash: -547127228269075134
|
244
53
|
requirements: []
|
245
54
|
rubyforge_project:
|
246
|
-
rubygems_version:
|
55
|
+
rubygems_version: 2.0.3
|
247
56
|
signing_key:
|
248
|
-
specification_version:
|
249
|
-
summary:
|
250
|
-
test_files:
|
251
|
-
- spec/spec_helper.rb
|
252
|
-
- spec/unit/berkshelf/vagrant/config_spec.rb
|
253
|
-
- spec/unit/berkshelf/vagrant/errors_spec.rb
|
254
|
-
- spec/unit/berkshelf/vagrant_spec.rb
|
57
|
+
specification_version: 4
|
58
|
+
summary: Renamed to vagrant-berkshelf
|
59
|
+
test_files: []
|
255
60
|
has_rdoc:
|
data/.gitignore
DELETED
data/.travis.yml
DELETED
data/CHANGELOG.md
DELETED
data/CONTRIBUTING.md
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
# Contributing
|
2
|
-
|
3
|
-
## Developing
|
4
|
-
|
5
|
-
If you'd like to submit a patch:
|
6
|
-
|
7
|
-
1. Fork the project.
|
8
|
-
2. Make your feature addition or bug fix.
|
9
|
-
3. Add [tests](#testing) for it. This is important so that it isn't broken in a
|
10
|
-
future version unintentionally.
|
11
|
-
4. Commit. **Do not touch any unrelated code, such as the gemspec or version.**
|
12
|
-
If you must change unrelated code, do it in a commit by itself, so that it
|
13
|
-
can be ignored.
|
14
|
-
5. Send a pull request.
|
15
|
-
|
16
|
-
## Testing
|
17
|
-
|
18
|
-
### Install prerequisites
|
19
|
-
|
20
|
-
Install the latest version of [Bundler](http://gembundler.com)
|
21
|
-
|
22
|
-
$ gem install bundler
|
23
|
-
|
24
|
-
Clone the project
|
25
|
-
|
26
|
-
$ git clone git://github.com/RiotGames/berkshelf-vagrant.git
|
27
|
-
|
28
|
-
and run:
|
29
|
-
|
30
|
-
$ cd berkshelf-vagrant
|
31
|
-
$ bundle-vagrant install
|
32
|
-
|
33
|
-
Bundler will install all gems and their dependencies required for testing and developing.
|
34
|
-
|
35
|
-
### Running unit (RSpec) tests
|
36
|
-
|
37
|
-
One-time run with Thor
|
38
|
-
|
39
|
-
$ bundle exec thor spec
|
40
|
-
|
41
|
-
Or you can setup a quick feedback loop with Guard
|
42
|
-
|
43
|
-
$ bundle exec guard start
|
44
|
-
guard> rspec
|
data/Gemfile
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
source 'https://rubygems.org'
|
2
|
-
|
3
|
-
gemspec
|
4
|
-
|
5
|
-
group :development do
|
6
|
-
gem 'vagrant', github: "mitchellh/vagrant", tag: "v1.1.2"
|
7
|
-
gem 'coolline'
|
8
|
-
gem 'guard', '>= 1.5.0'
|
9
|
-
gem 'guard-rspec'
|
10
|
-
gem 'guard-spork'
|
11
|
-
gem 'guard-yard'
|
12
|
-
gem 'redcarpet'
|
13
|
-
gem 'yard'
|
14
|
-
gem 'fuubar'
|
15
|
-
|
16
|
-
require 'rbconfig'
|
17
|
-
|
18
|
-
if RbConfig::CONFIG['target_os'] =~ /darwin/i
|
19
|
-
gem 'growl', require: false
|
20
|
-
gem 'rb-fsevent', require: false
|
21
|
-
|
22
|
-
if `uname`.strip == 'Darwin' && `sw_vers -productVersion`.strip >= '10.8'
|
23
|
-
gem 'terminal-notifier-guard', '~> 1.5.3', require: false
|
24
|
-
end rescue Errno::ENOENT
|
25
|
-
|
26
|
-
elsif RbConfig::CONFIG['target_os'] =~ /linux/i
|
27
|
-
gem 'libnotify', '~> 0.8.0', require: false
|
28
|
-
gem 'rb-inotify', require: false
|
29
|
-
|
30
|
-
elsif RbConfig::CONFIG['target_os'] =~ /mswin|mingw/i
|
31
|
-
gem 'rb-notifu', '>= 0.0.4', require: false
|
32
|
-
gem 'wdm', require: false
|
33
|
-
gem 'win32console', require: false
|
34
|
-
end
|
35
|
-
end
|
data/Guardfile
DELETED
@@ -1,16 +0,0 @@
|
|
1
|
-
guard 'spork' do
|
2
|
-
watch('Gemfile')
|
3
|
-
watch('spec/spec_helper.rb') { :rspec }
|
4
|
-
end
|
5
|
-
|
6
|
-
guard 'yard', stdout: '/dev/null', stderr: '/dev/null' do
|
7
|
-
watch(%r{app/.+\.rb})
|
8
|
-
watch(%r{lib/.+\.rb})
|
9
|
-
watch(%r{ext/.+\.c})
|
10
|
-
end
|
11
|
-
|
12
|
-
guard 'rspec', cli: "--color --drb --format Fuubar", all_on_start: false, all_after_pass: false do
|
13
|
-
watch(%r{^spec/unit/.+_spec\.rb$})
|
14
|
-
watch(%r{^lib/(.+)\.rb$}) { |m| "spec/unit/#{m[1]}_spec.rb" }
|
15
|
-
watch('spec/spec_helper.rb') { "spec" }
|
16
|
-
end
|
data/LICENSE.txt
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
Copyright (c) 2012-2013 Riot Games
|
2
|
-
|
3
|
-
Licensed under the Apache License, Version 2.0 (the "License");
|
4
|
-
you may not use this file except in compliance with the License.
|
5
|
-
You may obtain a copy of the License at
|
6
|
-
|
7
|
-
http://www.apache.org/licenses/LICENSE-2.0
|
8
|
-
|
9
|
-
Unless required by applicable law or agreed to in writing, software
|
10
|
-
distributed under the License is distributed on an "AS IS" BASIS,
|
11
|
-
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
12
|
-
See the License for the specific language governing permissions and
|
13
|
-
limitations under the License.
|
data/README.md
DELETED
@@ -1,35 +0,0 @@
|
|
1
|
-
# Berkshelf::Vagrant
|
2
|
-
[![Gem Version](https://badge.fury.io/rb/berkshelf-vagrant.png)](http://badge.fury.io/rb/berkshelf-vagrant)
|
3
|
-
[![Build Status](https://travis-ci.org/RiotGames/berkshelf-vagrant.png?branch=master)](https://travis-ci.org/RiotGames/berkshelf-vagrant)
|
4
|
-
[![Dependency Status](https://gemnasium.com/RiotGames/berkshelf-vagrant.png)](https://gemnasium.com/RiotGames/berkshelf-vagrant)
|
5
|
-
[![Code Climate](https://codeclimate.com/github/RiotGames/berkshelf-vagrant.png)](https://codeclimate.com/github/RiotGames/berkshelf-vagrant)
|
6
|
-
|
7
|
-
A Vagrant plugin to add Berkshelf integration to the Chef provisioners
|
8
|
-
|
9
|
-
## Installation
|
10
|
-
|
11
|
-
Install Vagrant 1.1.x from the [Vagrant downloads page](http://downloads.vagrantup.com/)
|
12
|
-
|
13
|
-
Install the Berkshelf Vagrant plugin
|
14
|
-
|
15
|
-
$ vagrant plugin install berkshelf-vagrant
|
16
|
-
|
17
|
-
## Usage
|
18
|
-
|
19
|
-
Once the Berkshelf Vagrant plugin is installed it can be enabled in your Vagrantfile
|
20
|
-
|
21
|
-
|
22
|
-
Vagrant.configure("2") do |config|
|
23
|
-
...
|
24
|
-
config.berkshelf.enabled = true
|
25
|
-
...
|
26
|
-
end
|
27
|
-
|
28
|
-
The plugin will look in your current working directory for your `Berksfile` by default. Just ensure that your Berksfile exists and when you run `vagrant up`, `vagrant provision`, or `vagrant destroy` the Berkshelf integration will automatically kick in!
|
29
|
-
|
30
|
-
# Authors
|
31
|
-
- Jamie Winsor (<reset@riotgames.com>)
|
32
|
-
|
33
|
-
Thank you to all of our [Contributors](https://github.com/RiotGames/berkshelf-vagrant/graphs/contributors), testers, and users.
|
34
|
-
|
35
|
-
If you'd like to contribute, please see our [contribution guidelines](https://github.com/RiotGames/berkshelf-vagrant/blob/master/CONTRIBUTING.md) first.
|
data/Thorfile
DELETED
@@ -1,58 +0,0 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
$:.push File.expand_path("../lib", __FILE__)
|
3
|
-
|
4
|
-
require 'bundler'
|
5
|
-
require 'bundler/setup'
|
6
|
-
require 'thor/rake_compat'
|
7
|
-
|
8
|
-
require 'berkshelf/vagrant'
|
9
|
-
|
10
|
-
class Default < Thor
|
11
|
-
class Gem < Thor
|
12
|
-
include Thor::RakeCompat
|
13
|
-
Bundler::GemHelper.install_tasks
|
14
|
-
|
15
|
-
namespace :gem
|
16
|
-
|
17
|
-
desc "build", "Build berkshelf-vagrant-#{Berkshelf::Vagrant::VERSION}.gem into the pkg directory"
|
18
|
-
def build
|
19
|
-
Rake::Task["build"].execute
|
20
|
-
end
|
21
|
-
|
22
|
-
desc "release", "Create tag v#{Berkshelf::Vagrant::VERSION} and build and push berkshelf-vagrant-#{Berkshelf::Vagrant::VERSION}.gem to Rubygems"
|
23
|
-
def release
|
24
|
-
Rake::Task["release"].execute
|
25
|
-
end
|
26
|
-
|
27
|
-
desc "install", "Build and install berkshelf-vagrant-#{Berkshelf::Vagrant::VERSION}.gem into system gems"
|
28
|
-
def install
|
29
|
-
Rake::Task["install"].execute
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
class Spec < Thor
|
34
|
-
include Thor::Actions
|
35
|
-
|
36
|
-
namespace :spec
|
37
|
-
default_task :unit
|
38
|
-
|
39
|
-
desc "ci", "Run all possible tests on Travis-CI"
|
40
|
-
def ci
|
41
|
-
ENV['CI'] = 'true' # Travis-CI also sets this, but set it here for local testing
|
42
|
-
invoke(:unit)
|
43
|
-
end
|
44
|
-
|
45
|
-
desc "unit", "Run unit tests"
|
46
|
-
def unit
|
47
|
-
unless run_unit
|
48
|
-
exit 1
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
no_tasks do
|
53
|
-
def run_unit(*flags)
|
54
|
-
run "rspec --color --format=documentation #{flags.join(' ')} spec"
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
58
|
-
end
|
data/berkshelf-vagrant.gemspec
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
lib = File.expand_path('../lib', __FILE__)
|
3
|
-
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
require 'berkshelf/vagrant/version'
|
5
|
-
|
6
|
-
Gem::Specification.new do |spec|
|
7
|
-
spec.name = "berkshelf-vagrant"
|
8
|
-
spec.version = Berkshelf::Vagrant::VERSION
|
9
|
-
spec.authors = [ "Jamie Winsor" ]
|
10
|
-
spec.email = [ "reset@riotgames.com" ]
|
11
|
-
spec.description = %q{A Vagrant plugin to add Berkshelf integration to the Chef provisioners}
|
12
|
-
spec.summary = spec.description
|
13
|
-
spec.homepage = "http://berkshelf.com"
|
14
|
-
spec.license = "Apache 2.0"
|
15
|
-
|
16
|
-
spec.files = `git ls-files`.split($/)
|
17
|
-
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
-
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
-
spec.require_paths = ["lib"]
|
20
|
-
spec.required_ruby_version = ">= 1.9.1"
|
21
|
-
|
22
|
-
spec.add_dependency 'berkshelf', '>= 1.3.0'
|
23
|
-
# activesupport 3.2.13 contains an incompatible hard lock on i18n (= 0.6.1)
|
24
|
-
spec.add_dependency 'activesupport', '>= 3.2.0', '< 3.2.13'
|
25
|
-
|
26
|
-
# Explicit locks to ensure we activate the proper gem versions for Vagrant
|
27
|
-
spec.add_dependency "i18n", "~> 0.6.0"
|
28
|
-
spec.add_dependency "json", ">= 1.5.1", "< 1.8.0"
|
29
|
-
spec.add_dependency "net-ssh", "~> 2.6.6"
|
30
|
-
spec.add_dependency "net-scp", "~> 1.1.0"
|
31
|
-
|
32
|
-
spec.add_development_dependency 'bundler', '~> 1.3'
|
33
|
-
spec.add_development_dependency 'spork'
|
34
|
-
spec.add_development_dependency 'rspec'
|
35
|
-
spec.add_development_dependency 'thor'
|
36
|
-
end
|
data/lib/berkshelf/vagrant.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
require 'vagrant'
|
2
|
-
require 'berkshelf'
|
3
|
-
require 'berkshelf/vagrant/version'
|
4
|
-
require 'berkshelf/vagrant/errors'
|
5
|
-
require 'tmpdir'
|
6
|
-
require 'fileutils'
|
7
|
-
|
8
|
-
module Berkshelf
|
9
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
10
|
-
module Vagrant
|
11
|
-
autoload :Action, 'berkshelf/vagrant/action'
|
12
|
-
autoload :Config, 'berkshelf/vagrant/config'
|
13
|
-
autoload :Env, 'berkshelf/vagrant/env'
|
14
|
-
autoload :EnvHelpers, 'berkshelf/vagrant/env_helpers'
|
15
|
-
|
16
|
-
class << self
|
17
|
-
# The path to where shelfs are created on the host machine to be mounted in
|
18
|
-
# Vagrant guests
|
19
|
-
#
|
20
|
-
# @return [String]
|
21
|
-
def shelf_path
|
22
|
-
File.join(Berkshelf.berkshelf_path, 'vagrant')
|
23
|
-
end
|
24
|
-
|
25
|
-
# Generate a new shelf to be mounted in a Vagrant guest
|
26
|
-
#
|
27
|
-
# @return [String]
|
28
|
-
# path to the generated shelf
|
29
|
-
def mkshelf
|
30
|
-
unless File.exist?(shelf_path)
|
31
|
-
FileUtils.mkdir_p(shelf_path)
|
32
|
-
end
|
33
|
-
|
34
|
-
Dir.mktmpdir('berkshelf-', shelf_path)
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
require 'berkshelf/vagrant/plugin'
|
@@ -1,63 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
module Action
|
4
|
-
autoload :Clean, 'berkshelf/vagrant/action/clean'
|
5
|
-
autoload :ConfigureChef, 'berkshelf/vagrant/action/configure_chef'
|
6
|
-
autoload :Install, 'berkshelf/vagrant/action/install'
|
7
|
-
autoload :LoadShelf, 'berkshelf/vagrant/action/load_shelf'
|
8
|
-
autoload :SetUI, 'berkshelf/vagrant/action/set_ui'
|
9
|
-
autoload :Upload, 'berkshelf/vagrant/action/upload'
|
10
|
-
|
11
|
-
class << self
|
12
|
-
# Return the Berkshelf install middleware stack. When placed in the action chain
|
13
|
-
# this stack will find retrieve and resolve the cookbook dependencies describe
|
14
|
-
# in your configured Berksfile.
|
15
|
-
#
|
16
|
-
# Cookbooks will installed into a temporary directory, called a Shelf, and mounted
|
17
|
-
# into the VM. This mounted path will be appended to the chef_solo.cookbooks_path value.
|
18
|
-
#
|
19
|
-
# @return [::Vagrant::Action::Builder]
|
20
|
-
def install
|
21
|
-
@install ||= ::Vagrant::Action::Builder.new.tap do |b|
|
22
|
-
b.use Berkshelf::Vagrant::Action::Install
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
# Return the Berkshelf upload middleware stack. When placed in the action chain
|
27
|
-
# this stack will upload cookbooks to a Chef Server if the Chef-Client provisioner
|
28
|
-
# is used. The Chef Server where the cookbooks will be uploaded to is the same Chef
|
29
|
-
# Server used in the Chef-Client provisioner.
|
30
|
-
#
|
31
|
-
# Nothing will be done if the Chef-Solo provisioner is used.
|
32
|
-
#
|
33
|
-
# @return [::Vagrant::Action::Builder]
|
34
|
-
def upload
|
35
|
-
@upload ||= ::Vagrant::Action::Builder.new.tap do |b|
|
36
|
-
b.use Berkshelf::Vagrant::Action::Upload
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
# Return the Berkshelf clean middleware stack. When placed in the action chain
|
41
|
-
# this stack will clean up any temporary directories or files created by the other
|
42
|
-
# middleware stacks.
|
43
|
-
#
|
44
|
-
# @return [::Vagrant::Action::Builder]
|
45
|
-
def clean
|
46
|
-
@clean ||= ::Vagrant::Action::Builder.new.tap do |b|
|
47
|
-
b.use setup
|
48
|
-
b.use Berkshelf::Vagrant::Action::Clean
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
def setup
|
53
|
-
@setup ||= ::Vagrant::Action::Builder.new.tap do |b|
|
54
|
-
b.use ::Vagrant::Action::Builtin::EnvSet, berkshelf: Berkshelf::Vagrant::Env.new
|
55
|
-
b.use Berkshelf::Vagrant::Action::SetUI
|
56
|
-
b.use Berkshelf::Vagrant::Action::LoadShelf
|
57
|
-
b.use Berkshelf::Vagrant::Action::ConfigureChef
|
58
|
-
end
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
module Action
|
4
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
5
|
-
class Clean
|
6
|
-
include Berkshelf::Vagrant::EnvHelpers
|
7
|
-
|
8
|
-
def initialize(app, env)
|
9
|
-
@app = app
|
10
|
-
end
|
11
|
-
|
12
|
-
def call(env)
|
13
|
-
if env[:berkshelf].shelf && File.exist?(env[:berkshelf].shelf)
|
14
|
-
env[:berkshelf].ui.info "Cleaning Vagrant's berkshelf"
|
15
|
-
|
16
|
-
FileUtils.remove_dir(env[:berkshelf].shelf, force: true)
|
17
|
-
FileUtils.rm_f(cache_file)
|
18
|
-
env[:berkshelf].shelf = nil
|
19
|
-
end
|
20
|
-
|
21
|
-
@app.call(env)
|
22
|
-
rescue Berkshelf::BerkshelfError => e
|
23
|
-
raise Berkshelf::VagrantWrapperError.new(e)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
module Action
|
4
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
5
|
-
class ConfigureChef
|
6
|
-
include Berkshelf::Vagrant::EnvHelpers
|
7
|
-
|
8
|
-
def initialize(app, env)
|
9
|
-
@app = app
|
10
|
-
end
|
11
|
-
|
12
|
-
def call(env)
|
13
|
-
unless berkshelf_enabled?(env)
|
14
|
-
return @app.call(env)
|
15
|
-
end
|
16
|
-
|
17
|
-
if chef_solo?(env) && shelf = env[:berkshelf].shelf
|
18
|
-
provisioners(:chef_solo, env).each do |provisioner|
|
19
|
-
provisioner.config.cookbooks_path = provisioner.config.send(:prepare_folders_config, shelf)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
@app.call(env)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
module Action
|
4
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
5
|
-
class Install
|
6
|
-
include Berkshelf::Vagrant::EnvHelpers
|
7
|
-
|
8
|
-
def initialize(app, env)
|
9
|
-
@app = app
|
10
|
-
end
|
11
|
-
|
12
|
-
def call(env)
|
13
|
-
unless berkshelf_enabled?(env)
|
14
|
-
if File.exist?(env[:global_config].berkshelf.berksfile_path)
|
15
|
-
warn_disabled_but_berksfile_exists(env)
|
16
|
-
end
|
17
|
-
|
18
|
-
return @app.call(env)
|
19
|
-
end
|
20
|
-
|
21
|
-
env[:berkshelf].berksfile = Berkshelf::Berksfile.from_file(env[:global_config].berkshelf.berksfile_path)
|
22
|
-
|
23
|
-
if chef_solo?(env)
|
24
|
-
install(env)
|
25
|
-
end
|
26
|
-
|
27
|
-
@app.call(env)
|
28
|
-
rescue Berkshelf::BerkshelfError => e
|
29
|
-
raise Berkshelf::VagrantWrapperError.new(e)
|
30
|
-
end
|
31
|
-
|
32
|
-
private
|
33
|
-
|
34
|
-
def install(env)
|
35
|
-
env[:berkshelf].ui.info "Updating Vagrant's berkshelf: '#{env[:berkshelf].shelf}'"
|
36
|
-
opts = {
|
37
|
-
path: env[:berkshelf].shelf
|
38
|
-
}.merge(env[:global_config].berkshelf.to_hash).symbolize_keys!
|
39
|
-
env[:berkshelf].berksfile.install(opts)
|
40
|
-
end
|
41
|
-
|
42
|
-
def warn_disabled_but_berksfile_exists(env)
|
43
|
-
env[:berkshelf].ui.warn "Berkshelf plugin is disabled but a Berksfile was found at" +
|
44
|
-
" your configured path: #{env[:global_config].berkshelf.berksfile_path}"
|
45
|
-
env[:berkshelf].ui.warn "Enable the Berkshelf plugin by setting 'config.berkshelf.enabled = true'" +
|
46
|
-
" in your vagrant config"
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
module Action
|
4
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
5
|
-
class LoadShelf
|
6
|
-
include Berkshelf::Vagrant::EnvHelpers
|
7
|
-
|
8
|
-
def initialize(app, env)
|
9
|
-
@app = app
|
10
|
-
end
|
11
|
-
|
12
|
-
def call(env)
|
13
|
-
unless berkshelf_enabled?(env)
|
14
|
-
return @app.call(env)
|
15
|
-
end
|
16
|
-
|
17
|
-
shelf = load_shelf
|
18
|
-
|
19
|
-
if shelf.nil?
|
20
|
-
shelf = cache_shelf(Berkshelf::Vagrant.mkshelf)
|
21
|
-
end
|
22
|
-
|
23
|
-
env[:berkshelf].shelf = shelf
|
24
|
-
|
25
|
-
@app.call(env)
|
26
|
-
end
|
27
|
-
|
28
|
-
# @param [String] path
|
29
|
-
#
|
30
|
-
# @return [String]
|
31
|
-
def cache_shelf(path)
|
32
|
-
FileUtils.mkdir_p(File.dirname(path))
|
33
|
-
|
34
|
-
File.open(cache_file, 'w+') do |f|
|
35
|
-
f.write(path)
|
36
|
-
end
|
37
|
-
|
38
|
-
path
|
39
|
-
end
|
40
|
-
|
41
|
-
# @return [String, nil]
|
42
|
-
def load_shelf
|
43
|
-
return nil unless File.exist?(cache_file)
|
44
|
-
|
45
|
-
File.read(cache_file).chomp
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,17 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
module Action
|
4
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
5
|
-
class SetUI
|
6
|
-
def initialize(app, env)
|
7
|
-
@app = app
|
8
|
-
end
|
9
|
-
|
10
|
-
def call(env)
|
11
|
-
Berkshelf.ui = env[:berkshelf].ui
|
12
|
-
@app.call(env)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,44 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
module Action
|
4
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
5
|
-
class Upload
|
6
|
-
include Berkshelf::Vagrant::EnvHelpers
|
7
|
-
|
8
|
-
def initialize(app, env)
|
9
|
-
@app = app
|
10
|
-
end
|
11
|
-
|
12
|
-
def call(env)
|
13
|
-
unless berkshelf_enabled?(env)
|
14
|
-
return @app.call(env)
|
15
|
-
end
|
16
|
-
|
17
|
-
if chef_client?(env)
|
18
|
-
upload(env)
|
19
|
-
end
|
20
|
-
|
21
|
-
@app.call(env)
|
22
|
-
rescue Berkshelf::BerkshelfError => e
|
23
|
-
raise Berkshelf::VagrantWrapperError.new(e)
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def upload(env)
|
29
|
-
provisioners(:chef_client, env).each do |provisioner|
|
30
|
-
env[:berkshelf].ui.info "Uploading cookbooks to '#{provisioner.config.chef_server_url}'"
|
31
|
-
env[:berkshelf].berksfile.upload(
|
32
|
-
server_url: provisioner.config.chef_server_url,
|
33
|
-
client_name: env[:berkshelf].config.chef.node_name,
|
34
|
-
client_key: env[:berkshelf].config.chef.client_key,
|
35
|
-
ssl: {
|
36
|
-
verify: env[:berkshelf].config.ssl.verify
|
37
|
-
}
|
38
|
-
)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
@@ -1,91 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
4
|
-
class Config < ::Vagrant.plugin("2", :config)
|
5
|
-
# @return [String]
|
6
|
-
# path to the Berksfile to use with Vagrant
|
7
|
-
attr_reader :berksfile_path
|
8
|
-
|
9
|
-
# @return [Boolean]
|
10
|
-
# disable of use Berks in Vagrant
|
11
|
-
attr_accessor :enabled
|
12
|
-
|
13
|
-
# @return [Array<Symbol>]
|
14
|
-
# only cookbooks in these groups will be installed and copied to
|
15
|
-
# Vagrant's shelf
|
16
|
-
attr_accessor :only
|
17
|
-
|
18
|
-
# @return [Array<Symbol>]
|
19
|
-
# cookbooks in all other groups except for these will be installed
|
20
|
-
# and copied to Vagrant's shelf
|
21
|
-
attr_accessor :except
|
22
|
-
|
23
|
-
# @return [String]
|
24
|
-
# the Chef node name (client name) to use to authenticate with the remote
|
25
|
-
# chef server to upload cookbooks when using the chef client provisioner
|
26
|
-
attr_accessor :node_name
|
27
|
-
|
28
|
-
# @return [String]
|
29
|
-
# a filepath to a chef client key to use to authenticate with the remote
|
30
|
-
# chef server to upload cookbooks when using the chef client provisioner
|
31
|
-
attr_accessor :client_key
|
32
|
-
|
33
|
-
def initialize
|
34
|
-
super
|
35
|
-
|
36
|
-
@berksfile_path = File.join(Dir.pwd, Berkshelf::DEFAULT_FILENAME)
|
37
|
-
@except = Array.new
|
38
|
-
@only = Array.new
|
39
|
-
@node_name = Berkshelf::Config.instance.chef.node_name
|
40
|
-
@client_key = Berkshelf::Config.instance.chef.client_key
|
41
|
-
@enabled = false
|
42
|
-
end
|
43
|
-
|
44
|
-
# @param [String] value
|
45
|
-
def berksfile_path=(value)
|
46
|
-
@berksfile_path = File.expand_path(value)
|
47
|
-
end
|
48
|
-
|
49
|
-
# @param [String] value
|
50
|
-
def client_key=(value)
|
51
|
-
@client_key = File.expand_path(value)
|
52
|
-
end
|
53
|
-
|
54
|
-
alias_method :to_hash, :instance_variables_hash
|
55
|
-
|
56
|
-
def validate(machine)
|
57
|
-
errors = Array.new
|
58
|
-
|
59
|
-
unless [TrueClass, FalseClass].include?(enabled.class)
|
60
|
-
errors << "A value for berkshelf.enabled can be true or false."
|
61
|
-
end
|
62
|
-
|
63
|
-
if enabled
|
64
|
-
if machine.config.berkshelf.berksfile_path.nil?
|
65
|
-
errors << "berkshelf.berksfile_path cannot be nil."
|
66
|
-
end
|
67
|
-
|
68
|
-
unless File.exist?(machine.config.berkshelf.berksfile_path)
|
69
|
-
errors << "No Berskfile was found at #{machine.config.berkshelf.berksfile_path}."
|
70
|
-
end
|
71
|
-
|
72
|
-
if !except.empty? && !only.empty?
|
73
|
-
errors << "A value for berkshelf.empty and berkshelf.only cannot both be defined."
|
74
|
-
end
|
75
|
-
|
76
|
-
if machine.env.config_global.vm.provisioners.any? { |prov| prov.name == :chef_client }
|
77
|
-
if machine.config.berkshelf.node_name.nil?
|
78
|
-
errors << "A configuration must be set for chef.node_name when using the chef_client provisioner. Run 'berks configure' or edit your configuration."
|
79
|
-
end
|
80
|
-
|
81
|
-
if machine.config.berkshelf.client_key.nil?
|
82
|
-
errors << "A configuration must be set for chef.client_key when using the chef_client provisioner. Run 'berks configure' or edit your configuration."
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
{ "berkshelf configuration" => errors }
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
end
|
@@ -1,26 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
4
|
-
#
|
5
|
-
# Environment data to build up and persist through the middleware chain
|
6
|
-
class Env
|
7
|
-
# @return [Vagrant::UI::Colored]
|
8
|
-
attr_accessor :ui
|
9
|
-
# @return [Berkshelf::Berksfile]
|
10
|
-
attr_accessor :berksfile
|
11
|
-
# @return [String]
|
12
|
-
attr_accessor :shelf
|
13
|
-
# @return [Berkshelf::Config]
|
14
|
-
attr_accessor :config
|
15
|
-
|
16
|
-
def initialize
|
17
|
-
if Gem::Version.new(::Vagrant::VERSION) >= Gem::Version.new("1.2")
|
18
|
-
@ui = ::Vagrant::UI::Colored.new.scope('Berkshelf')
|
19
|
-
else
|
20
|
-
@ui = ::Vagrant::UI::Colored.new('Berkshelf')
|
21
|
-
end
|
22
|
-
@config = Berkshelf::Config.instance
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
4
|
-
#
|
5
|
-
# A module of common helper functions that can be mixed into Berkshelf::Vagrant actions
|
6
|
-
module EnvHelpers
|
7
|
-
# A file to persist berkshelf-vagrant specific information in between
|
8
|
-
# Vagrant runs.
|
9
|
-
#
|
10
|
-
# @return [String]
|
11
|
-
def cache_file
|
12
|
-
File.join('.vagrant', 'berkshelf')
|
13
|
-
end
|
14
|
-
|
15
|
-
# Filter all of the provisioners of the given vagrant environment with the given name
|
16
|
-
#
|
17
|
-
# @param [Symbol] name
|
18
|
-
# name of provisioner to filter
|
19
|
-
# @param [Vagrant::Environment, Hash] env
|
20
|
-
# environment to inspect
|
21
|
-
#
|
22
|
-
# @return [Array]
|
23
|
-
def provisioners(name, env)
|
24
|
-
env[:machine].config.vm.provisioners.select { |prov| prov.name == name }
|
25
|
-
end
|
26
|
-
|
27
|
-
# Determine if the given vagrant environment contains a chef_solo provisioner
|
28
|
-
#
|
29
|
-
# @param [Vagrant::Environment] env
|
30
|
-
#
|
31
|
-
# @return [Boolean]
|
32
|
-
def chef_solo?(env)
|
33
|
-
provisioners(:chef_solo, env).any?
|
34
|
-
end
|
35
|
-
|
36
|
-
# Determine if the given vagrant environment contains a chef_client provisioner
|
37
|
-
#
|
38
|
-
# @param [Vagrant::Environment] env
|
39
|
-
#
|
40
|
-
# @return [Boolean]
|
41
|
-
def chef_client?(env)
|
42
|
-
provisioners(:chef_client, env).any?
|
43
|
-
end
|
44
|
-
|
45
|
-
# Determine if the Berkshelf plugin should be run for the given environment
|
46
|
-
#
|
47
|
-
# @param [Vagrant::Environment] env
|
48
|
-
#
|
49
|
-
# @return [Boolean]
|
50
|
-
def berkshelf_enabled?(env)
|
51
|
-
env[:global_config].berkshelf.enabled
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
@@ -1,33 +0,0 @@
|
|
1
|
-
require 'vagrant/errors'
|
2
|
-
|
3
|
-
module Berkshelf
|
4
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
5
|
-
#
|
6
|
-
# A wrapper for a BerkshelfError for Vagrant. All Berkshelf exceptions should be
|
7
|
-
# wrapped in this proxy object so they are properly handled when Vagrant encounters
|
8
|
-
# an exception.
|
9
|
-
#
|
10
|
-
# @example wrapping an error encountered within the Vagrant plugin
|
11
|
-
# rescue BerkshelfError => e
|
12
|
-
# VagrantWrapperError.new(e)
|
13
|
-
# end
|
14
|
-
class VagrantWrapperError < ::Vagrant::Errors::VagrantError
|
15
|
-
# @param [BerkshelfError]
|
16
|
-
attr_reader :original
|
17
|
-
|
18
|
-
# @param [BerkshelfError] original
|
19
|
-
def initialize(original)
|
20
|
-
@original = original
|
21
|
-
end
|
22
|
-
|
23
|
-
def to_s
|
24
|
-
"#{original.class}: #{original.to_s}"
|
25
|
-
end
|
26
|
-
|
27
|
-
private
|
28
|
-
|
29
|
-
def method_missing(fun, *args, &block)
|
30
|
-
original.send(fun, *args, &block)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module Berkshelf
|
2
|
-
module Vagrant
|
3
|
-
# @author Jamie Winsor <reset@riotgames.com>
|
4
|
-
class Plugin < ::Vagrant.plugin("2")
|
5
|
-
class << self
|
6
|
-
def provision(hook)
|
7
|
-
hook.after(::Vagrant::Action::Builtin::Provision, Berkshelf::Vagrant::Action.upload)
|
8
|
-
hook.after(::Vagrant::Action::Builtin::Provision, Berkshelf::Vagrant::Action.install)
|
9
|
-
hook.before(::Vagrant::Action::Builtin::ConfigValidate, Berkshelf::Vagrant::Action.setup)
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
name "berkshelf"
|
14
|
-
description <<-DESC
|
15
|
-
Automatically make available cookbooks to virtual machines provisioned by Chef Solo
|
16
|
-
or Chef Client using Berkshelf.
|
17
|
-
DESC
|
18
|
-
|
19
|
-
action_hook(:berkshelf_provision, :machine_action_up, &method(:provision))
|
20
|
-
action_hook(:berkshelf_provision, :machine_action_provision, &method(:provision))
|
21
|
-
|
22
|
-
action_hook(:berkshelf_cleanup, :machine_action_destroy) do |hook|
|
23
|
-
# @todo this should be appended to the middleware stack instead of hooked in after the
|
24
|
-
# Virtualbox specific destroy step but there is a bug in Vagrant (1.1.0) which
|
25
|
-
# causes appended middleware to run multiple times.
|
26
|
-
hook.after(VagrantPlugins::ProviderVirtualBox::Action::DestroyUnusedNetworkInterfaces, Berkshelf::Vagrant::Action.clean)
|
27
|
-
end
|
28
|
-
|
29
|
-
config(:berkshelf) do
|
30
|
-
Berkshelf::Vagrant::Config
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,22 +0,0 @@
|
|
1
|
-
require 'rubygems'
|
2
|
-
require 'bundler/setup'
|
3
|
-
require 'spork'
|
4
|
-
|
5
|
-
Spork.prefork do
|
6
|
-
APP_ROOT = File.expand_path('../../', __FILE__)
|
7
|
-
ENV["BERKSHELF_PATH"] = File.join(APP_ROOT, 'spec', 'tmp', 'berkshelf')
|
8
|
-
|
9
|
-
require 'rspec'
|
10
|
-
|
11
|
-
RSpec.configure do |config|
|
12
|
-
config.treat_symbols_as_metadata_keys_with_true_values = true
|
13
|
-
config.run_all_when_everything_filtered = true
|
14
|
-
config.filter_run focus: true
|
15
|
-
|
16
|
-
config.order = 'random'
|
17
|
-
end
|
18
|
-
end
|
19
|
-
|
20
|
-
Spork.each_run do
|
21
|
-
require 'berkshelf/vagrant'
|
22
|
-
end
|
@@ -1,81 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Berkshelf::Vagrant::Config do
|
4
|
-
let(:unset_value) { described_class::UNSET_VALUE }
|
5
|
-
let(:config) { described_class.new }
|
6
|
-
|
7
|
-
it "sets a path to a Berksfile in the current working directory for berksfile_path" do
|
8
|
-
subject.berksfile_path.should eql(File.join(Dir.pwd, "Berksfile"))
|
9
|
-
end
|
10
|
-
|
11
|
-
it "set the value of disabled to a false" do
|
12
|
-
config.enabled.should be false
|
13
|
-
end
|
14
|
-
|
15
|
-
it "sets the value of only to an empty array" do
|
16
|
-
subject.only.should be_a(Array)
|
17
|
-
subject.only.should be_empty
|
18
|
-
end
|
19
|
-
|
20
|
-
it "sets the value of except to an empty array" do
|
21
|
-
subject.except.should be_a(Array)
|
22
|
-
subject.except.should be_empty
|
23
|
-
end
|
24
|
-
|
25
|
-
it "sets the value of node_name to the value in the Berkshelf::Config.instance" do
|
26
|
-
subject.node_name.should eql(Berkshelf::Config.instance.chef.node_name)
|
27
|
-
end
|
28
|
-
|
29
|
-
it "sets the value of client_key to the value in Berkshelf::Config.instance" do
|
30
|
-
subject.client_key.should eql(Berkshelf::Config.instance.chef.client_key)
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "#validate" do
|
34
|
-
let(:env) { double('env') }
|
35
|
-
let(:config) { double('config', berkshelf: subject) }
|
36
|
-
let(:machine) { double('machine', config: config, env: env) }
|
37
|
-
|
38
|
-
before do
|
39
|
-
subject.finalize!
|
40
|
-
end
|
41
|
-
|
42
|
-
context "when the plugin is enabled" do
|
43
|
-
before(:each) do
|
44
|
-
subject.stub(enabled: true)
|
45
|
-
env.stub_chain(:config_global, :vm, :provisioners, :any?)
|
46
|
-
end
|
47
|
-
|
48
|
-
let(:result) { subject.validate(machine) }
|
49
|
-
|
50
|
-
it "returns a Hash with a 'berkshelf configuration' key" do
|
51
|
-
result.should be_a(Hash)
|
52
|
-
result.should have_key("berkshelf configuration")
|
53
|
-
end
|
54
|
-
|
55
|
-
context "when all validations pass" do
|
56
|
-
before(:each) do
|
57
|
-
File.should_receive(:exist?).with(subject.berksfile_path).and_return(true)
|
58
|
-
end
|
59
|
-
|
60
|
-
it "contains an empty Array for the 'berkshelf configuration' key" do
|
61
|
-
result["berkshelf configuration"].should be_a(Array)
|
62
|
-
result["berkshelf configuration"].should be_empty
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
context "when the plugin is disabled" do
|
68
|
-
let(:machine) { double('machine') }
|
69
|
-
|
70
|
-
before do
|
71
|
-
subject.stub(enabled: false)
|
72
|
-
end
|
73
|
-
|
74
|
-
it "does not perform any validations" do
|
75
|
-
machine.should_not_receive(:config)
|
76
|
-
|
77
|
-
subject.validate(machine)
|
78
|
-
end
|
79
|
-
end
|
80
|
-
end
|
81
|
-
end
|
@@ -1,12 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Berkshelf::VagrantWrapperError do
|
4
|
-
subject { described_class }
|
5
|
-
|
6
|
-
it "proxies messages to the original exception" do
|
7
|
-
original = double('original_error')
|
8
|
-
original.should_receive(:a_message)
|
9
|
-
|
10
|
-
subject.new(original).a_message
|
11
|
-
end
|
12
|
-
end
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Berkshelf::Vagrant do
|
4
|
-
describe "ClassMethods" do
|
5
|
-
describe "::shelf_path" do
|
6
|
-
it "returns a String" do
|
7
|
-
subject.shelf_path.should be_a(String)
|
8
|
-
end
|
9
|
-
|
10
|
-
it "is a pathname including the berkshelf_path" do
|
11
|
-
subject.shelf_path.should include(Berkshelf.berkshelf_path)
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
describe "::mkshelf" do
|
16
|
-
it "returns a String" do
|
17
|
-
subject.mkshelf.should be_a(String)
|
18
|
-
end
|
19
|
-
|
20
|
-
it "is a pathname including the shelf_path" do
|
21
|
-
subject.mkshelf.should include(subject.shelf_path)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|