vagrant-helpers 1.0.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 +7 -0
- data/lib/vagrant-helpers.rb +170 -0
- metadata +72 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: cd81617a53e41a08e2c32ac78d038fbad119efe8
|
4
|
+
data.tar.gz: 7099e2f502c6ecd129c97403ebfc787ce59264c2
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: caf8cfba03e3554eeb40fcd73ee9aa4d5f6ef8b4b2fb58e9fb92d81146c669e02c2be8a7d517bd11f3e9b382dee80326cadcb7e40f8231455c52b971fb05a282
|
7
|
+
data.tar.gz: 09bd98544dd64a28f02917eefe8b225a2a4201dd01bf395c1970b5cee4afecf06fc769480ce07ffaeef90a91215b16d42466b4a96c6c1933072682e76dd2bb5c
|
@@ -0,0 +1,170 @@
|
|
1
|
+
require 'vagrant'
|
2
|
+
require 'yaml'
|
3
|
+
|
4
|
+
module VagrantPlugins
|
5
|
+
module Helpers
|
6
|
+
class MissingOptsFileError < ::Vagrant::Errors::VagrantError
|
7
|
+
def initialize(filename)
|
8
|
+
@filename = filename
|
9
|
+
super
|
10
|
+
end
|
11
|
+
|
12
|
+
def error_message
|
13
|
+
"Cannot find opts file `#{@filename}`!"
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
17
|
+
class MissingVMBoxOptionError < ::Vagrant::Errors::VagrantError
|
18
|
+
def error_message
|
19
|
+
"Missing vm.box option in `opts.yaml` file!"
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
class MissingVMNameOptionError < Vagrant::Errors::VagrantError
|
24
|
+
def error_message
|
25
|
+
"Missing vm.name option in `opts.yaml` file!"
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
def self.get_opts(dir)
|
30
|
+
filename = ::File.join dir, 'opts.yaml'
|
31
|
+
if ::File.exists? filename
|
32
|
+
::YAML.load ::File.open filename
|
33
|
+
else
|
34
|
+
raise MissingOptsFileError.new filename
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def self.set_vm_box(config, opts)
|
39
|
+
vm_box = opts.fetch('vm', {}).fetch('box', nil)
|
40
|
+
if vm_box.nil?
|
41
|
+
raise MissingVMBoxOptionError.new
|
42
|
+
end
|
43
|
+
|
44
|
+
config.vm.box = vm_box
|
45
|
+
end
|
46
|
+
|
47
|
+
def self.set_vm_name(config, opts)
|
48
|
+
vm_name = opts.fetch('vm', {}).fetch('name', nil)
|
49
|
+
if vm_name.nil?
|
50
|
+
raise MissingVMNameOptionError.new
|
51
|
+
end
|
52
|
+
|
53
|
+
config.vm.provider :virtualbox do |v|
|
54
|
+
v.name = vm_name
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def self.set_vm_memory(config, opts)
|
59
|
+
vm_memory = opts.fetch('vm', {}).fetch('memory', 512)
|
60
|
+
|
61
|
+
config.vm.provider :virtualbox do |v|
|
62
|
+
v.memory = vm_memory
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
def self.set_vm_cpus(config, opts)
|
67
|
+
vm_cpus = opts.fetch('vm', {}).fetch('cpus', 1)
|
68
|
+
|
69
|
+
config.vm.provider :virtualbox do |v|
|
70
|
+
v.cpus = vm_cpus
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def self.set_vm_hostname(config, opts)
|
75
|
+
vm_hostname = opts.fetch('vm', {}).fetch('hostname', nil)
|
76
|
+
|
77
|
+
unless vm_hostname.nil?
|
78
|
+
config.vm.hostname = vm_hostname
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def self.set_vm_forwarded_ports(config, opts)
|
83
|
+
vm_forwarded_ports = opts.fetch('vm', {}).fetch('network', {}).fetch('forwarded_ports', [])
|
84
|
+
|
85
|
+
vm_forwarded_ports.each do |options|
|
86
|
+
prepared_options = ::Hash[options.map { |(k, v)| [k.to_sym, v] }]
|
87
|
+
config.vm.network :forwarded_port, **prepared_options
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
def self.set_vm_public_networks(config, opts)
|
92
|
+
vm_public_networks = opts.fetch('vm', {}).fetch('network', {}).fetch('public', [])
|
93
|
+
|
94
|
+
vm_public_networks.each do |options|
|
95
|
+
prepared_options = ::Hash[options.map { |(k, v)| [k.to_sym, v] }]
|
96
|
+
config.vm.network :public_network, **prepared_options
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
def self.set_vm_private_networks(config, opts)
|
101
|
+
vm_private_networks = opts.fetch('vm', {}).fetch('network', {}).fetch('private', [])
|
102
|
+
|
103
|
+
vm_private_networks.each do |options|
|
104
|
+
prepared_options = ::Hash[options.map { |(k, v)| [k.to_sym, v] }]
|
105
|
+
config.vm.network :private_network, **prepared_options
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
def self.set_vm_synced_folders(config, opts)
|
110
|
+
vm_synced_folders = opts.fetch('vm', {}).fetch('synced_folders', [])
|
111
|
+
|
112
|
+
vm_synced_folders.each do |entry|
|
113
|
+
prepared_options = ::Hash[entry.fetch('opts', {}).map { |(k,v)| [k.to_sym, v] }]
|
114
|
+
config.vm.synced_folder entry['host'], entry['guest'], **prepared_options
|
115
|
+
end
|
116
|
+
end
|
117
|
+
|
118
|
+
def self.set_vm_extra_storage(config, opts)
|
119
|
+
vm_storage_drives = opts.fetch('vm', {}).fetch('storage', [])
|
120
|
+
|
121
|
+
config.vm.provider :virtualbox do |v|
|
122
|
+
vm_storage_drives.each_with_index do |entry, ndx|
|
123
|
+
unless ::File.exists? entry['filename']
|
124
|
+
# create hdd
|
125
|
+
v.customize [
|
126
|
+
'createhd',
|
127
|
+
'--filename',
|
128
|
+
entry['filename'],
|
129
|
+
'--size',
|
130
|
+
entry['size']
|
131
|
+
]
|
132
|
+
end
|
133
|
+
|
134
|
+
# attach hdd
|
135
|
+
v.customize [
|
136
|
+
'storageattach',
|
137
|
+
:id,
|
138
|
+
'--storagectl',
|
139
|
+
'SATAController',
|
140
|
+
'--port',
|
141
|
+
ndx + 1,
|
142
|
+
'--device',
|
143
|
+
0,
|
144
|
+
'--type',
|
145
|
+
'hdd',
|
146
|
+
'--medium',
|
147
|
+
entry['filename']
|
148
|
+
]
|
149
|
+
end
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
153
|
+
def self.setup(dir)
|
154
|
+
::Vagrant.configure(2) do |config|
|
155
|
+
opts = get_opts dir
|
156
|
+
|
157
|
+
set_vm_box config, opts
|
158
|
+
set_vm_name config, opts
|
159
|
+
set_vm_memory config, opts
|
160
|
+
set_vm_cpus config, opts
|
161
|
+
set_vm_hostname config, opts
|
162
|
+
set_vm_forwarded_ports config, opts
|
163
|
+
set_vm_public_networks config, opts
|
164
|
+
set_vm_private_networks config, opts
|
165
|
+
set_vm_synced_folders config, opts
|
166
|
+
set_vm_extra_storage config, opts
|
167
|
+
end
|
168
|
+
end
|
169
|
+
end
|
170
|
+
end
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: vagrant-helpers
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Alexander Pyatkin
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-01-10 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
description: Vagrant helpers plugin
|
42
|
+
email: aspyatkin@gmail.com
|
43
|
+
executables: []
|
44
|
+
extensions: []
|
45
|
+
extra_rdoc_files: []
|
46
|
+
files:
|
47
|
+
- lib/vagrant-helpers.rb
|
48
|
+
homepage: http://github.com/aspyatkin/vagrant-helpers
|
49
|
+
licenses:
|
50
|
+
- MIT
|
51
|
+
metadata: {}
|
52
|
+
post_install_message:
|
53
|
+
rdoc_options: []
|
54
|
+
require_paths:
|
55
|
+
- lib
|
56
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
version: '2.0'
|
61
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
62
|
+
requirements:
|
63
|
+
- - ">="
|
64
|
+
- !ruby/object:Gem::Version
|
65
|
+
version: '0'
|
66
|
+
requirements: []
|
67
|
+
rubyforge_project:
|
68
|
+
rubygems_version: 2.4.5.1
|
69
|
+
signing_key:
|
70
|
+
specification_version: 4
|
71
|
+
summary: Vagrant helpers
|
72
|
+
test_files: []
|