vagrant-r10k 0.1.0 → 0.1.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 960030dda2dd99db2efe4b2af6b221b71eb5d9b6
4
- data.tar.gz: 348677e6e82c9ee94941072595b082a05b0de1e3
3
+ metadata.gz: 11ae37b7c28f43dcdd732d3b5515e4f2c0eadcc1
4
+ data.tar.gz: a7d31bd3f78eea85d5e1e0098471d26f6c08a477
5
5
  SHA512:
6
- metadata.gz: 3efa13ca03e10cce33813c4aa1732a3472fb933f65ca4b1ff0f04965a8f22af460717123343d96d581775f06d6030255a7da05d66a28ed0341c89f77ac388e0b
7
- data.tar.gz: e14a90077d15f61922e04d04c67526bea681279c1479690758b954ab37d7ce46c44ca31d105f375d8b3693c43b8d134605efe320f21f2c7479829390bf028622
6
+ metadata.gz: 336d24166bda7d40cd6a8c3a6ffecc8e6247aae15892fadb9ce8b887e8b36ec3b271f6ad1bf417d93c53f7738ae3054bf57c60eea49883541e4dea818e5d8a1c
7
+ data.tar.gz: 7a11489ace64e0edb07410b28740e4df80f6c952fb94243a59fe673024db027418b3e5b37b8be44484b6a92df8db3e3786075f77249a9d3e95163851d576aa12
data/.ruby-version ADDED
@@ -0,0 +1 @@
1
+ ruby-2.1.1
data/README.md CHANGED
@@ -22,7 +22,45 @@ conflicting Puppet installation.
22
22
  Add the following to your Vagrantfile, before the puppet section:
23
23
 
24
24
  config.r10k.puppet_dir = 'dir' # the parent directory that contains your module directory and Puppetfile
25
- config.r10k.puppetfile_path = 'dir/Puppetfile' # the path to your Puppetfile, within the repo
25
+ config.r10k.puppetfile_path = 'dir/Puppetfile' # the path to your Puppetfile, within the repo
26
+
27
+ For the following example directory structure:
28
+
29
+ .
30
+ ├── README.md
31
+ ├── Vagrantfile
32
+ ├── docs
33
+ │ └── foo.md
34
+ ├── puppet
35
+ │ ├── Puppetfile
36
+ │ ├── manifests
37
+ │ │ └── default.pp
38
+ │ └── modules
39
+ └── someproject
40
+ └── foo.something
41
+
42
+ The configuration for r10k and puppet would look like:
43
+
44
+ # r10k plugin to deploy puppet modules
45
+ config.r10k.puppet_dir = "puppet"
46
+ config.r10k.puppetfile_path = "puppet/Puppetfile"
47
+
48
+ # Provision the machine with the appliction
49
+ config.vm.provision "puppet" do |puppet|
50
+ puppet.manifests_path = "puppet/manifests"
51
+ puppet.manifest_file = "default.pp"
52
+ puppet.module_path = "puppet/modules"
53
+ end
54
+
55
+ 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.
56
+
57
+ ## Usage with explicit path to module installation directory
58
+
59
+ Add the following to your Vagrantfile, before the puppet section:
60
+
61
+ config.r10k.puppet_dir = 'dir' # the parent directory that contains your module directory and Puppetfile
62
+ config.r10k.puppetfile_path = 'dir/Puppetfile' # the path to your Puppetfile, within the repo
63
+ config.r10k.module_path = 'dir/moduledir' # the path where r10k should install its modules (should be same / one of those in puppet provisioner, will be checked)
26
64
 
27
65
  For the following example directory structure:
28
66
 
@@ -35,21 +73,23 @@ For the following example directory structure:
35
73
  │   ├── Puppetfile
36
74
  │   ├── manifests
37
75
  │   │   └── default.pp
38
- │   └── modules
76
+ │   ├── modules # your own modules
77
+ │   └── vendor # modules installed by r10k
39
78
  └── someproject
40
- └── foo.something
79
+ └── foo.something
41
80
 
42
81
  The configuration for r10k and puppet would look like:
43
82
 
44
83
  # r10k plugin to deploy puppet modules
45
84
  config.r10k.puppet_dir = "puppet"
46
85
  config.r10k.puppetfile_path = "puppet/Puppetfile"
86
+ config.r10k.module_path = "puppet/vendor"
47
87
 
48
88
  # Provision the machine with the appliction
49
89
  config.vm.provision "puppet" do |puppet|
50
90
  puppet.manifests_path = "puppet/manifests"
51
91
  puppet.manifest_file = "default.pp"
52
- puppet.module_path = "puppet/modules"
92
+ puppet.module_path = ["puppet/modules", "puppet/vendor"]
53
93
  end
54
94
 
55
95
  ## Contributing
@@ -57,13 +97,32 @@ The configuration for r10k and puppet would look like:
57
97
  1. Fork it ( https://github.com/jantman/vagrant-r10k/fork )
58
98
  2. Create your feature branch (`git checkout -b my-new-feature`)
59
99
  3. Commit your changes (`git commit -am 'Add some feature'`)
60
- 4. Push to the branch (`git push origin my-new-feature`)
61
- 5. Create a new Pull Request
100
+ 4. Increment the version number in `lib/vagrant-r10k/version.rb`
101
+ 5. Add yourself to the "Contributors" list below.
102
+ 6. Push to the branch (`git push origin my-new-feature`)
103
+ 7. Create a new Pull Request
104
+
105
+ ### Contributors
106
+
107
+ * Oliver Bertuch - [https://github.com/poikilotherm](https://github.com/poikilotherm)
62
108
 
63
109
  ## Testing
64
110
 
65
111
  Still need to write tests... but they'll be using bundler and rspec.
66
112
 
113
+ __Note__ that developming vagrant plugins _requires_ ruby 2.0.0 or newer.
114
+ A `.ruby-version` is provided to get [rvm](https://rvm.io/workflow/projects)
115
+ to use 2.1.1.
116
+
117
+ For manual testing:
118
+
119
+ bundle install --path vendor
120
+ VAGRANT_LOG=debug bundle exec vagrant up
121
+
122
+ To use an existing project's Vagrantfile, you can just specify the directory that the Vagrantfile
123
+ is in using the ``VAGRANT_CWD`` environment variable (i.e. prepend ``VAGRANT_CWD=/path/to/project``
124
+ to the above command).
125
+
67
126
  ## Debugging
68
127
 
69
128
  Exporting ``VAGRANT_LOG=debug`` will also turn on debug-level logging for r10k.
data/Rakefile CHANGED
@@ -2,3 +2,10 @@ require 'bundler/gem_tasks'
2
2
  require 'rubygems'
3
3
  require 'bundler/setup'
4
4
  Bundler::GemHelper.install_tasks
5
+
6
+ task :default => [:help]
7
+
8
+ desc "Display the list of available rake tasks"
9
+ task :help do
10
+ system("rake -T")
11
+ end
@@ -3,10 +3,12 @@ module VagrantPlugins
3
3
  class Config < Vagrant.plugin('2', :config)
4
4
  attr_accessor :puppet_dir
5
5
  attr_accessor :puppetfile_path
6
+ attr_accessor :module_path
6
7
 
7
8
  def initialize
8
9
  @puppet_dir = UNSET_VALUE
9
10
  @puppetfile_path = UNSET_VALUE
11
+ @module_path = UNSET_VALUE
10
12
  end
11
13
 
12
14
  def validate(machine)
@@ -30,6 +32,11 @@ module VagrantPlugins
30
32
  puppetfile = File.join(machine.env.root_path, puppetfile_path)
31
33
  errors << "puppetfile '#{puppetfile}' does not exist" if !File.file?(puppetfile)
32
34
 
35
+ if module_path != UNSET_VALUE
36
+ module_path_path = File.join(machine.env.root_path, module_path)
37
+ errors << "module_path directory '#{module_path_path}' does not exist" if !File.directory?(module_path_path)
38
+ end
39
+
33
40
  { "vagrant-r10k" => errors }
34
41
  end
35
42
 
@@ -50,17 +50,41 @@ module VagrantPlugins
50
50
  end
51
51
 
52
52
  puppetfile_path = File.join(env_dir, @env[:machine].config.r10k.puppetfile_path)
53
+
53
54
  module_path = nil
55
+ # override the default mechanism for building a module_path with the optional config argument
56
+ if @env[:machine].config.r10k.module_path != unset
57
+ module_path = @env[:machine].config.r10k.module_path
58
+ end
59
+
54
60
  manifest_file = nil
55
61
  manifests_path = nil
56
62
  @env[:machine].config.vm.provisioners.each do |prov|
57
63
  if prov.name == :puppet
58
- module_path = File.join(env_dir, prov.config.module_path)
64
+ # if module_path has been set before, check if it fits to one defined in the provisioner config
65
+ if module_path != nil
66
+ if prov.config.module_path.is_a?(Array) and ! prov.config.module_path.include?(module_path)
67
+ @env[:ui].detail "vagrant-r10k: module_path \"#{module_path}\" is not within the ones defined in puppet provisioner; not running"
68
+ @app.call(env)
69
+ return
70
+ elsif ! prov.config.module_path.is_a?(Array) and prov.config.module_path != module_path
71
+ @env[:ui].detail "vagrant-r10k: module_path \"#{module_path}\" is not the same as in puppet provisioner; not running"
72
+ @app.call(env)
73
+ return
74
+ end
75
+ # no modulepath explict set in config, build one from the provisioner config
76
+ else
77
+ module_path = prov.config.module_path.is_a?(Array) ? prov.config.module_path[0] : prov.config.module_path
78
+ @env[:ui].info "vagrant-r10k: Building the r10k module path with puppet provisioner module_path \"#{module_path}\". (if module_path is an array, first element is used)"
79
+ end
80
+
59
81
  manifest_file = File.join(env_dir, prov.config.manifest_file)
60
82
  manifests_path = File.join(env_dir, prov.config.manifests_path[1])
61
83
  end
62
84
  end
63
85
 
86
+ # now join the module_path with the env_dir to have an absolute path
87
+ module_path = File.join(env_dir, module_path)
64
88
  @env[:ui].info "vagrant-r10k: Beginning r10k deploy of puppet modules into #{module_path} using #{puppetfile_path}"
65
89
 
66
90
  if ENV["VAGRANT_LOG"] == "debug"
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module R10k
3
- VERSION = "0.1.0"
3
+ VERSION = "0.1.1"
4
4
  end
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vagrant-r10k
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.0
4
+ version: 0.1.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jason Antman
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-07-01 00:00:00.000000000 Z
11
+ date: 2014-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: r10k
@@ -61,6 +61,7 @@ extensions: []
61
61
  extra_rdoc_files: []
62
62
  files:
63
63
  - ".gitignore"
64
+ - ".ruby-version"
64
65
  - Gemfile
65
66
  - LICENSE.txt
66
67
  - README.md