vagrant-config_builder 0.11.0 → 0.12.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/CHANGELOG +20 -0
- data/README.markdown +73 -29
- data/lib/config_builder/loader/yaml.rb +1 -1
- data/lib/config_builder/loader/yaml_erb.rb +24 -0
- data/lib/config_builder/loader.rb +1 -0
- data/lib/config_builder/model/provider/libvirt.rb +108 -0
- data/lib/config_builder/model/provider/vmware.rb +40 -0
- data/lib/config_builder/model/provider/vmware_fusion.rb +3 -31
- data/lib/config_builder/model/provider/vmware_workstation.rb +8 -0
- data/lib/config_builder/model/provider/vsphere.rb +30 -0
- data/lib/config_builder/model/provisioner/file.rb +24 -0
- data/lib/config_builder/model.rb +4 -0
- data/lib/config_builder/version.rb +1 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d978845f673cd4fd8fee29c4baa0976fba50b612
|
4
|
+
data.tar.gz: 16164ce3af929e4005c44b8725e9da99528799be
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 47df11d730c5af000107adf333349a41aa35c53f35d9b02eacea19a5a768e031f11fc636f0f25563e47000231d94fbed2bac7b59083f4b8b8acd9c1f805aefa7
|
7
|
+
data.tar.gz: ebb29afcc5e993b0ab1379f73c811bb86d82852caa2ae163ac49a2646cf9aa61a5d155e19a81be7636a538cd4106e52f522f6af495740174204f6cdbdee21bc2
|
data/CHANGELOG
CHANGED
@@ -1,6 +1,26 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
=========
|
3
3
|
|
4
|
+
0.12.0
|
5
|
+
------
|
6
|
+
|
7
|
+
2014-10-07
|
8
|
+
|
9
|
+
This is a backwards feature release.
|
10
|
+
|
11
|
+
* (GH-22) Support for VMware Workstation providers.
|
12
|
+
|
13
|
+
* (GH-24) New YAML loader which pre-processes data using ERB to enable
|
14
|
+
dynamic interpolation of values.
|
15
|
+
|
16
|
+
* (GH-25) Support for VMware vSphere providers.
|
17
|
+
|
18
|
+
* (GH-28) Support for libvirt providers.
|
19
|
+
|
20
|
+
* Support for the file provisioner.
|
21
|
+
|
22
|
+
Thanks to Nan Liu and Lukas Stanek for their contributions to this release.
|
23
|
+
|
4
24
|
0.11.0
|
5
25
|
------
|
6
26
|
|
data/README.markdown
CHANGED
@@ -19,44 +19,88 @@ for clarity.
|
|
19
19
|
|
20
20
|
#### Directory structure
|
21
21
|
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
22
|
+
```shell
|
23
|
+
.
|
24
|
+
├── config
|
25
|
+
│ ├── roles.yaml
|
26
|
+
│ └── vms.yaml
|
27
|
+
└── Vagrantfile
|
28
|
+
```
|
27
29
|
|
28
30
|
#### Vagrantfile
|
29
31
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
For pure yaml configurations, use yaml loader:
|
33
|
+
```ruby
|
34
|
+
require 'config_builder'
|
35
|
+
Vagrant.configure('2', &ConfigBuilder.load(
|
36
|
+
:yaml,
|
37
|
+
:yamldir,
|
38
|
+
File.expand_path('../config', __FILE__)
|
39
|
+
))
|
40
|
+
```
|
41
|
+
|
42
|
+
For yaml erb configurations, use yaml_erb loader:
|
43
|
+
```ruby
|
44
|
+
require 'config_builder'
|
45
|
+
Vagrant.configure('2', &ConfigBuilder.load(
|
46
|
+
:yaml_erb,
|
47
|
+
:yamldir,
|
48
|
+
File.expand_path('../config', __FILE__)
|
49
|
+
))
|
50
|
+
```
|
51
|
+
|
52
|
+
The yaml_erb loader would allow configuration such as:
|
53
|
+
```yaml
|
54
|
+
---
|
55
|
+
roles:
|
56
|
+
puppet_apply:
|
57
|
+
provisioners:
|
58
|
+
- type: puppet
|
59
|
+
manifests_path: 'tests'
|
60
|
+
module_path: 'spec/fixtures/modules'
|
61
|
+
manifest_file: <%= ENV['VAGRANT_MANIFEST'] || 'init.pp' %>
|
62
|
+
```
|
36
63
|
|
37
64
|
#### config/roles.yaml
|
38
65
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
66
|
+
```yaml
|
67
|
+
---
|
68
|
+
boxes:
|
69
|
+
centos-65-x64: http://puppet-vagrant-boxes.puppetlabs.com/centos-65-x64-virtualbox-puppet.box
|
70
|
+
debian-73-x64: http://puppet-vagrant-boxes.puppetlabs.com/debian-73-x64-virtualbox-puppet.box
|
71
|
+
roles:
|
72
|
+
bigvm:
|
73
|
+
provider:
|
74
|
+
type: virtualbox
|
75
|
+
customize: [[modifyvm, !ruby/sym id, '--memory', 1024]]
|
76
|
+
synced_folders:
|
77
|
+
- host_path: '.'
|
78
|
+
guest_path: '/vagrant'
|
79
|
+
disabled: true
|
80
|
+
smallvm:
|
81
|
+
provider:
|
82
|
+
type: vmware
|
83
|
+
vmx:
|
84
|
+
memsize: 512
|
85
|
+
numvcpus: 1
|
86
|
+
```
|
45
87
|
|
46
88
|
#### config/vms.yaml
|
47
89
|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
90
|
+
```yaml
|
91
|
+
---
|
92
|
+
vms:
|
93
|
+
-
|
94
|
+
name: db
|
95
|
+
private_networks: [ {ip: '10.20.1.2'} ]
|
96
|
+
box: centos-65-x64
|
97
|
+
hostname: db.puppetlabs.vm
|
98
|
+
roles: bigvm
|
99
|
+
-
|
100
|
+
name: web
|
101
|
+
private_networks: [ {ip: '10.20.1.3'} ]
|
102
|
+
box: debian-73-x64
|
103
|
+
```
|
60
104
|
|
61
105
|
Installation
|
62
106
|
------------
|
@@ -0,0 +1,24 @@
|
|
1
|
+
require 'erb'
|
2
|
+
|
3
|
+
class ConfigBuilder::Loader::YAML_ERB < ConfigBuilder::Loader::YAML
|
4
|
+
|
5
|
+
# Load configuration from a YAML file with ERB interpolation first
|
6
|
+
#
|
7
|
+
# @param file_path [String]
|
8
|
+
#
|
9
|
+
# @example the following config file will be processed by ERB first so it can
|
10
|
+
# determine whether to use the environment variable 'VAGRANT_MANIFEST' or the
|
11
|
+
# default value 'init.pp' for the puppet manifest file.
|
12
|
+
#
|
13
|
+
# ---
|
14
|
+
# provisioner:
|
15
|
+
# - type: puppet
|
16
|
+
# manifest_file: <%= ENV['VAGRANT_MANIFEST'] || 'init.pp' >
|
17
|
+
#
|
18
|
+
# @return [Hash]
|
19
|
+
def yamlfile(file_path)
|
20
|
+
::YAML.load(::ERB.new(File.read(file_path)).result)
|
21
|
+
end
|
22
|
+
|
23
|
+
ConfigBuilder::Loader.register(:yaml_erb, self)
|
24
|
+
end
|
@@ -0,0 +1,108 @@
|
|
1
|
+
# @see http://github.com/pradels/vagrant-libvirt
|
2
|
+
class ConfigBuilder::Model::Provider::Libvirt < ConfigBuilder::Model::Base
|
3
|
+
|
4
|
+
# @!attribute [rw] uri
|
5
|
+
# @return [String] Manually specify URI
|
6
|
+
def_model_attribute :uri
|
7
|
+
|
8
|
+
# @!attribute [rw] driver
|
9
|
+
# @return [String] A hypervisor name to access via Libvirt.
|
10
|
+
def_model_attribute :driver
|
11
|
+
|
12
|
+
# @!attribute [rw] host
|
13
|
+
# @return [String] The name of the server, where libvirtd is running.
|
14
|
+
def_model_attribute :host
|
15
|
+
|
16
|
+
# @!attribute [rw] connect_via_ssh
|
17
|
+
# @return [String] If use ssh tunnel to connect to Libvirt.
|
18
|
+
def_model_attribute :connect_via_ssh
|
19
|
+
|
20
|
+
# @!attribute [rw] socket
|
21
|
+
# @return [String] Path towards the libvirt socket
|
22
|
+
def_model_attribute :socket
|
23
|
+
|
24
|
+
# @!attribute [rw] username
|
25
|
+
# @return [String] The username to access Libvirt.
|
26
|
+
def_model_attribute :username
|
27
|
+
|
28
|
+
# @!attribute [rw] password
|
29
|
+
# @return [String] Password for Libvirt connection.
|
30
|
+
def_model_attribute :password
|
31
|
+
|
32
|
+
# @!attribute [rw] id_ssh_key_file
|
33
|
+
# @return [String] ID SSH key file
|
34
|
+
def_model_attribute :id_ssh_key_file
|
35
|
+
|
36
|
+
# @!attribute [rw] storage_pool_name
|
37
|
+
# @return [String] Libvirt storage pool name, where box image and instance
|
38
|
+
# snapshots will be stored.
|
39
|
+
def_model_attribute :storage_pool_name
|
40
|
+
|
41
|
+
# @!attribute [rw] random_hostname
|
42
|
+
# @return [String] Turn on to prevent hostname conflicts
|
43
|
+
def_model_attribute :random_hostname
|
44
|
+
|
45
|
+
# @!attribute [rw] management_network_name
|
46
|
+
# @return [String] Libvirt default network name
|
47
|
+
def_model_attribute :management_network_name
|
48
|
+
|
49
|
+
# @!attribute [rw] management_network_address
|
50
|
+
# @return [String] Libvirt default network address
|
51
|
+
def_model_attribute :management_network_address
|
52
|
+
|
53
|
+
# @!attribute [rw] default_prefix
|
54
|
+
# @return [String] Default host prefix (alternative to use project folder
|
55
|
+
# name)
|
56
|
+
def_model_attribute :default_prefix
|
57
|
+
|
58
|
+
# Domain specific settings used while creating new domain.
|
59
|
+
def_model_attribute :memory
|
60
|
+
def_model_attribute :cpus
|
61
|
+
def_model_attribute :cpu_mode
|
62
|
+
def_model_attribute :disk_bus
|
63
|
+
def_model_attribute :nested
|
64
|
+
def_model_attribute :volume_cache
|
65
|
+
def_model_attribute :kernel
|
66
|
+
def_model_attribute :cmd_line
|
67
|
+
def_model_attribute :initrd
|
68
|
+
|
69
|
+
def initialize
|
70
|
+
@defaults = {}
|
71
|
+
end
|
72
|
+
|
73
|
+
def to_proc
|
74
|
+
Proc.new do |vm_config|
|
75
|
+
vm_config.provider 'libvirt' do |vb_config|
|
76
|
+
|
77
|
+
with_attr(:uri) { |val| vb_config.host = val }
|
78
|
+
with_attr(:driver) { |val| vb_config.host = val }
|
79
|
+
with_attr(:host) { |val| vb_config.host = val }
|
80
|
+
with_attr(:connect_via_ssh) { |val| vb_config.connect_via_ssh = val }
|
81
|
+
with_attr(:socket) { |val| vb_config.socket = val }
|
82
|
+
with_attr(:username) { |val| vb_config.username = val }
|
83
|
+
with_attr(:password) { |val| vb_config.username = val }
|
84
|
+
with_attr(:id_ssh_key_file) { |val| vb_config.id_ssh_key_file = val }
|
85
|
+
with_attr(:storage_pool_name) { |val| vb_config.storage_pool_name = val }
|
86
|
+
with_attr(:random_hostname) { |val| vb_config.random_hostname = val }
|
87
|
+
with_attr(:management_network_name) { |val|
|
88
|
+
vb_config.username = val
|
89
|
+
}
|
90
|
+
with_attr(:management_network_address) { |val|
|
91
|
+
vb_config.username = val
|
92
|
+
}
|
93
|
+
with_attr(:default_prefix) { |val| vb_config.username = val }
|
94
|
+
with_attr(:memory) { |val| vb_config.memory = val }
|
95
|
+
with_attr(:cpus) { |val| vb_config.cpus = val }
|
96
|
+
with_attr(:cpu_mode) { |val| vb_config.cpu_mode = val }
|
97
|
+
with_attr(:disk_bus) { |val| vb_config.disk_bus = val }
|
98
|
+
with_attr(:nested) { |val| vb_config.nested = val }
|
99
|
+
with_attr(:volume_cache) { |val| vb_config.volume_cache = val }
|
100
|
+
with_attr(:kernel) { |val| vb_config.kernel = val }
|
101
|
+
with_attr(:cmd_line) { |val| vb_config.cmd_line = val }
|
102
|
+
with_attr(:initrd) { |val| vb_config.initrd = val }
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
ConfigBuilder::Model::Provider.register('libvirt', self)
|
108
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
# @see http://docs.vagrantup.com/v2/vmware/configuration.html
|
2
|
+
class ConfigBuilder::Model::Provider::VMware < ConfigBuilder::Model::Base
|
3
|
+
|
4
|
+
# @!attribute [rw] vmx
|
5
|
+
# @return [Hash<String, String>] A hash of VMX options for the given VM
|
6
|
+
# @example
|
7
|
+
# model.vmx = {
|
8
|
+
# 'memsize' => '1024',
|
9
|
+
# 'numvcpus' => '2',
|
10
|
+
# }
|
11
|
+
def_model_attribute :vmx
|
12
|
+
|
13
|
+
# @!attribute [rw] gui
|
14
|
+
# @return [Boolean] Whether the GUI should be launched when the VM is created
|
15
|
+
def_model_attribute :gui
|
16
|
+
|
17
|
+
def initialize
|
18
|
+
@defaults = {
|
19
|
+
:gui => false,
|
20
|
+
:vmx => {},
|
21
|
+
}
|
22
|
+
|
23
|
+
@providers ||= %w[vmware_fusion vmware_workstation]
|
24
|
+
end
|
25
|
+
|
26
|
+
def to_proc
|
27
|
+
Proc.new do |vm_config|
|
28
|
+
@providers.each do |vmware_provider|
|
29
|
+
vm_config.provider vmware_provider do |config|
|
30
|
+
config.gui = attr(:gui)
|
31
|
+
attr(:vmx).each_pair do |key, value|
|
32
|
+
config.vmx[key] = value
|
33
|
+
end
|
34
|
+
end
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
ConfigBuilder::Model::Provider.register('vmware', self)
|
40
|
+
end
|
@@ -1,35 +1,7 @@
|
|
1
|
-
|
2
|
-
class ConfigBuilder::Model::Provider::VMwareFusion < ConfigBuilder::Model::Base
|
3
|
-
|
4
|
-
# @!attribute [rw] vmx
|
5
|
-
# @return [Hash<String, String>] A hash of VMX options for the given VM
|
6
|
-
# @example
|
7
|
-
# model.vmx = {
|
8
|
-
# 'memsize' => '1024',
|
9
|
-
# 'numvcpus' => '2',
|
10
|
-
# }
|
11
|
-
def_model_attribute :vmx
|
12
|
-
|
13
|
-
# @!attribute [rw] gui
|
14
|
-
# @return [Boolean] Whether the GUI should be launched when the VM is created
|
15
|
-
def_model_attribute :gui
|
16
|
-
|
1
|
+
class ConfigBuilder::Model::Provider::VMwareFusion < ConfigBuilder::Model::Provider::VMware
|
17
2
|
def initialize
|
18
|
-
@
|
19
|
-
|
20
|
-
:vmx => {},
|
21
|
-
}
|
22
|
-
end
|
23
|
-
|
24
|
-
def to_proc
|
25
|
-
Proc.new do |vm_config|
|
26
|
-
vm_config.provider 'vmware_fusion' do |fusion_config|
|
27
|
-
fusion_config.gui = attr(:gui)
|
28
|
-
attr(:vmx).each_pair do |key, value|
|
29
|
-
fusion_config.vmx[key] = value
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
3
|
+
@providers = %w[vmware_fusion]
|
4
|
+
super
|
33
5
|
end
|
34
6
|
|
35
7
|
ConfigBuilder::Model::Provider.register('vmware_fusion', self)
|
@@ -0,0 +1,30 @@
|
|
1
|
+
# @see https://github.com/nsidc/vagrant-vsphere
|
2
|
+
class ConfigBuilder::Model::Provider::Vsphere< ConfigBuilder::Model::Base
|
3
|
+
|
4
|
+
VSPHERE_ATTRIBUTES = [ :host, :insecure, :user, :password, :data_center_name, :compute_resource_name, :resource_pool_name, :clone_from_vm, :template_name, :name, :vm_base_path, :customization_spec_name, :data_store_name, :linked_clone, :proxy_host, :proxy_port, :vlan ]
|
5
|
+
|
6
|
+
# @!attribute [rw]
|
7
|
+
# The mandatory attributes will be verified by vagrant-vsphere
|
8
|
+
# @see https://github.com/nsidc/vagrant-vsphere#configuration
|
9
|
+
VSPHERE_ATTRIBUTES.each do |key|
|
10
|
+
def_model_attribute attr
|
11
|
+
end
|
12
|
+
|
13
|
+
def initialize
|
14
|
+
@defaults = {
|
15
|
+
:insecure => false,
|
16
|
+
}
|
17
|
+
end
|
18
|
+
|
19
|
+
def to_proc
|
20
|
+
Proc.new do |vm_config|
|
21
|
+
vm_config.provider 'vsphere' do |config|
|
22
|
+
VSPHERE_ATTRIBUTES.each do |key|
|
23
|
+
config.send("#{key}=", attr(key)) if attr(key)
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
ConfigBuilder::Model::Provider.register('vsphere', self)
|
30
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# @see http://docs.vagrantup.com/v2/provisioning/file.html
|
2
|
+
class ConfigBuilder::Model::Provisioner::File < ConfigBuilder::Model::Base
|
3
|
+
# @!attribute [rw] source
|
4
|
+
# @return [Source] Is the local path of the file to be uploaded.
|
5
|
+
def_model_attribute :source
|
6
|
+
|
7
|
+
# @!attribute [rw] destination
|
8
|
+
# @return [Source] Is the remote path on the guest machine where the file
|
9
|
+
# will be uploaded to. The file is uploaded as the SSH user over SCP, so
|
10
|
+
# this location must be writable to that user. The SSH user can be
|
11
|
+
# determined by running vagrant ssh-config, and defaults to "vagrant".
|
12
|
+
def_model_attribute :destination
|
13
|
+
|
14
|
+
def to_proc
|
15
|
+
Proc.new do |vm_config|
|
16
|
+
vm_config.provision :file do |file_config|
|
17
|
+
with_attr(:source) { |val| file_config.source = val }
|
18
|
+
with_attr(:destination) { |val| file_config.destination = val }
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
ConfigBuilder::Model::Provisioner.register('file', self)
|
24
|
+
end
|
data/lib/config_builder/model.rb
CHANGED
@@ -39,7 +39,11 @@ module ConfigBuilder
|
|
39
39
|
end
|
40
40
|
|
41
41
|
require 'config_builder/model/provider/virtualbox'
|
42
|
+
require 'config_builder/model/provider/vmware'
|
42
43
|
require 'config_builder/model/provider/vmware_fusion'
|
44
|
+
require 'config_builder/model/provider/vmware_workstation'
|
45
|
+
require 'config_builder/model/provider/libvirt'
|
46
|
+
require 'config_builder/model/provider/vsphere'
|
43
47
|
end
|
44
48
|
|
45
49
|
module Provisioner
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
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.12.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Adrien Thebo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-08 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deep_merge
|
@@ -64,12 +64,18 @@ files:
|
|
64
64
|
- lib/config_builder/filter_stack.rb
|
65
65
|
- lib/config_builder/loader.rb
|
66
66
|
- lib/config_builder/loader/yaml.rb
|
67
|
+
- lib/config_builder/loader/yaml_erb.rb
|
67
68
|
- lib/config_builder/model.rb
|
68
69
|
- lib/config_builder/model/base.rb
|
69
70
|
- lib/config_builder/model/network/forwarded_port.rb
|
70
71
|
- lib/config_builder/model/network/private_network.rb
|
72
|
+
- lib/config_builder/model/provider/libvirt.rb
|
71
73
|
- lib/config_builder/model/provider/virtualbox.rb
|
74
|
+
- lib/config_builder/model/provider/vmware.rb
|
72
75
|
- lib/config_builder/model/provider/vmware_fusion.rb
|
76
|
+
- lib/config_builder/model/provider/vmware_workstation.rb
|
77
|
+
- lib/config_builder/model/provider/vsphere.rb
|
78
|
+
- lib/config_builder/model/provisioner/file.rb
|
73
79
|
- lib/config_builder/model/provisioner/puppet.rb
|
74
80
|
- lib/config_builder/model/provisioner/puppet_server.rb
|
75
81
|
- lib/config_builder/model/provisioner/shell.rb
|