vagrant-dotvm 0.7.0 → 0.8.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/README.md +14 -3
- data/lib/vagrant-dotvm/configinjecter.rb +7 -1
- data/lib/vagrant-dotvm/configparser.rb +54 -19
- data/lib/vagrant-dotvm/dotvm.rb +2 -1
- data/lib/vagrant-dotvm/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: debbbcde749af67762470debc868aa2f2d29dd38
|
4
|
+
data.tar.gz: cd4270123ac9fed8511cb028f38a94cddbe99f26
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 71fcdc8d518ae0d5f5dda2258a9f39b5934ebc1fb0b8a25d338c357469fa66496e88c411f8f446703d694512177cb45e635fd0068e31a1d28033cfc449225156
|
7
|
+
data.tar.gz: 09b04ba244a8309b68c6ad8eadef820b47cb5bf98c2e90112ddfe94f8828f6b0912ab505308b04adaadf70af86feb015eaeea221e32a38fffec79dd2cde431cc
|
data/README.md
CHANGED
@@ -11,6 +11,8 @@ Then create Vagrantfile like that:
|
|
11
11
|
require 'vagrant-dotvm'
|
12
12
|
|
13
13
|
Vagrant.configure(2) do |config|
|
14
|
+
# config directory will be expected in the same
|
15
|
+
# directory as Vagrantfile.
|
14
16
|
config_path = File.dirname(File.expand_path(__FILE__)) + "/config"
|
15
17
|
dotvm = VagrantPlugins::Dotvm::Dotvm.new config_path
|
16
18
|
dotvm.inject(config)
|
@@ -26,8 +28,7 @@ $ mkdir -p config/projects
|
|
26
28
|
You need to create folder named after your project in `config/projects`.
|
27
29
|
In this folder you can create as many YAML files as you want.
|
28
30
|
In each one you are able to define multiple machines.
|
29
|
-
|
30
|
-
path to directory where you project lives.
|
31
|
+
|
31
32
|
|
32
33
|
Example YAML configuration:
|
33
34
|
```yaml
|
@@ -41,8 +42,18 @@ machines:
|
|
41
42
|
mask: 255.255.255.0
|
42
43
|
provision:
|
43
44
|
- type: shell
|
44
|
-
path: "%project.
|
45
|
+
path: "%project.host%/bootstrap.sh"
|
46
|
+
args:
|
47
|
+
- "%project.guest%"
|
45
48
|
shared_folders:
|
46
49
|
- host: /Volumes/Repos
|
47
50
|
guest: /srv/www
|
48
51
|
```
|
52
|
+
|
53
|
+
## Available variables
|
54
|
+
You can use variables inside of config values.
|
55
|
+
Environment variables are accessible by using env prefix, e.g. `%env.LOGNAME%`.
|
56
|
+
|
57
|
+
Predefined variables:
|
58
|
+
* `%project.host%` - points to project directory on host
|
59
|
+
* `%project.guest%` - points to project directory on guest
|
@@ -3,6 +3,9 @@ module VagrantPlugins
|
|
3
3
|
class ConfigInjecter
|
4
4
|
|
5
5
|
def self.inject(config, vc)
|
6
|
+
# General settings
|
7
|
+
vc.ssh.forward_x11 = true
|
8
|
+
|
6
9
|
config[:machines].each do |machine_cfg|
|
7
10
|
vc.vm.define machine_cfg[:nick], primary: machine_cfg[:primary] do |machine|
|
8
11
|
machine.vm.box = machine_cfg[:box]
|
@@ -12,6 +15,8 @@ module VagrantPlugins
|
|
12
15
|
vb.customize ['modifyvm', :id, '--memory', machine_cfg['memory'] ||= 1024]
|
13
16
|
vb.customize ['modifyvm', :id, '--cpus', machine_cfg['cpus'] ||= 1]
|
14
17
|
vb.customize ['modifyvm', :id, '--cpuexecutioncap', machine_cfg['cpucap'] ||= 100]
|
18
|
+
vb.customize ['modifyvm', :id, '--natdnshostresolver1', 'on']
|
19
|
+
vb.customize ['modifyvm', :id, '--natnet1', machine_cfg['natnet'] ||= '192.168.88.0/24']
|
15
20
|
end
|
16
21
|
|
17
22
|
machine_cfg[:networks].each do |net|
|
@@ -24,6 +29,7 @@ module VagrantPlugins
|
|
24
29
|
machine.vm.provision provision[:type] do |p|
|
25
30
|
if provision[:type] == 'shell'
|
26
31
|
p.path = provision[:path]
|
32
|
+
p.args = provision[:args]
|
27
33
|
p.privileged = provision[:privileged] ||= true
|
28
34
|
elsif provision[:type] == 'file'
|
29
35
|
p.source = provision[:source]
|
@@ -37,7 +43,7 @@ module VagrantPlugins
|
|
37
43
|
end
|
38
44
|
|
39
45
|
machine_cfg[:folders].each do |folder|
|
40
|
-
machine.vm.synced_folder folder[:host], folder[:guest]
|
46
|
+
machine.vm.synced_folder folder[:host], folder[:guest], disabled: folder[:disabled]
|
41
47
|
end
|
42
48
|
|
43
49
|
if Vagrant.has_plugin?('vagrant-group')
|
@@ -9,18 +9,31 @@ module VagrantPlugins
|
|
9
9
|
@vars = vars
|
10
10
|
end
|
11
11
|
|
12
|
-
|
12
|
+
|
13
13
|
def replace_vars(value)
|
14
|
-
if value
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
14
|
+
if value.kind_of?(Hash)
|
15
|
+
result = {}
|
16
|
+
value.each do |key, val|
|
17
|
+
result[key] = self.replace_vars(val)
|
18
|
+
end
|
19
|
+
elsif value.kind_of?(Array)
|
20
|
+
result = value.map do |val|
|
21
|
+
self.replace_vars(val)
|
22
|
+
end
|
23
|
+
elsif value.kind_of?(String)
|
24
|
+
result = value.dup
|
25
|
+
|
26
|
+
@vars.each do |k, v|
|
27
|
+
pattern = '%' + k + '%'
|
28
|
+
result.gsub! pattern, v
|
20
29
|
end
|
30
|
+
elsif !value.respond_to?(:duplicable) or !value.duplicable?
|
31
|
+
result = value
|
32
|
+
else
|
33
|
+
result = value.dup
|
21
34
|
end
|
22
|
-
|
23
|
-
return
|
35
|
+
|
36
|
+
return result
|
24
37
|
end
|
25
38
|
|
26
39
|
|
@@ -32,10 +45,22 @@ module VagrantPlugins
|
|
32
45
|
:memory => machine['memory'],
|
33
46
|
:cpus => machine['cpus'],
|
34
47
|
:cpucap => machine['cpucap'],
|
35
|
-
:primary => machine['primary']
|
48
|
+
:primary => self.coalesce(machine['primary'], false),
|
49
|
+
:natnet => machine['natnet'],
|
36
50
|
:networks => [],
|
37
51
|
:provision => [],
|
38
|
-
:folders => [
|
52
|
+
:folders => [
|
53
|
+
{
|
54
|
+
:host => '.',
|
55
|
+
:guest => '/vagrant',
|
56
|
+
:disabled => true,
|
57
|
+
},
|
58
|
+
{
|
59
|
+
:host => '%project.host%',
|
60
|
+
:guest => '%project.guest%',
|
61
|
+
:disabled => false,
|
62
|
+
}
|
63
|
+
],
|
39
64
|
:groups => [],
|
40
65
|
}
|
41
66
|
end
|
@@ -43,10 +68,10 @@ module VagrantPlugins
|
|
43
68
|
|
44
69
|
def parse_net(net)
|
45
70
|
return {
|
46
|
-
:net => net['net']
|
71
|
+
:net => self.coalesce(net['net'], DEFAULT_NET),
|
47
72
|
:type => net['type'],
|
48
73
|
:ip => net['ip'],
|
49
|
-
:mask => net['mask']
|
74
|
+
:mask => self.coalesce(net['mask'], net['netmask'], DEFAULT_NETMASK),
|
50
75
|
}
|
51
76
|
end
|
52
77
|
|
@@ -54,11 +79,12 @@ module VagrantPlugins
|
|
54
79
|
def parse_provision(prv)
|
55
80
|
return {
|
56
81
|
:type => prv['type'],
|
57
|
-
:source =>
|
82
|
+
:source => prv['source'],
|
58
83
|
:destination => prv['destination'],
|
59
|
-
:path =>
|
60
|
-
:
|
61
|
-
:
|
84
|
+
:path => prv['path'],
|
85
|
+
:args => prv['args'],
|
86
|
+
:module_path => prv['module_path'],
|
87
|
+
:manifests_path => prv['manifests_path'],
|
62
88
|
:manifest_file => prv['manifest_file'],
|
63
89
|
}
|
64
90
|
end
|
@@ -66,8 +92,9 @@ module VagrantPlugins
|
|
66
92
|
|
67
93
|
def parse_folder(folder)
|
68
94
|
return {
|
69
|
-
:host =>
|
95
|
+
:host => folder['host'],
|
70
96
|
:guest => folder['guest'],
|
97
|
+
:disabled => self.coalesce(folder['disabled'], false),
|
71
98
|
}
|
72
99
|
end
|
73
100
|
|
@@ -99,7 +126,15 @@ module VagrantPlugins
|
|
99
126
|
config[:machines] << item
|
100
127
|
end
|
101
128
|
|
102
|
-
return config
|
129
|
+
return self.replace_vars(config)
|
130
|
+
end
|
131
|
+
|
132
|
+
|
133
|
+
def coalesce(*args)
|
134
|
+
args.each do |val|
|
135
|
+
next if val.nil?
|
136
|
+
return val
|
137
|
+
end
|
103
138
|
end
|
104
139
|
|
105
140
|
end
|
data/lib/vagrant-dotvm/dotvm.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-dotvm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Krzysztof Magosa
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-07-
|
11
|
+
date: 2015-07-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|