vagrant-helpers 1.3.1 → 1.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/vagrant-helpers.rb +59 -40
- 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: c65a2f2f9790f765452287bd0bbd9f77e2b02616
|
4
|
+
data.tar.gz: b458bee7e078148489bb796f10afd4c0340f799b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4694e1dd2fb3b51bb6ff4ac1fd1e31a286c957013e427c35184bd090377cdc87c047008f3a60dfa063ca620c2c7d03ccf4d0455251c8dd1051dad2197d765bdf
|
7
|
+
data.tar.gz: 91f2dfd6bc80cdf25c1c66cb25de4c403508b837d246a62bec241994e8757d5f1493016ecc89aef95a180b18b47f21d56811d2f177717c002162126c085d5182
|
data/lib/vagrant-helpers.rb
CHANGED
@@ -25,12 +25,18 @@ module VagrantPlugins
|
|
25
25
|
end
|
26
26
|
end
|
27
27
|
|
28
|
-
class MissingVMNameOptionError < Vagrant::Errors::VagrantError
|
28
|
+
class MissingVMNameOptionError < ::Vagrant::Errors::VagrantError
|
29
29
|
def error_message
|
30
30
|
"Missing vm.name option in `opts.yaml` file!"
|
31
31
|
end
|
32
32
|
end
|
33
33
|
|
34
|
+
class AmbiguousConfigurationError < ::Vagrant::Errors::VagrantError
|
35
|
+
def error_message
|
36
|
+
"Ambiguous configuration found in `opts.yaml` file! Specify either `vm` or `vms` key, not both of them!"
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
34
40
|
def self.get_opts(dir)
|
35
41
|
filename = ::File.expand_path(ENV['VAGRANT_HELPERS_OPTS'] || 'opts.yaml', dir)
|
36
42
|
if ::File.exists? filename
|
@@ -40,8 +46,7 @@ module VagrantPlugins
|
|
40
46
|
end
|
41
47
|
end
|
42
48
|
|
43
|
-
def self.set_vm_box(config,
|
44
|
-
vm_box = opts.fetch('vm', {}).fetch('box', nil)
|
49
|
+
def self.set_vm_box(config, vm_box)
|
45
50
|
if vm_box.nil?
|
46
51
|
raise MissingVMBoxOptionError.new
|
47
52
|
end
|
@@ -49,44 +54,35 @@ module VagrantPlugins
|
|
49
54
|
config.vm.box = vm_box
|
50
55
|
end
|
51
56
|
|
52
|
-
def self.set_vm_name(config,
|
53
|
-
vm_name = opts.fetch('vm', {}).fetch('name', nil)
|
57
|
+
def self.set_vm_name(config, vm_name)
|
54
58
|
if vm_name.nil?
|
55
59
|
raise MissingVMNameOptionError.new
|
56
60
|
end
|
57
61
|
|
58
62
|
config.vm.provider :virtualbox do |v|
|
59
|
-
|
63
|
+
v.name = vm_name
|
60
64
|
end
|
61
65
|
end
|
62
66
|
|
63
|
-
def self.set_vm_memory(config,
|
64
|
-
vm_memory = opts.fetch('vm', {}).fetch('memory', 512)
|
65
|
-
|
67
|
+
def self.set_vm_memory(config, vm_memory)
|
66
68
|
config.vm.provider :virtualbox do |v|
|
67
69
|
v.memory = vm_memory
|
68
70
|
end
|
69
71
|
end
|
70
72
|
|
71
|
-
def self.set_vm_cpus(config,
|
72
|
-
vm_cpus = opts.fetch('vm', {}).fetch('cpus', 1)
|
73
|
-
|
73
|
+
def self.set_vm_cpus(config, vm_cpus)
|
74
74
|
config.vm.provider :virtualbox do |v|
|
75
75
|
v.cpus = vm_cpus
|
76
76
|
end
|
77
77
|
end
|
78
78
|
|
79
|
-
def self.set_vm_hostname(config,
|
80
|
-
vm_hostname = opts.fetch('vm', {}).fetch('hostname', nil)
|
81
|
-
|
79
|
+
def self.set_vm_hostname(config, vm_hostname)
|
82
80
|
unless vm_hostname.nil?
|
83
81
|
config.vm.hostname = vm_hostname
|
84
82
|
end
|
85
83
|
end
|
86
84
|
|
87
|
-
def self.set_vm_forwarded_ports(config,
|
88
|
-
vm_forwarded_ports = opts.fetch('vm', {}).fetch('network', {}).fetch('forwarded_ports', [])
|
89
|
-
|
85
|
+
def self.set_vm_forwarded_ports(config, vm_forwarded_ports)
|
90
86
|
vm_forwarded_ports.each do |options|
|
91
87
|
prepared_options = ::Hash[options.map { |(k, v)| [k.to_sym, v] }]
|
92
88
|
config.vm.network :forwarded_port, **prepared_options
|
@@ -116,9 +112,7 @@ module VagrantPlugins
|
|
116
112
|
get_host_networks.any? { |host_network| host_network.eql? network_addr }
|
117
113
|
end
|
118
114
|
|
119
|
-
def self.set_vm_public_networks(config,
|
120
|
-
vm_public_networks = opts.fetch('vm', {}).fetch('network', {}).fetch('public', [])
|
121
|
-
|
115
|
+
def self.set_vm_public_networks(config, vm_public_networks)
|
122
116
|
network_list = []
|
123
117
|
|
124
118
|
vm_public_networks.each do |options|
|
@@ -139,27 +133,21 @@ module VagrantPlugins
|
|
139
133
|
end
|
140
134
|
end
|
141
135
|
|
142
|
-
def self.set_vm_private_networks(config,
|
143
|
-
vm_private_networks = opts.fetch('vm', {}).fetch('network', {}).fetch('private', [])
|
144
|
-
|
136
|
+
def self.set_vm_private_networks(config, vm_private_networks)
|
145
137
|
vm_private_networks.each do |options|
|
146
138
|
prepared_options = ::Hash[options.map { |(k, v)| [k.to_sym, v] }]
|
147
139
|
config.vm.network :private_network, **prepared_options
|
148
140
|
end
|
149
141
|
end
|
150
142
|
|
151
|
-
def self.set_vm_synced_folders(config,
|
152
|
-
vm_synced_folders = opts.fetch('vm', {}).fetch('synced_folders', [])
|
153
|
-
|
143
|
+
def self.set_vm_synced_folders(config, vm_synced_folders)
|
154
144
|
vm_synced_folders.each do |entry|
|
155
145
|
prepared_options = ::Hash[entry.fetch('opts', {}).map { |(k,v)| [k.to_sym, v] }]
|
156
146
|
config.vm.synced_folder entry['host'], entry['guest'], **prepared_options
|
157
147
|
end
|
158
148
|
end
|
159
149
|
|
160
|
-
def self.set_vm_extra_storage(config,
|
161
|
-
vm_storage_drives = opts.fetch('vm', {}).fetch('storage', [])
|
162
|
-
|
150
|
+
def self.set_vm_extra_storage(config, vm_storage_drives)
|
163
151
|
config.vm.provider :virtualbox do |v|
|
164
152
|
vm_storage_drives.each_with_index do |entry, ndx|
|
165
153
|
unless ::File.exists? entry['filename']
|
@@ -192,6 +180,36 @@ module VagrantPlugins
|
|
192
180
|
end
|
193
181
|
end
|
194
182
|
|
183
|
+
def self.each_vm(opts)
|
184
|
+
if opts.has_key?('vm') and opts.has_key?('vms')
|
185
|
+
raise AmbiguousConfigurationError.new
|
186
|
+
end
|
187
|
+
|
188
|
+
if opts.has_key? 'vm'
|
189
|
+
vm_opts = opts['vm']
|
190
|
+
yield nil, vm_opts
|
191
|
+
end
|
192
|
+
|
193
|
+
if opts.has_key? 'vms'
|
194
|
+
opts['vms'].each do |name, vm_opts|
|
195
|
+
yield name, vm_opts
|
196
|
+
end
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
200
|
+
def self.setup_instance(config, vm_opts)
|
201
|
+
set_vm_box config, vm_opts.fetch('box', nil)
|
202
|
+
set_vm_name config, vm_opts.fetch('name', nil)
|
203
|
+
set_vm_memory config, vm_opts.fetch('memory', 512)
|
204
|
+
set_vm_cpus config, vm_opts.fetch('cpus', 1)
|
205
|
+
set_vm_hostname config, vm_opts.fetch('hostname', nil)
|
206
|
+
set_vm_forwarded_ports config, vm_opts.fetch('network', {}).fetch('forwarded_ports', [])
|
207
|
+
set_vm_public_networks config, vm_opts.fetch('network', {}).fetch('public', [])
|
208
|
+
set_vm_private_networks config, vm_opts.fetch('network', {}).fetch('private', [])
|
209
|
+
set_vm_synced_folders config, vm_opts.fetch('synced_folders', [])
|
210
|
+
set_vm_extra_storage config, vm_opts.fetch('storage', [])
|
211
|
+
end
|
212
|
+
|
195
213
|
def self.setup(dir)
|
196
214
|
dotenv_filename = ::File.join dir, '.env'
|
197
215
|
::Dotenv.load
|
@@ -199,16 +217,17 @@ module VagrantPlugins
|
|
199
217
|
::Vagrant.configure(2) do |config|
|
200
218
|
opts = get_opts dir
|
201
219
|
|
202
|
-
|
203
|
-
|
204
|
-
|
205
|
-
|
206
|
-
|
207
|
-
|
208
|
-
|
209
|
-
|
210
|
-
|
211
|
-
|
220
|
+
each_vm(opts) do |name, vm_opts|
|
221
|
+
if name.nil?
|
222
|
+
# there is one instance only
|
223
|
+
setup_instance config, vm_opts
|
224
|
+
else
|
225
|
+
# there are several instances
|
226
|
+
config.vm.define name do |instance_config|
|
227
|
+
setup_instance instance_config, vm_opts
|
228
|
+
end
|
229
|
+
end
|
230
|
+
end
|
212
231
|
end
|
213
232
|
end
|
214
233
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-helpers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Pyatkin
|
@@ -93,7 +93,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
93
93
|
version: '0'
|
94
94
|
requirements: []
|
95
95
|
rubyforge_project:
|
96
|
-
rubygems_version: 2.
|
96
|
+
rubygems_version: 2.5.1
|
97
97
|
signing_key:
|
98
98
|
specification_version: 4
|
99
99
|
summary: Vagrant helpers
|