vagrant-config_builder 0.5.0 → 0.6.0
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +12 -0
- data/examples/Vagrantfile +1 -0
- data/lib/config_builder/loader/yaml.rb +14 -8
- data/lib/config_builder/model/base.rb +15 -0
- data/lib/config_builder/model/provider/virtualbox.rb +2 -2
- data/lib/config_builder/model/provisioner/puppet.rb +5 -5
- data/lib/config_builder/model/provisioner/puppet_server.rb +3 -3
- data/lib/config_builder/model/provisioner/shell.rb +3 -3
- data/lib/config_builder/model/synced_folder.rb +3 -3
- data/lib/config_builder/model/vm.rb +4 -4
- data/lib/config_builder/version.rb +1 -1
- metadata +3 -2
data/CHANGELOG
CHANGED
@@ -1,6 +1,18 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
=========
|
3
3
|
|
4
|
+
0.6.0
|
5
|
+
-----
|
6
|
+
|
7
|
+
2013-10-17
|
8
|
+
|
9
|
+
This is a backwards incompatible feature release.
|
10
|
+
|
11
|
+
* Loader::YAML#yamldir can now accept a list of directories to use for
|
12
|
+
configuration.
|
13
|
+
|
14
|
+
Thanks to Charlie Sharpsteen for his help on this release.
|
15
|
+
|
4
16
|
0.5.0
|
5
17
|
-----
|
6
18
|
|
@@ -0,0 +1 @@
|
|
1
|
+
Vagrant.configure('2', &ConfigBuilder.load(:yaml, :yamldir, '/path/to/config'))
|
@@ -2,22 +2,28 @@ require 'yaml'
|
|
2
2
|
|
3
3
|
class ConfigBuilder::Loader::YAML
|
4
4
|
|
5
|
-
# Load configuration from
|
5
|
+
# Load configuration from YAML files in one or more directories
|
6
6
|
#
|
7
|
-
# @
|
7
|
+
# @overload yamldir(path)
|
8
|
+
# @param path [String] A directory path containing YAML files
|
9
|
+
# @overload yamldir(paths)
|
10
|
+
# @param paths [Array<String>] A list of directory paths containing YAML files
|
8
11
|
#
|
9
12
|
# @return [Hash]
|
10
|
-
def yamldir(
|
11
|
-
|
13
|
+
def yamldir(input)
|
14
|
+
dirs = Array(input)
|
15
|
+
|
16
|
+
files = dirs.map do |dir|
|
17
|
+
pattern = File.join(dir, '*.{yml,yaml}')
|
18
|
+
Dir.glob(pattern)
|
19
|
+
end.flatten
|
12
20
|
|
13
21
|
rv = {}
|
14
|
-
Dir.glob(glob_path).each do |file|
|
15
|
-
contents = ::YAML.load_file(file)
|
16
22
|
|
23
|
+
files.each do |file|
|
24
|
+
contents = ::YAML.load_file(file)
|
17
25
|
if contents.is_a? Hash
|
18
26
|
rv.merge! contents
|
19
|
-
else
|
20
|
-
# TODO warn on non-hash YAML
|
21
27
|
end
|
22
28
|
end
|
23
29
|
|
@@ -72,6 +72,21 @@ class ConfigBuilder::Model::Base
|
|
72
72
|
end
|
73
73
|
private :attr
|
74
74
|
|
75
|
+
# Conditionally evaluate a block with a model attribute if it's defined
|
76
|
+
#
|
77
|
+
# @since 0.6.0
|
78
|
+
#
|
79
|
+
# @param identifier [Symbol] The attribute identifier
|
80
|
+
#
|
81
|
+
# @return [void]
|
82
|
+
def with_attr(identifier)
|
83
|
+
val = @attrs[identifier]
|
84
|
+
unless val.nil?
|
85
|
+
yield val
|
86
|
+
end
|
87
|
+
end
|
88
|
+
private :with_attr
|
89
|
+
|
75
90
|
class << self
|
76
91
|
|
77
92
|
# @param identifier [Symbol]
|
@@ -20,13 +20,13 @@ class ConfigBuilder::Model::Provider::Virtualbox < ConfigBuilder::Model::Base
|
|
20
20
|
def to_proc
|
21
21
|
Proc.new do |vm_config|
|
22
22
|
vm_config.provider 'virtualbox' do |vb_config|
|
23
|
-
vb_config.name =
|
23
|
+
with_attr(:name) { |val| vb_config.name = val }
|
24
24
|
|
25
25
|
attr(:customize).each do |cmd|
|
26
26
|
vb_config.customize cmd
|
27
27
|
end
|
28
28
|
|
29
|
-
vb_config.gui =
|
29
|
+
with_attr(:gui) { |val| vb_config.gui = val }
|
30
30
|
end
|
31
31
|
end
|
32
32
|
end
|
@@ -24,11 +24,11 @@ class ConfigBuilder::Model::Provisioner::Puppet < ConfigBuilder::Model::Base
|
|
24
24
|
def to_proc
|
25
25
|
Proc.new do |vm_config|
|
26
26
|
vm_config.provision :puppet do |puppet_config|
|
27
|
-
puppet_config.manifests_path =
|
28
|
-
puppet_config.manifest_file =
|
29
|
-
puppet_config.module_path =
|
30
|
-
puppet_config.facter =
|
31
|
-
puppet_config.options =
|
27
|
+
with_attr(:manifests_path) { |val| puppet_config.manifests_path = val }
|
28
|
+
with_attr(:manifest_file) { |val| puppet_config.manifest_file = val }
|
29
|
+
with_attr(:module_path) { |val| puppet_config.module_path = val }
|
30
|
+
with_attr(:facter) { |val| puppet_config.facter = val }
|
31
|
+
with_attr(:options) { |val| puppet_config.options = val }
|
32
32
|
end
|
33
33
|
end
|
34
34
|
end
|
@@ -16,9 +16,9 @@ class ConfigBuilder::Model::Provisioner::PuppetServer < ConfigBuilder::Model::Ba
|
|
16
16
|
def to_proc
|
17
17
|
Proc.new do |vm_config|
|
18
18
|
vm_config.provision :puppet_server do |puppet_config|
|
19
|
-
puppet_config.puppet_server =
|
20
|
-
puppet_config.node_name =
|
21
|
-
puppet_config.options =
|
19
|
+
with_attr(:puppet_server) { |val| puppet_config.puppet_server = val }
|
20
|
+
with_attr(:node_name) { |val| puppet_config.node_name = val }
|
21
|
+
with_attr(:options) { |val| puppet_config.options = val }
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -16,9 +16,9 @@ class ConfigBuilder::Model::Provisioner::Shell < ConfigBuilder::Model::Base
|
|
16
16
|
def to_proc
|
17
17
|
Proc.new do |vm_config|
|
18
18
|
vm_config.provision :shell do |shell_config|
|
19
|
-
shell_config.inline =
|
20
|
-
shell_config.path =
|
21
|
-
shell_config.args =
|
19
|
+
with_attr(:inline) { |val| shell_config.inline = val }
|
20
|
+
with_attr(:path) { |val| shell_config.path = val }
|
21
|
+
with_attr(:args) { |val| shell_config.args = val }
|
22
22
|
end
|
23
23
|
end
|
24
24
|
end
|
@@ -34,9 +34,9 @@ class ConfigBuilder::Model::SyncedFolder < ConfigBuilder::Model::Base
|
|
34
34
|
|
35
35
|
def folder_opts
|
36
36
|
h = {}
|
37
|
-
h[:extra] =
|
38
|
-
h[:disabled] =
|
39
|
-
h[:nfs] =
|
37
|
+
with_attr(:extra) { |val| h[:extra] = val }
|
38
|
+
with_attr(:disable) { |val| h[:disabled] = val }
|
39
|
+
with_attr(:nfs) { |val| h[:nfs] = val }
|
40
40
|
|
41
41
|
h
|
42
42
|
end
|
@@ -96,10 +96,10 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
|
96
96
|
global_config.vm.define(attr(:name)) do |config|
|
97
97
|
vm_config = config.vm
|
98
98
|
|
99
|
-
|
100
|
-
|
101
|
-
vm_config.hostname = attr(:hostname)
|
102
|
-
|
99
|
+
with_attr(:box) { |val| vm_config.box = attr(:box) }
|
100
|
+
with_attr(:box_url) { |val| vm_config.box_url = attr(:box_url) }
|
101
|
+
with_attr(:hostname) { |val| vm_config.hostname = attr(:hostname) }
|
102
|
+
with_attr(:guest) { |val| vm_config.guest = attr(:guest) }
|
103
103
|
|
104
104
|
eval_models(vm_config)
|
105
105
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-config_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.6.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-
|
12
|
+
date: 2013-10-17 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -37,6 +37,7 @@ files:
|
|
37
37
|
- Gemfile
|
38
38
|
- LICENSE
|
39
39
|
- README.markdown
|
40
|
+
- examples/Vagrantfile
|
40
41
|
- examples/roles.yaml
|
41
42
|
- examples/vms.yaml
|
42
43
|
- lib/config_builder.rb
|