vagrant-r10k 0.2.0 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +3 -2
- data/.pullreview.yml +4 -0
- data/.rspec +5 -0
- data/.ruby-version +1 -1
- data/.travis.yml +3 -1
- data/CHANGES.md +26 -0
- data/Gemfile +7 -2
- data/Gemfile.lock +181 -0
- data/README.md +122 -7
- data/Rakefile +111 -0
- data/lib/vagrant-r10k/action/base.rb +44 -0
- data/lib/vagrant-r10k/action/deploy.rb +91 -0
- data/lib/vagrant-r10k/action/validate.rb +46 -0
- data/lib/vagrant-r10k/config.rb +13 -4
- data/lib/vagrant-r10k/helpers.rb +174 -0
- data/lib/vagrant-r10k/plugin.rb +11 -5
- data/lib/vagrant-r10k/version.rb +2 -1
- data/spec/acceptance/skeletons/correct/Vagrantfile +21 -0
- data/spec/acceptance/skeletons/correct/gitcheck.sh +20 -0
- data/spec/acceptance/skeletons/correct/puppet/NOTmodules/.gitkeep +0 -0
- data/spec/acceptance/skeletons/correct/puppet/Puppetfile +12 -0
- data/spec/acceptance/skeletons/correct/puppet/manifests/default.pp +1 -0
- data/spec/acceptance/skeletons/correct/puppet/modules/.gitkeep +0 -0
- data/spec/acceptance/skeletons/could_not_resolve_host/Vagrantfile +21 -0
- data/spec/acceptance/skeletons/could_not_resolve_host/gitcheck.sh +20 -0
- data/spec/acceptance/skeletons/could_not_resolve_host/puppet/NOTmodules/.gitkeep +0 -0
- data/spec/acceptance/skeletons/could_not_resolve_host/puppet/Puppetfile +7 -0
- data/spec/acceptance/skeletons/could_not_resolve_host/puppet/manifests/default.pp +1 -0
- data/spec/acceptance/skeletons/could_not_resolve_host/puppet/modules/.gitkeep +0 -0
- data/spec/acceptance/skeletons/different_mod_path/Vagrantfile +19 -0
- data/spec/acceptance/skeletons/different_mod_path/gitcheck.sh +20 -0
- data/spec/acceptance/skeletons/different_mod_path/puppet/NOTmodules/.gitkeep +0 -0
- data/spec/acceptance/skeletons/different_mod_path/puppet/Puppetfile +12 -0
- data/spec/acceptance/skeletons/different_mod_path/puppet/manifests/default.pp +1 -0
- data/spec/acceptance/skeletons/different_mod_path/puppet/modules/.gitkeep +0 -0
- data/spec/acceptance/skeletons/no_mod_path/Vagrantfile +17 -0
- data/spec/acceptance/skeletons/no_mod_path/gitcheck.sh +20 -0
- data/spec/acceptance/skeletons/no_mod_path/puppet/NOTmodules/.gitkeep +0 -0
- data/spec/acceptance/skeletons/no_mod_path/puppet/Puppetfile +12 -0
- data/spec/acceptance/skeletons/no_mod_path/puppet/manifests/default.pp +1 -0
- data/spec/acceptance/skeletons/no_mod_path/puppet/modules/.gitkeep +0 -0
- data/spec/acceptance/skeletons/no_puppet_dir/Vagrantfile +18 -0
- data/spec/acceptance/skeletons/no_puppet_dir/gitcheck.sh +20 -0
- data/spec/acceptance/skeletons/no_vagrant_r10k/Vagrantfile +14 -0
- data/spec/acceptance/skeletons/no_vagrant_r10k/gitcheck.sh +20 -0
- data/spec/acceptance/skeletons/no_vagrant_r10k/puppet/NOTmodules/.gitkeep +0 -0
- data/spec/acceptance/skeletons/no_vagrant_r10k/puppet/Puppetfile +12 -0
- data/spec/acceptance/skeletons/no_vagrant_r10k/puppet/manifests/default.pp +1 -0
- data/spec/acceptance/skeletons/no_vagrant_r10k/puppet/modules/.gitkeep +0 -0
- data/spec/acceptance/skeletons/puppetfile_syntax_error/Vagrantfile +18 -0
- data/spec/acceptance/skeletons/puppetfile_syntax_error/gitcheck.sh +20 -0
- data/spec/acceptance/skeletons/puppetfile_syntax_error/puppet/Puppetfile +1 -0
- data/spec/acceptance/skeletons/puppetfile_syntax_error/puppet/manifests/default.pp +1 -0
- data/spec/acceptance/skeletons/puppetfile_syntax_error/puppet/modules/.gitkeep +0 -0
- data/spec/acceptance/vagrant-r10k/vagrant-r10k_spec.rb +255 -0
- data/spec/spec_helper.rb +10 -7
- data/spec/unit/action_base_spec.rb +57 -0
- data/spec/unit/action_deploy_spec.rb +550 -0
- data/spec/unit/action_validate_spec.rb +240 -0
- data/spec/unit/helpers_spec.rb +307 -0
- data/spec/unit/plugin_spec.rb +49 -0
- data/support/testrunner.py +189 -0
- data/vagrant-r10k.gemspec +1 -1
- data/vagrant-spec.config.rb +18 -0
- metadata +111 -19
- data/lib/vagrant-r10k/modulegetter.rb +0 -145
- data/spec/unit/modulegetter_spec.rb +0 -369
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8d10d813ebfeaaab6624535df85adf644ef33920
|
4
|
+
data.tar.gz: 18b0c7240ad342c182695b215b2eedd83a399437
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8a590b625431419a985732cb0950339d3ac217dc6294a30696396685f61963bd62291b2ef81905414763f7f6fe1b39d15ab694d57d03e93936c15584d628867e
|
7
|
+
data.tar.gz: d57a257ed713e38dd6dcb6e722746197b7829e578a5a9c1f70757353dda7d2e262252077d6e86a769ef309c67ec5c77f2391dda80b9265c85c638cbfe840465c
|
data/.gitignore
CHANGED
data/.pullreview.yml
ADDED
data/.rspec
ADDED
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby-2.
|
1
|
+
ruby-2.0.0
|
data/.travis.yml
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
---
|
2
|
+
sudo: false
|
2
3
|
language: ruby
|
3
4
|
before_install:
|
4
5
|
- gem install bundler --version $BUNDLER_VERSION
|
5
|
-
install: bundle _${BUNDLER_VERSION}_ install
|
6
|
+
install: bundle _${BUNDLER_VERSION}_ install --retry 5
|
6
7
|
script: bundle _${BUNDLER_VERSION}_ exec rspec --color --format documentation
|
7
8
|
notifications:
|
8
9
|
email: true
|
@@ -12,6 +13,7 @@ env:
|
|
12
13
|
global:
|
13
14
|
- NOKOGIRI_USE_SYSTEM_LIBRARIES=true
|
14
15
|
matrix:
|
16
|
+
- VAGRANT_VERSION=1.5.0 BUNDLER_VERSION=1.5.2
|
15
17
|
- VAGRANT_VERSION=1.6.5 BUNDLER_VERSION=1.6.9
|
16
18
|
- VAGRANT_VERSION=1.7.0 BUNDLER_VERSION=1.7.9
|
17
19
|
- BUNDLER_VERSION=1.7.9
|
data/CHANGES.md
CHANGED
@@ -1,5 +1,31 @@
|
|
1
1
|
# vagrant-r10k changelog
|
2
2
|
|
3
|
+
## master (unreleased)
|
4
|
+
|
5
|
+
## 0.3.0 2015-09-04 Jason Antman <jason@jasonantman.com>
|
6
|
+
|
7
|
+
* [#9](https://github.com/jantman/vagrant-r10k/issues/9) major refactor to separate config validation and provisioning, and prevent multiple provisioning runs
|
8
|
+
* [#15](https://github.com/jantman/vagrant-r10k/issues/17) document how to install Forge modules
|
9
|
+
* [#16](https://github.com/jantman/vagrant-r10k/issues/16) more helpful error message if r10k deploy fails with 'Could not resolve host'
|
10
|
+
* Change gemspec from ``bundler ~> 1.6`` to ``bundler ~> 1.5`` for testing Vagrant 1.5.0
|
11
|
+
* Updates to ``README.md``
|
12
|
+
* Testing changes
|
13
|
+
* [#12](https://github.com/jantman/vagrant-r10k/issues/12) [vagrant-spec](https://github.com/mitchellh/vagrant-spec/)-based acceptance tests for VirtualBox
|
14
|
+
* [#20](https://github.com/jantman/vagrant-r10k/issues/20) vmware-workstation spec tests are broken and disabled
|
15
|
+
* Major overhaul to spec and acceptance tests
|
16
|
+
* Ignore ``spec/`` in coverage
|
17
|
+
* Add increased coverage of ``plugin.rb``
|
18
|
+
* Change to documentation output for rspec
|
19
|
+
* Don't gitignore ``Gemfile.lock``
|
20
|
+
* Randomize test execution order
|
21
|
+
* Add JUnit XML results output
|
22
|
+
* Ignore some un-testable code from coverage analysis
|
23
|
+
* Add Travis testing for Vagrant 1.5.0
|
24
|
+
* Add ``--retry`` to ``bundle install`` to fix Travis timeout errors
|
25
|
+
* Downgrade bundler from 1.6 to 1.5 to work with older testing versions
|
26
|
+
* Bump bundled Vagrant version from 1.7.2 to 1.7.4
|
27
|
+
* [#22](https://github.com/jantman/vagrant-r10k/issues/22) enable pullreview.com code analysis and comments, and make some recommended changes
|
28
|
+
|
3
29
|
## 0.2.0 2015-01-10 Jason Antman <jason@jasonantman.com>
|
4
30
|
|
5
31
|
* Add unit tests for modulegetter and config.
|
data/Gemfile
CHANGED
@@ -1,4 +1,6 @@
|
|
1
1
|
source 'https://rubygems.org'
|
2
|
+
# this next line is needed for vagrant-vmware-workstation for acceptance testing
|
3
|
+
#source "http://gems.hashicorp.com"
|
2
4
|
|
3
5
|
group :development do
|
4
6
|
if ENV.has_key?('VAGRANT_VERSION')
|
@@ -6,12 +8,15 @@ group :development do
|
|
6
8
|
else
|
7
9
|
gem "vagrant", git: "https://github.com/mitchellh/vagrant.git", branch: 'master'
|
8
10
|
end
|
9
|
-
#
|
10
|
-
gem 'vagrant-spec', :github => '
|
11
|
+
# pinned to branch for https://github.com/mitchellh/vagrant-spec/pull/16
|
12
|
+
gem 'vagrant-spec', :github => 'jantman/vagrant-spec', :ref => 'junit_and_env'
|
11
13
|
gem 'simplecov', :require => false
|
12
14
|
gem 'codecov', :require => false
|
15
|
+
gem "rspec_junit_formatter", :require => false
|
16
|
+
gem 'rspec-matcher-num-times', git: "https://github.com/jantman/rspec-matcher-num-times.git", branch: 'rspec2'
|
13
17
|
end
|
14
18
|
|
15
19
|
group :plugins do
|
16
20
|
gemspec
|
21
|
+
#gem 'vagrant-vmware-workstation', '3.2.8'
|
17
22
|
end
|
data/Gemfile.lock
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
GIT
|
2
|
+
remote: git://github.com/jantman/vagrant-spec.git
|
3
|
+
revision: d85c6fd2887358b7adc145cf89a4bfb420f7f714
|
4
|
+
ref: junit_and_env
|
5
|
+
specs:
|
6
|
+
vagrant-spec (0.0.1)
|
7
|
+
childprocess (~> 0.5.0)
|
8
|
+
log4r (~> 1.1.9)
|
9
|
+
rspec (~> 2.14)
|
10
|
+
thor (~> 0.18.1)
|
11
|
+
|
12
|
+
GIT
|
13
|
+
remote: https://github.com/jantman/rspec-matcher-num-times.git
|
14
|
+
revision: a34cf9b95ff94512d4c515056ef25a73dbf8d544
|
15
|
+
branch: rspec2
|
16
|
+
specs:
|
17
|
+
rspec-matcher-num-times (0.0.1)
|
18
|
+
rspec (>= 2.0)
|
19
|
+
|
20
|
+
GIT
|
21
|
+
remote: https://github.com/mitchellh/vagrant.git
|
22
|
+
revision: cd25b820c4425c77b833550e1f1d90f9a7c8be14
|
23
|
+
branch: master
|
24
|
+
specs:
|
25
|
+
vagrant (1.7.4)
|
26
|
+
bundler (>= 1.5.2, <= 1.10.5)
|
27
|
+
childprocess (~> 0.5.0)
|
28
|
+
erubis (~> 2.7.0)
|
29
|
+
hashicorp-checkpoint (~> 0.1.1)
|
30
|
+
i18n (>= 0.6.0, <= 0.8.0)
|
31
|
+
listen (~> 3.0.2)
|
32
|
+
log4r (~> 1.1.9, < 1.1.11)
|
33
|
+
net-scp (~> 1.1.0)
|
34
|
+
net-sftp (~> 2.1)
|
35
|
+
net-ssh (>= 2.6.6, < 2.10.0)
|
36
|
+
nokogiri (= 1.6.3.1)
|
37
|
+
rb-kqueue (~> 0.2.0)
|
38
|
+
rest-client (>= 1.6.0, < 2.0)
|
39
|
+
wdm (~> 0.1.0)
|
40
|
+
winrm (~> 1.3)
|
41
|
+
winrm-fs (~> 0.2.0)
|
42
|
+
|
43
|
+
PATH
|
44
|
+
remote: .
|
45
|
+
specs:
|
46
|
+
vagrant-r10k (0.3.0)
|
47
|
+
r10k (~> 1.2.1)
|
48
|
+
|
49
|
+
GEM
|
50
|
+
remote: https://rubygems.org/
|
51
|
+
specs:
|
52
|
+
builder (3.2.2)
|
53
|
+
childprocess (0.5.6)
|
54
|
+
ffi (~> 1.0, >= 1.0.11)
|
55
|
+
codecov (0.0.4)
|
56
|
+
json
|
57
|
+
simplecov
|
58
|
+
url
|
59
|
+
colored (1.2)
|
60
|
+
cri (2.5.0)
|
61
|
+
colored (~> 1.2)
|
62
|
+
diff-lcs (1.2.5)
|
63
|
+
docile (1.1.5)
|
64
|
+
domain_name (0.5.24)
|
65
|
+
unf (>= 0.0.5, < 1.0.0)
|
66
|
+
erubis (2.7.0)
|
67
|
+
faraday (0.8.9)
|
68
|
+
multipart-post (~> 1.2.0)
|
69
|
+
faraday_middleware (0.9.1)
|
70
|
+
faraday (>= 0.7.4, < 0.10)
|
71
|
+
faraday_middleware-multi_json (0.0.6)
|
72
|
+
faraday_middleware
|
73
|
+
multi_json
|
74
|
+
ffi (1.9.10)
|
75
|
+
gssapi (1.2.0)
|
76
|
+
ffi (>= 1.0.1)
|
77
|
+
gyoku (1.3.1)
|
78
|
+
builder (>= 2.1.2)
|
79
|
+
hashicorp-checkpoint (0.1.4)
|
80
|
+
http-cookie (1.0.2)
|
81
|
+
domain_name (~> 0.5)
|
82
|
+
httpclient (2.6.0.1)
|
83
|
+
i18n (0.7.0)
|
84
|
+
json (1.8.2)
|
85
|
+
json_pure (1.8.1)
|
86
|
+
listen (3.0.3)
|
87
|
+
rb-fsevent (>= 0.9.3)
|
88
|
+
rb-inotify (>= 0.9)
|
89
|
+
little-plugger (1.1.3)
|
90
|
+
log4r (1.1.10)
|
91
|
+
logging (1.8.2)
|
92
|
+
little-plugger (>= 1.1.3)
|
93
|
+
multi_json (>= 1.8.4)
|
94
|
+
mime-types (2.6.1)
|
95
|
+
mini_portile (0.6.0)
|
96
|
+
multi_json (1.8.4)
|
97
|
+
multipart-post (1.2.0)
|
98
|
+
net-scp (1.1.2)
|
99
|
+
net-ssh (>= 2.6.5)
|
100
|
+
net-sftp (2.1.2)
|
101
|
+
net-ssh (>= 2.6.5)
|
102
|
+
net-ssh (2.9.2)
|
103
|
+
netrc (0.10.3)
|
104
|
+
nokogiri (1.6.3.1)
|
105
|
+
mini_portile (= 0.6.0)
|
106
|
+
nori (2.6.0)
|
107
|
+
r10k (1.2.1)
|
108
|
+
colored (>= 1.2)
|
109
|
+
cri (~> 2.5.0)
|
110
|
+
faraday (~> 0.8.8)
|
111
|
+
faraday_middleware (~> 0.9.0)
|
112
|
+
faraday_middleware-multi_json (~> 0.0.5)
|
113
|
+
json_pure (~> 1.8.1)
|
114
|
+
log4r (>= 1.1.10)
|
115
|
+
multi_json (~> 1.8.2)
|
116
|
+
systemu (~> 2.5.2)
|
117
|
+
rake (10.4.2)
|
118
|
+
rb-fsevent (0.9.5)
|
119
|
+
rb-inotify (0.9.5)
|
120
|
+
ffi (>= 0.5.0)
|
121
|
+
rb-kqueue (0.2.4)
|
122
|
+
ffi (>= 0.5.0)
|
123
|
+
rest-client (1.8.0)
|
124
|
+
http-cookie (>= 1.0.2, < 2.0)
|
125
|
+
mime-types (>= 1.16, < 3.0)
|
126
|
+
netrc (~> 0.7)
|
127
|
+
rspec (2.99.0)
|
128
|
+
rspec-core (~> 2.99.0)
|
129
|
+
rspec-expectations (~> 2.99.0)
|
130
|
+
rspec-mocks (~> 2.99.0)
|
131
|
+
rspec-core (2.99.2)
|
132
|
+
rspec-expectations (2.99.2)
|
133
|
+
diff-lcs (>= 1.1.3, < 2.0)
|
134
|
+
rspec-mocks (2.99.2)
|
135
|
+
rspec_junit_formatter (0.2.0)
|
136
|
+
builder (< 4)
|
137
|
+
rspec (>= 2, < 4)
|
138
|
+
rspec-core (!= 2.12.0)
|
139
|
+
rubyntlm (0.4.0)
|
140
|
+
rubyzip (1.1.7)
|
141
|
+
simplecov (0.9.2)
|
142
|
+
docile (~> 1.1.0)
|
143
|
+
multi_json (~> 1.0)
|
144
|
+
simplecov-html (~> 0.9.0)
|
145
|
+
simplecov-html (0.9.0)
|
146
|
+
systemu (2.5.2)
|
147
|
+
thor (0.18.1)
|
148
|
+
unf (0.1.4)
|
149
|
+
unf_ext
|
150
|
+
unf_ext (0.0.7.1)
|
151
|
+
url (0.3.2)
|
152
|
+
uuidtools (2.1.5)
|
153
|
+
wdm (0.1.1)
|
154
|
+
winrm (1.3.3)
|
155
|
+
builder (>= 2.1.2)
|
156
|
+
gssapi (~> 1.2)
|
157
|
+
gyoku (~> 1.0)
|
158
|
+
httpclient (~> 2.2, >= 2.2.0.2)
|
159
|
+
logging (~> 1.6, >= 1.6.1)
|
160
|
+
nori (~> 2.0)
|
161
|
+
rubyntlm (~> 0.4.0)
|
162
|
+
uuidtools (~> 2.1.2)
|
163
|
+
winrm-fs (0.2.2)
|
164
|
+
erubis (~> 2.7)
|
165
|
+
logging (~> 1.6, >= 1.6.1)
|
166
|
+
rubyzip (~> 1.1)
|
167
|
+
winrm (~> 1.3.0)
|
168
|
+
|
169
|
+
PLATFORMS
|
170
|
+
ruby
|
171
|
+
|
172
|
+
DEPENDENCIES
|
173
|
+
bundler (~> 1.5)
|
174
|
+
codecov
|
175
|
+
rake
|
176
|
+
rspec-matcher-num-times!
|
177
|
+
rspec_junit_formatter
|
178
|
+
simplecov
|
179
|
+
vagrant!
|
180
|
+
vagrant-r10k!
|
181
|
+
vagrant-spec!
|
data/README.md
CHANGED
@@ -1,5 +1,11 @@
|
|
1
1
|
# Vagrant::R10k
|
2
2
|
|
3
|
+
[![Build Status](https://travis-ci.org/jantman/vagrant-r10k.svg?branch=master)](https://travis-ci.org/jantman/vagrant-r10k)
|
4
|
+
[![Code Coverage](https://codecov.io/github/jantman/vagrant-r10k/coverage.svg?branch=master)](https://codecov.io/github/jantman/vagrant-r10k?branch=master)
|
5
|
+
[![Code Climate](https://codeclimate.com/github/jantman/vagrant-r10k/badges/gpa.svg)](https://codeclimate.com/github/jantman/vagrant-r10k)
|
6
|
+
[![Gem Version](https://img.shields.io/gem/v/vagrant-r10k.svg)](https://rubygems.org/gems/vagrant-r10k)
|
7
|
+
[![Total Downloads](https://img.shields.io/gem/dt/vagrant-r10k.svg)](https://rubygems.org/gems/vagrant-r10k)
|
8
|
+
[![Github Issues](https://img.shields.io/github/issues/jantman/vagrant-r10k.svg)](https://github.com/jantman/vagrant-r10k/issues)
|
3
9
|
[![Project Status: Active - The project has reached a stable, usable state and is being actively developed.](http://www.repostatus.org/badges/0.1.0/active.svg)](http://www.repostatus.org/#active)
|
4
10
|
|
5
11
|
vagrant-r10k is a [Vagrant](http://www.vagrantup.com/) 1.2+ middleware plugin to allow you to have just a Puppetfile and
|
@@ -56,7 +62,39 @@ The configuration for r10k and puppet would look like:
|
|
56
62
|
|
57
63
|
If you provide an array of directories in puppet.module_path, vagrant-r10k will use the first directory listed for auto configuration. If you want to let r10k use a different directory, see below.
|
58
64
|
|
59
|
-
|
65
|
+
### Puppet Forge Modules in Puppetfile
|
66
|
+
|
67
|
+
In order to prevent conflicts with other plugins and allow you to use whatever Puppet version you need, ``puppet`` itself is not included
|
68
|
+
in this plugin. This means that, _as-is, this plugin can't install Forge modules in your Puppetfile_, only modules from Git or SVN. This
|
69
|
+
is because installing Forge modules requires ``puppet`` itself to download the module.
|
70
|
+
|
71
|
+
The two possible ways to deal with this are:
|
72
|
+
|
73
|
+
1. Only use git or svn repo references in your Puppetfile.
|
74
|
+
2. Install ``puppet`` into Vagrant's gems
|
75
|
+
|
76
|
+
For #2, installing puppet into Vagrant's gems, simply ``vagrant plugin install puppet``; for further information,
|
77
|
+
see the [vagrant plugin documentation](https://docs.vagrantup.com/v2/plugins/usage.html). If you do this, you should
|
78
|
+
probably ensure that puppet is present by putting something like this at the top of your Vagrantfile:
|
79
|
+
|
80
|
+
```
|
81
|
+
# test that puppet is installed as a Vagrant plugin
|
82
|
+
# you can't use ``Vagrant.has_plugin?("puppet")`` because Vagrant's built-in
|
83
|
+
# Puppet Provisioner provides a plugin named "puppet", so this always evaluates to true.
|
84
|
+
begin
|
85
|
+
gem "puppet"
|
86
|
+
rescue Gem::LoadError
|
87
|
+
raise "puppet is not installed in vagrant gems! please run 'vagrant plugin install puppet'"
|
88
|
+
end
|
89
|
+
```
|
90
|
+
|
91
|
+
If you want to check for a specific version of Puppet, you can replace the content of the ``begin`` block with something like:
|
92
|
+
|
93
|
+
```
|
94
|
+
gem "puppet", ">=3.8"
|
95
|
+
```
|
96
|
+
|
97
|
+
### Usage with explicit path to module installation directory
|
60
98
|
|
61
99
|
Add the following to your Vagrantfile, before the puppet section:
|
62
100
|
|
@@ -94,6 +132,29 @@ The configuration for r10k and puppet would look like:
|
|
94
132
|
puppet.module_path = ["puppet/modules", "puppet/vendor"]
|
95
133
|
end
|
96
134
|
|
135
|
+
## Getting Help
|
136
|
+
|
137
|
+
Bug reports, feature requests, and pull requests are always welcome. At this time, the
|
138
|
+
[GitHub Issues Tracker](https://github.com/jantman/vagrant-r10k/issues)
|
139
|
+
is the only place for support, so questions and comments are welcome there as well,
|
140
|
+
but please be sure they haven't already been asked and answered.
|
141
|
+
|
142
|
+
Bug reports should include the following information in order to be investigated:
|
143
|
+
|
144
|
+
1. A detailed description of the problem, including the behavior you expected and
|
145
|
+
the actual behavior that you're observing.
|
146
|
+
2. The output of ``vagrant plugin list`` showing all of the plugins you're running
|
147
|
+
and their versions.
|
148
|
+
3. The versions of Ruby (``ruby --version``) and Vagrant (``vagrant --version``)
|
149
|
+
itself that you're running.
|
150
|
+
4. A copy of the Vagrantfile that was being used. Please include all lines in it;
|
151
|
+
if you have any confidential or proprietary information, feel free to replace
|
152
|
+
usernames, passwords, URLs, IPs, etc. with "X"s, but please don't remove
|
153
|
+
large portions of it.
|
154
|
+
5. A debug-level log of the command you're having problems with. i.e. if your
|
155
|
+
problem is experienced when running ``vagrant up``, please include the full
|
156
|
+
output of ``VAGRANT_LOG=debug vagrant up``.
|
157
|
+
|
97
158
|
## Contributing
|
98
159
|
|
99
160
|
1. Fork it ( https://github.com/jantman/vagrant-r10k/fork )
|
@@ -107,14 +168,66 @@ The configuration for r10k and puppet would look like:
|
|
107
168
|
|
108
169
|
* Oliver Bertuch - [https://github.com/poikilotherm](https://github.com/poikilotherm)
|
109
170
|
|
110
|
-
##
|
111
|
-
|
112
|
-
Still need to write tests... but they'll be using bundler and rspec.
|
171
|
+
## Development
|
113
172
|
|
114
|
-
__Note__ that
|
173
|
+
__Note__ that developing vagrant plugins _requires_ ruby 2.0.0 or newer.
|
115
174
|
A `.ruby-version` is provided to get [rvm](https://rvm.io/workflow/projects)
|
116
175
|
to use 2.1.1.
|
117
176
|
|
177
|
+
### Unit Tests
|
178
|
+
|
179
|
+
These will be automatically run by TravisCI for any pull requests or commits
|
180
|
+
to the repository. To run manually:
|
181
|
+
|
182
|
+
bundle install --path vendor
|
183
|
+
bundle exec rake spec
|
184
|
+
|
185
|
+
### Acceptance Tests
|
186
|
+
|
187
|
+
Unfortunately, "acceptance" testing Vagrant requires the various providers
|
188
|
+
be functional; i.e. to test the [VMWare Providers](https://www.vagrantup.com/vmware)
|
189
|
+
requires both a license for them from Hashicorp, and the VMWare products
|
190
|
+
themselves. Similarly, testing the AWS providers requires an AWS account and
|
191
|
+
actually running EC2 instances. As such, acceptance tests are provided separately
|
192
|
+
for each provider.
|
193
|
+
|
194
|
+
Note that the acceptance tests are tested with bundler 1.7.14. Also note that
|
195
|
+
the first time the VMWare provider is run in a given installation, it will
|
196
|
+
present an interactive sudo prompt in order to be able to interact with
|
197
|
+
VMWare.
|
198
|
+
|
199
|
+
Running Virtualbox acceptance tests:
|
200
|
+
|
201
|
+
bundle exec rake acceptance:virtualbox
|
202
|
+
|
203
|
+
When tests fail, they leave Virtualbox ``hostonlyif``s around; this can quickly clutter up the
|
204
|
+
system and cause other problems. As a result, after the virtualbox tests, we invoke the Vagrant
|
205
|
+
VirtualBox Provider's [delete_unused_host_only_networks](https://github.com/mitchellh/vagrant/blob/b118ab10c8e0f8e62a547249805f05240e6e4ee9/plugins/providers/virtualbox/driver/version_5_0.rb#L69)
|
206
|
+
method. This can also be manually run via ``bundle exec rake clean_vbox``.
|
207
|
+
|
208
|
+
These tests may generate a _lot_ of output; since there's no nice standalone junit XML viewer,
|
209
|
+
it may be helpful to run the tests as:
|
210
|
+
|
211
|
+
bundle exec rake acceptance:virtualbox 2>&1 | tee acceptance.out
|
212
|
+
|
213
|
+
And then examine ``acceptance.out`` as needed.
|
214
|
+
|
215
|
+
|
216
|
+
__Note__ that the vmware-workstation provider acceptance tests are not currently
|
217
|
+
functional; I've only been able to get the VirtualBox acceptance tests working.
|
218
|
+
If many users report vmware-specific problems, I'll give the tests another try.
|
219
|
+
Helpful information for them is available at http://www.codingonstilts.com/2013/07/how-to-bundle-exec-vagrant-up-with.html
|
220
|
+
and https://groups.google.com/d/topic/vagrant-up/J8J6LmhzBqM/discussion
|
221
|
+
I had these working at some point, but have been unable to get them working since;
|
222
|
+
it seems that (a bit painfully and ironically), mitchellh's [vagrant-spec](https://github.com/mitchellh/vagrant-spec/)
|
223
|
+
doesn't seem to work cleanly with Hashicorp's paid/licensed Vagrant providers.
|
224
|
+
|
225
|
+
Running (currently broken) VMWare Workstation acceptance tests:
|
226
|
+
|
227
|
+
bundle exec rake acceptance:vmware_workstation
|
228
|
+
|
229
|
+
### Manually Testing Vagrant
|
230
|
+
|
118
231
|
For manual testing:
|
119
232
|
|
120
233
|
bundle install --path vendor
|
@@ -124,11 +237,13 @@ To use an existing project's Vagrantfile, you can just specify the directory tha
|
|
124
237
|
is in using the ``VAGRANT_CWD`` environment variable (i.e. prepend ``VAGRANT_CWD=/path/to/project``
|
125
238
|
to the above command).
|
126
239
|
|
127
|
-
|
240
|
+
Note that this will not work easily with the VMWare provider, or any other Hashicorp paid/licensed provider.
|
241
|
+
|
242
|
+
### Debugging
|
128
243
|
|
129
244
|
Exporting ``VAGRANT_LOG=debug`` will also turn on debug-level logging for r10k.
|
130
245
|
|
131
|
-
|
246
|
+
### Releasing
|
132
247
|
|
133
248
|
1. Ensure all tests are passing, coverage is acceptable, etc.
|
134
249
|
2. Increment the version number in ``lib/vagrant-r10k/version.rb``
|
data/Rakefile
CHANGED
@@ -11,7 +11,118 @@ begin
|
|
11
11
|
rescue LoadError
|
12
12
|
end
|
13
13
|
|
14
|
+
def system_or_die(cmd, fail_msg=nil)
|
15
|
+
puts "running: '#{cmd}'"
|
16
|
+
res = system(cmd)
|
17
|
+
if ! res
|
18
|
+
if fail_msg.nil?
|
19
|
+
$stderr.puts "Command exited non-zero: #{cmd}"
|
20
|
+
else
|
21
|
+
$stderr.puts fail_msg
|
22
|
+
end
|
23
|
+
exit!(1)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
def get_box_path(provider)
|
28
|
+
boxes_dir = File.join(File.dirname(__FILE__), 'spec', 'boxes')
|
29
|
+
Dir.mkdir(boxes_dir) if not File.directory?(boxes_dir)
|
30
|
+
if provider == 'virtualbox'
|
31
|
+
boxurl = 'https://s3.amazonaws.com/puppetlabs-vagrantcloud/centos-7.0-x86_64-virtualbox-puppet-1.0.1.box'
|
32
|
+
elsif provider == 'aws'
|
33
|
+
boxurl = 'https://github.com/mitchellh/vagrant-aws/raw/master/dummy.box'
|
34
|
+
elsif provider == 'vmware_workstation'
|
35
|
+
boxurl = 'https://s3.amazonaws.com/puppetlabs-vagrantcloud/centos-7.0-x86_64-vmware-puppet-1.0.1.box'
|
36
|
+
else
|
37
|
+
STDERR.puts "ERROR: no box URL known for provider '#{provider}'"
|
38
|
+
exit!(1)
|
39
|
+
end
|
40
|
+
box_path = File.join(boxes_dir, "dummy_#{provider}.box")
|
41
|
+
if File.exist?(box_path)
|
42
|
+
puts "#{provider} box exists at #{box_path}"
|
43
|
+
else
|
44
|
+
puts "Downloading #{provider} box from #{boxurl} to #{box_path}"
|
45
|
+
system_or_die("curl -o #{box_path} '#{boxurl}'")
|
46
|
+
end
|
47
|
+
return box_path
|
48
|
+
end
|
49
|
+
|
50
|
+
def fix_results_xml()
|
51
|
+
# mainly a workaround for https://github.com/sj26/rspec_junit_formatter/issues/31
|
52
|
+
return if ! File.exist?('results.xml')
|
53
|
+
puts "Munging invalid control chracters in results.xml"
|
54
|
+
content = File.read('results.xml')
|
55
|
+
content.gsub!(/\033/, "\uFFFD")
|
56
|
+
File.open('results.xml', 'w') { |file| file.write(content) }
|
57
|
+
end
|
58
|
+
|
59
|
+
def vmware_workstation_prep()
|
60
|
+
# make vmware_workstation provider work in bundler install
|
61
|
+
# see: http://www.codingonstilts.com/2013/07/how-to-bundle-exec-vagrant-up-with.html
|
62
|
+
plugin_dir = Gem::Specification.find_by_name("vagrant-vmware-workstation").gem_dir
|
63
|
+
puts "Found vmware_workstation plugin dir as: #{plugin_dir}"
|
64
|
+
loader_link_path = File.join(plugin_dir, "rgloader")
|
65
|
+
if not File.exist?(loader_link_path)
|
66
|
+
rgloader_path = '/opt/vagrant/embedded/rgloader'
|
67
|
+
if not File.exist?(rgloader_path)
|
68
|
+
puts "ERROR: could not find rgloader in ~/.vagrant.d"
|
69
|
+
exit!(1)
|
70
|
+
end
|
71
|
+
puts "Found rgloader path as: #{rgloader_path}"
|
72
|
+
File.symlink(rgloader_path, loader_link_path)
|
73
|
+
puts "Symlinked #{loader_link_path} to #{rgloader_path}"
|
74
|
+
end
|
75
|
+
ENV['VAGRANT_INSTALLER_EMBEDDED_DIR'] = '/opt/vagrant/embedded'
|
76
|
+
lic_link_path = File.join(plugin_dir, "license-vagrant-vmware-workstation.lic")
|
77
|
+
if not File.exist?(lic_link_path)
|
78
|
+
lic_path = File.join(File.expand_path("~"), ".vagrant.d", "license-vagrant-vmware-workstation.lic")
|
79
|
+
if not File.exist?(lic_path)
|
80
|
+
puts "ERROR: could not find license file at #{lic_path}"
|
81
|
+
exit!(1)
|
82
|
+
end
|
83
|
+
File.symlink(lic_path, lic_link_path)
|
84
|
+
puts "Symlinked #{lic_link_path} to #{lic_path}"
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
14
88
|
desc "Display the list of available rake tasks"
|
15
89
|
task :help do
|
16
90
|
system("rake -T")
|
17
91
|
end
|
92
|
+
|
93
|
+
desc "Cleanup VirtualBox hostonlyifs"
|
94
|
+
task :clean_vbox do
|
95
|
+
puts "Initializing Vagrant ProviderVirtualBox plugin"
|
96
|
+
require 'vagrant'
|
97
|
+
dm = VagrantPlugins::ProviderVirtualBox::Driver::Meta.new
|
98
|
+
puts "Deleting unused VirtualBox host-only networks"
|
99
|
+
dm.delete_unused_host_only_networks
|
100
|
+
end
|
101
|
+
|
102
|
+
namespace :acceptance do
|
103
|
+
providers = ['virtualbox', 'vmware_workstation']
|
104
|
+
|
105
|
+
# isolate our temp directories so we can easily remove them
|
106
|
+
tmp_dir_path = '/tmp/vagrant-r10k-spec'
|
107
|
+
Dir.mkdir(tmp_dir_path) unless Dir.exists?(tmp_dir_path)
|
108
|
+
|
109
|
+
providers.each do |prov|
|
110
|
+
desc "Run acceptance tests for #{prov}"
|
111
|
+
task prov do |task|
|
112
|
+
provider = task.name.split(':')[1]
|
113
|
+
puts "Running acceptance tests for #{provider}"
|
114
|
+
if provider == 'vmware_workstation'
|
115
|
+
puts "ERROR: vmware_workstation acceptance tests are broken. Please see https://github.com/jantman/vagrant-r10k/issues/20"
|
116
|
+
exit!(1)
|
117
|
+
vmware_workstation_prep()
|
118
|
+
end
|
119
|
+
box_path = get_box_path(provider)
|
120
|
+
system_or_die("VS_PROVIDER=#{provider} VS_BOX_PATH=#{box_path} TMPDIR=#{tmp_dir_path} bundle exec vagrant-spec test")
|
121
|
+
system("rm -Rf #{tmp_dir_path}/*")
|
122
|
+
fix_results_xml()
|
123
|
+
if provider == 'virtualbox'
|
124
|
+
Rake::Task['clean_vbox'].invoke
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,44 @@
|
|
1
|
+
require 'vagrant/action'
|
2
|
+
require_relative '../helpers'
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module R10k
|
6
|
+
module Action
|
7
|
+
# base class for vagrant-r10k hook actions
|
8
|
+
class Base
|
9
|
+
|
10
|
+
include R10K::Logging
|
11
|
+
|
12
|
+
# validate hook
|
13
|
+
def self.validate
|
14
|
+
Vagrant::Action::Builder.new.tap do |b|
|
15
|
+
b.use Action::Validate
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
# r10k deploy hook
|
20
|
+
def self.deploy
|
21
|
+
Vagrant::Action::Builder.new.tap do |b|
|
22
|
+
b.use Action::Validate
|
23
|
+
b.use Action::Deploy
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
include VagrantPlugins::R10k::Helpers
|
28
|
+
|
29
|
+
def initialize(app, env)
|
30
|
+
@app = app
|
31
|
+
@env = env
|
32
|
+
klass = self.class.name.downcase.split('::').last
|
33
|
+
@logger = Log4r::Logger.new("vagrant::r10k::#{klass}")
|
34
|
+
if ENV["VAGRANT_LOG"] == "debug"
|
35
|
+
R10K::Logging.level = 0
|
36
|
+
@logger.level = 0
|
37
|
+
else
|
38
|
+
R10K::Logging.level = 3
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|