vagrant-dotvm 0.7.0 → 0.8.0

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: 58d6bfd4a6cefbe7de781b6ec3a0fe8886b11cc2
4
- data.tar.gz: 12cc9974690ab4b28ce14008c148a881131b567d
3
+ metadata.gz: debbbcde749af67762470debc868aa2f2d29dd38
4
+ data.tar.gz: cd4270123ac9fed8511cb028f38a94cddbe99f26
5
5
  SHA512:
6
- metadata.gz: bc90c2ccab04fe97f7ad9f20463b89a65270364215faaffe4a66c095a97bb6648ab84693f156532c9ccf54b98f01513c849a14521907fd9d210970e587c086da
7
- data.tar.gz: fcba7dade55d13f32eaf49cac6bef88b24b729c9e241fe7779c8bba6e6d076e53375a1dd3409a05bfd31c111ce1576cd28f66e19f2f42cfb1f3a5370c1bb7735
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
- Where it makes sense you can use %project.path% variable which will be replaced with
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.path%/bootstrap.sh"
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
- value = value.dup()
16
-
17
- @vars.each do |key, val|
18
- pattern = '%' + key + '%'
19
- value.gsub! pattern, val
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 value
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'] ||= false,
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'] || DEFAULT_NET,
71
+ :net => self.coalesce(net['net'], DEFAULT_NET),
47
72
  :type => net['type'],
48
73
  :ip => net['ip'],
49
- :mask => net['mask'] || net['netmask'] || DEFAULT_NETMASK,
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 => self.replace_vars(prv['source']),
82
+ :source => prv['source'],
58
83
  :destination => prv['destination'],
59
- :path => self.replace_vars(prv['path']),
60
- :module_path => self.replace_vars(prv['module_path']),
61
- :manifests_path => self.replace_vars(prv['manifests_path']),
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 => self.replace_vars(folder['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
@@ -18,7 +18,8 @@ module VagrantPlugins
18
18
  yaml = YAML::load(File.read(fname))
19
19
 
20
20
  vars = {
21
- 'project.path' => File.dirname(fname),
21
+ 'project.host' => File.dirname(fname),
22
+ 'project.guest' => '/dotvm/project',
22
23
  }
23
24
 
24
25
  ENV.each_pair do |name, value|
@@ -1,5 +1,5 @@
1
1
  module VagrantPlugins
2
2
  module Dotvm
3
- VERSION = "0.7.0"
3
+ VERSION = "0.8.0"
4
4
  end
5
5
  end
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.7.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-07 00:00:00.000000000 Z
11
+ date: 2015-07-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler