vagrant-config_builder 0.15.1 → 1.0.0.rc1
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/.travis.yml +18 -4
- data/CHANGELOG +44 -0
- data/Gemfile +3 -4
- data/lib/config_builder/model/base.rb +182 -8
- data/lib/config_builder/model/network/forwarded_port.rb +34 -13
- data/lib/config_builder/model/network/private_network.rb +17 -1
- data/lib/config_builder/model/network/public_network.rb +39 -0
- data/lib/config_builder/model/nfs.rb +33 -0
- data/lib/config_builder/model/provider/aws.rb +16 -39
- data/lib/config_builder/model/provider/azure.rb +11 -33
- data/lib/config_builder/model/provider/base.rb +37 -0
- data/lib/config_builder/model/provider/libvirt.rb +33 -39
- data/lib/config_builder/model/provider/openstack.rb +69 -0
- data/lib/config_builder/model/provider/openstack_plugin.rb +46 -0
- data/lib/config_builder/model/provider/softlayer.rb +85 -0
- data/lib/config_builder/model/provider/virtualbox.rb +84 -17
- data/lib/config_builder/model/provider/vmware.rb +6 -4
- data/lib/config_builder/model/provider/vsphere.rb +33 -15
- data/lib/config_builder/model/provisioner/base.rb +33 -0
- data/lib/config_builder/model/provisioner/file.rb +1 -10
- data/lib/config_builder/model/provisioner/puppet.rb +32 -22
- data/lib/config_builder/model/provisioner/puppet_server.rb +21 -15
- data/lib/config_builder/model/provisioner/shell.rb +28 -10
- data/lib/config_builder/model/root.rb +28 -4
- data/lib/config_builder/model/ssh.rb +29 -11
- data/lib/config_builder/model/synced_folder.rb +83 -14
- data/lib/config_builder/model/vm.rb +111 -52
- data/lib/config_builder/model/winrm.rb +27 -7
- data/lib/config_builder/model.rb +9 -1
- data/lib/config_builder/model_delegator.rb +5 -24
- data/lib/config_builder/version.rb +1 -1
- data/spec/integration/vagrant/root_config_spec.rb +89 -0
- data/spec/integration/vagrant/vm_config_spec.rb +101 -0
- data/spec/integration/vagrant/vm_provider_spec.rb +57 -0
- data/spec/integration/vagrant/vm_provisioner_spec.rb +90 -0
- data/spec/spec_helper.rb +6 -2
- data/spec/{config_builder → unit}/filter/boxes_spec.rb +0 -0
- data/spec/{config_builder → unit}/filter/roles_spec.rb +0 -0
- data/spec/{config_builder → unit}/loader/yaml_spec.rb +0 -0
- data/spec/unit/model/base_spec.rb +122 -0
- data/spec/{config_builder → unit}/model/provider/vmware_fusion_spec.rb +6 -5
- data/templates/locales/en.yml +4 -0
- metadata +33 -20
@@ -1,49 +1,59 @@
|
|
1
1
|
# @see http://docs.vagrantup.com/v2/provisioning/puppet_apply.html
|
2
|
-
class ConfigBuilder::Model::Provisioner::Puppet < ConfigBuilder::Model::Base
|
2
|
+
class ConfigBuilder::Model::Provisioner::Puppet < ConfigBuilder::Model::Provisioner::Base
|
3
|
+
|
4
|
+
# @!attribute [rw] binary_path
|
5
|
+
# @return [String] The path to Puppet's `bin` directory.
|
6
|
+
def_model_attribute :binary_path
|
3
7
|
|
4
8
|
# @!attribute [rw] manifests_path
|
5
9
|
# @return [String] The path to the puppet manifests.
|
6
|
-
|
10
|
+
def_model_attribute :manifests_path
|
7
11
|
|
8
12
|
# @!attribute [rw] manifest_file
|
9
13
|
# @return [String] The name of the manifest to apply
|
10
|
-
|
14
|
+
def_model_attribute :manifest_file
|
11
15
|
|
12
16
|
# @!attribute [rw] module_path
|
13
17
|
# @return [String] A colon separated set of filesystem paths for Puppet
|
14
|
-
|
18
|
+
def_model_attribute :module_path
|
15
19
|
|
16
20
|
# @!attribute [rw] facter
|
17
21
|
# @return [Hash] A hash of values to use as facts
|
18
|
-
|
22
|
+
def_model_attribute :facter
|
19
23
|
|
20
24
|
# @!attribute [rw] options
|
21
25
|
# @return [String] An arbitrary set of arguments for the `puppet` command
|
22
|
-
|
26
|
+
def_model_attribute :options
|
23
27
|
|
24
28
|
# @!attribute [rw] hiera_config_path
|
25
29
|
# @return [String] Path to the Hiera configuration file stored on the host
|
26
30
|
# @since 0.15.0
|
27
|
-
|
31
|
+
def_model_attribute :hiera_config_path
|
28
32
|
|
29
33
|
# @!attribute [rw] working_directory
|
30
34
|
# @return [String] Path in the guest that will be the working directory when Puppet is executed
|
31
35
|
# @since 0.15.0
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
36
|
+
def_model_attribute :working_directory
|
37
|
+
|
38
|
+
# @!attribute [rw] environment
|
39
|
+
# @return [String] Name of the Puppet environment.
|
40
|
+
def_model_attribute :environment
|
41
|
+
|
42
|
+
# @!attribute [rw] environment_path
|
43
|
+
# @return [String] Path to the directory that contains environment files on the host disk.
|
44
|
+
def_model_attribute :environment_path
|
45
|
+
|
46
|
+
# @!attribute [rw] synced_folder_type
|
47
|
+
# @return [String] The type of synced folders to use when sharing the data required for the provisioner to work properly.
|
48
|
+
def_model_attribute :synced_folder_type
|
49
|
+
|
50
|
+
# @!attribute [rw] synced_folder_args
|
51
|
+
# @return [Array<String>] Arguments that are passed to the folder sync.
|
52
|
+
def_model_attribute :synced_folder_args
|
53
|
+
|
54
|
+
# @!attribute [rw] temp_dir
|
55
|
+
# @return [String] The directory where the data associated with the Puppet run will be stored on the guest machine.
|
56
|
+
def_model_attribute :temp_dir
|
47
57
|
|
48
58
|
ConfigBuilder::Model::Provisioner.register('puppet', self)
|
49
59
|
end
|
@@ -1,27 +1,33 @@
|
|
1
1
|
# @see http://docs.vagrantup.com/v2/provisioning/puppet_agent.html
|
2
|
-
class ConfigBuilder::Model::Provisioner::PuppetServer < ConfigBuilder::Model::Base
|
2
|
+
class ConfigBuilder::Model::Provisioner::PuppetServer < ConfigBuilder::Model::Provisioner::Base
|
3
|
+
|
4
|
+
# @!attribute [rw] binary_path
|
5
|
+
# @return [String]
|
6
|
+
def_model_attribute :binary_path
|
7
|
+
|
8
|
+
# @!attribute [rw] client_cert_path
|
9
|
+
# @return [String]
|
10
|
+
def_model_attribute :client_cert_path
|
11
|
+
|
12
|
+
# @!attribute [rw] client_private_key_path
|
13
|
+
# @return [String]
|
14
|
+
def_model_attribute :client_private_key_path
|
15
|
+
|
16
|
+
# @!attribute [rw] facter
|
17
|
+
# @return [Hash]
|
18
|
+
def_model_attribute :facter
|
3
19
|
|
4
20
|
# @!attribute [rw] puppet_server
|
5
21
|
# @return [String]
|
6
|
-
|
22
|
+
def_model_attribute :puppet_server
|
7
23
|
|
8
|
-
# @!attribute [rw]
|
24
|
+
# @!attribute [rw] puppet_node
|
9
25
|
# @return [String]
|
10
|
-
|
26
|
+
def_model_attribute :puppet_node
|
11
27
|
|
12
28
|
# @!attribute [rw] options
|
13
29
|
# @return [String]
|
14
|
-
|
15
|
-
|
16
|
-
def to_proc
|
17
|
-
Proc.new do |vm_config|
|
18
|
-
vm_config.provision :puppet_server do |puppet_config|
|
19
|
-
with_attr(:puppet_server) { |val| puppet_config.puppet_server = val }
|
20
|
-
with_attr(:node_name) { |val| puppet_config.node_name = val }
|
21
|
-
with_attr(:options) { |val| puppet_config.options = val }
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
30
|
+
def_model_attribute :options
|
25
31
|
|
26
32
|
ConfigBuilder::Model::Provisioner.register('puppet_server', self)
|
27
33
|
end
|
@@ -1,5 +1,5 @@
|
|
1
1
|
# @see http://docs.vagrantup.com/v2/provisioning/shell.html
|
2
|
-
class ConfigBuilder::Model::Provisioner::Shell < ConfigBuilder::Model::Base
|
2
|
+
class ConfigBuilder::Model::Provisioner::Shell < ConfigBuilder::Model::Provisioner::Base
|
3
3
|
|
4
4
|
# @!attribute [rw] inline
|
5
5
|
# @return [String] The inline shell command to run
|
@@ -13,15 +13,33 @@ class ConfigBuilder::Model::Provisioner::Shell < ConfigBuilder::Model::Base
|
|
13
13
|
# @return [String] A string acting as an argument vector to the command.
|
14
14
|
def_model_attribute :args
|
15
15
|
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
16
|
+
# @!attribute [rw] env
|
17
|
+
# @return [Hash] A hash of values passed in as environment variables to the script.
|
18
|
+
def_model_attribute :env
|
19
|
+
|
20
|
+
# @!attribute [rw] binary
|
21
|
+
# @return [Boolean] Whether Windows line endings are replaced with Unix line endings.
|
22
|
+
def_model_attribute :binary
|
23
|
+
|
24
|
+
# @!attribute [rw] privileged
|
25
|
+
# @return [Boolean] Specifies whether to execute the script as a privileged user or not.
|
26
|
+
def_model_attribute :privileged
|
27
|
+
|
28
|
+
# @!attribute [rw] upload_path
|
29
|
+
# @return [String] The remote path where the shell script will be uploaded to.
|
30
|
+
def_model_attribute :upload_path
|
31
|
+
|
32
|
+
# @!attribute [rw] keep_color
|
33
|
+
# @return [Boolean] Whether Vagrant should use coloring for the output.
|
34
|
+
def_model_attribute :keep_color
|
35
|
+
|
36
|
+
# @!attribute [rw] powershell_args
|
37
|
+
# @return [String] Extra arguments to pass to PowerShell if you are provisioning with PowerShell on Windows.
|
38
|
+
def_model_attribute :powershell_args
|
39
|
+
|
40
|
+
# @!attribute [rw] powershell_elevated_interactive
|
41
|
+
# @return [Boolean] Whether to run an elevated script in interactive mode on Windows.
|
42
|
+
def_model_attribute :powershell_elevated_interactive
|
25
43
|
|
26
44
|
ConfigBuilder::Model::Provisioner.register('shell', self)
|
27
45
|
end
|
@@ -2,11 +2,9 @@
|
|
2
2
|
#
|
3
3
|
# @see http://docs.vagrantup.com/v2/vagrantfile/index.html
|
4
4
|
class ConfigBuilder::Model::Root < ConfigBuilder::Model::Base
|
5
|
-
|
6
|
-
include ConfigBuilder::ModelDelegator
|
7
|
-
|
8
5
|
def_model_delegator :vagrant
|
9
6
|
def_model_delegator :vms
|
7
|
+
def_model_delegator :vm_defaults
|
10
8
|
|
11
9
|
# @!attribute [rw] ssh
|
12
10
|
# @return [Hash<Symbol, Object>] The ssh configuration for all VMs
|
@@ -18,6 +16,16 @@ class ConfigBuilder::Model::Root < ConfigBuilder::Model::Base
|
|
18
16
|
# }
|
19
17
|
def_model_delegator :ssh
|
20
18
|
|
19
|
+
# @!attribute [rw] nfs
|
20
|
+
# @return [Hash<Symbol, Object>] The nfs configuration for all VMs
|
21
|
+
# @example
|
22
|
+
# >> config.nfs
|
23
|
+
# => {
|
24
|
+
# :nfs_export => true,
|
25
|
+
# :nfs_version => 4
|
26
|
+
# }
|
27
|
+
def_model_delegator :nfs
|
28
|
+
|
21
29
|
# @!attribute [rw] winrm
|
22
30
|
# @return [Hash<Symbol, Object>] The winrm configuration for all VMs
|
23
31
|
# @example
|
@@ -40,10 +48,19 @@ class ConfigBuilder::Model::Root < ConfigBuilder::Model::Base
|
|
40
48
|
|
41
49
|
private
|
42
50
|
|
51
|
+
def eval_vm_defaults(root_config)
|
52
|
+
with_attr(:vm_defaults) do |hash|
|
53
|
+
v = ConfigBuilder::Model::VM.new_from_hash(hash)
|
54
|
+
v.call(root_config)
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
43
58
|
def eval_vms(root_config)
|
44
59
|
attr(:vms).each do |hash|
|
45
60
|
v = ConfigBuilder::Model::VM.new_from_hash(hash)
|
46
|
-
v.
|
61
|
+
root_config.vm.define(v.instance_id, v.instance_options) do |vm_config|
|
62
|
+
v.call(vm_config)
|
63
|
+
end
|
47
64
|
end
|
48
65
|
end
|
49
66
|
|
@@ -53,6 +70,13 @@ class ConfigBuilder::Model::Root < ConfigBuilder::Model::Base
|
|
53
70
|
end
|
54
71
|
end
|
55
72
|
|
73
|
+
def eval_nfs(root_config)
|
74
|
+
with_attr(:nfs) do |nfs_config|
|
75
|
+
f = ConfigBuilder::Model::NFS.new_from_hash(nfs_config)
|
76
|
+
f.call(root_config)
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
56
80
|
def eval_ssh(root_config)
|
57
81
|
with_attr(:ssh) do |ssh_config|
|
58
82
|
f = ConfigBuilder::Model::SSH.new_from_hash(ssh_config)
|
@@ -35,6 +35,10 @@ class ConfigBuilder::Model::SSH < ConfigBuilder::Model::Base
|
|
35
35
|
# option.
|
36
36
|
def_model_attribute :guest_port
|
37
37
|
|
38
|
+
# @!attribute [rw] keep_alive
|
39
|
+
# @return [Boolean]
|
40
|
+
def_model_attribute :keep_alive
|
41
|
+
|
38
42
|
# @!attribute [rw] private_key_path
|
39
43
|
# @return [String] The path to the private key to use to SSH into the guest
|
40
44
|
# machine. By default this is the insecure private key that ships with
|
@@ -58,6 +62,11 @@ class ConfigBuilder::Model::SSH < ConfigBuilder::Model::Base
|
|
58
62
|
# enabled. Defaults to `false`.
|
59
63
|
def_model_attribute :forward_x11
|
60
64
|
|
65
|
+
# @!attribute [rw] forward_env
|
66
|
+
# @return [Array<String>] An array of host environment variables to forward
|
67
|
+
# to the guest.
|
68
|
+
def_model_attribute :forward_env
|
69
|
+
|
61
70
|
# @!attribute [rw] insert_key
|
62
71
|
# @return [Boolean] If `true`, Vagrant will automatically insert an insecure
|
63
72
|
# keypair to use for SSH. By default, this is `true`. This only has an
|
@@ -89,22 +98,31 @@ class ConfigBuilder::Model::SSH < ConfigBuilder::Model::Base
|
|
89
98
|
# Vagrant.
|
90
99
|
def_model_attribute :shell
|
91
100
|
|
101
|
+
# @!attribute [rw] sudo_command
|
102
|
+
# @return [String] The command to use when executing a command with sudo.
|
103
|
+
# This defaults to `sudo -E -H %c`. The `%c` will be replaced by the
|
104
|
+
# command that is being executed.
|
105
|
+
def_model_attribute :sudo_command
|
106
|
+
|
92
107
|
def to_proc
|
93
108
|
Proc.new do |global_config|
|
94
109
|
ssh = global_config.ssh
|
95
110
|
|
96
|
-
with_attr(:username) { |val| ssh.username
|
97
|
-
with_attr(:password) { |val| ssh.password
|
98
|
-
with_attr(:host) { |val| ssh.host
|
99
|
-
with_attr(:port) { |val| ssh.port
|
100
|
-
with_attr(:guest_port) { |val| ssh.guest_port
|
111
|
+
with_attr(:username) { |val| ssh.username = val }
|
112
|
+
with_attr(:password) { |val| ssh.password = val }
|
113
|
+
with_attr(:host) { |val| ssh.host = val }
|
114
|
+
with_attr(:port) { |val| ssh.port = val }
|
115
|
+
with_attr(:guest_port) { |val| ssh.guest_port = val }
|
116
|
+
with_attr(:keep_alive) { |val| ssh.keep_alive = val }
|
101
117
|
with_attr(:private_key_path) { |val| ssh.private_key_path = val }
|
102
|
-
with_attr(:forward_agent) { |val| ssh.forward_agent
|
103
|
-
with_attr(:forward_x11) { |val| ssh.forward_x11
|
104
|
-
with_attr(:
|
105
|
-
with_attr(:
|
106
|
-
with_attr(:
|
107
|
-
with_attr(:
|
118
|
+
with_attr(:forward_agent) { |val| ssh.forward_agent = val }
|
119
|
+
with_attr(:forward_x11) { |val| ssh.forward_x11 = val }
|
120
|
+
with_attr(:forward_env) { |val| ssh.forward_env = val }
|
121
|
+
with_attr(:insert_key) { |val| ssh.insert_key = val }
|
122
|
+
with_attr(:proxy_command) { |val| ssh.proxy_command = val }
|
123
|
+
with_attr(:pty) { |val| ssh.pty = val }
|
124
|
+
with_attr(:shell) { |val| ssh.shell = val }
|
125
|
+
with_attr(:sudo_command) { |val| ssh.sudo_command = val }
|
108
126
|
end
|
109
127
|
end
|
110
128
|
end
|
@@ -4,30 +4,82 @@
|
|
4
4
|
class ConfigBuilder::Model::SyncedFolder < ConfigBuilder::Model::Base
|
5
5
|
|
6
6
|
# @!attribute [rw] host_path
|
7
|
-
# @return [String] The host file path to mount on the guest
|
7
|
+
# @return [String] The host file path to mount on the guest.
|
8
8
|
def_model_attribute :host_path
|
9
9
|
|
10
10
|
# @!attribute [rw] guest_path
|
11
|
-
# @return [String] The guest file path to be used as the mount point
|
11
|
+
# @return [String] The guest file path to be used as the mount point.
|
12
12
|
def_model_attribute :guest_path
|
13
13
|
|
14
|
-
# @!attribute [rw]
|
15
|
-
#
|
16
|
-
#
|
17
|
-
def_model_attribute :
|
14
|
+
# @!attribute [rw] create
|
15
|
+
# @return [Boolean] If true, the host path will be created if it does not
|
16
|
+
# exist.
|
17
|
+
def_model_attribute :create
|
18
|
+
|
19
|
+
# @!attribute [rw] mount_options
|
20
|
+
# @return [Array<String>] A list of additional options to pass to the mount.
|
21
|
+
# command.
|
22
|
+
def_model_attribute :mount_options
|
18
23
|
|
19
24
|
# @!attribute [rw] disabled
|
20
25
|
# @return [Boolean] If the mount point should be disabled.
|
21
26
|
def_model_attribute :disabled
|
22
27
|
|
23
|
-
# @!attribute [rw]
|
24
|
-
# @return [
|
25
|
-
|
28
|
+
# @!attribute [rw] group
|
29
|
+
# @return [String] The group that will own the synced folder. By default this
|
30
|
+
# will be the SSH user.
|
31
|
+
def_model_attribute :group
|
32
|
+
|
33
|
+
# @!attribute [rw] owner
|
34
|
+
# @return [String] The user who should be the owner of this synced folder. By
|
35
|
+
# default this will be the SSH user.
|
36
|
+
def_model_attribute :owner
|
26
37
|
|
27
38
|
# @!attribute [rw] type
|
28
39
|
# @return [String] The method for syncing folder to guest.
|
29
40
|
def_model_attribute :type
|
30
41
|
|
42
|
+
# @!attribute [rw] nfs_export
|
43
|
+
# @return [Boolean] Whether Vagrant should manage entries in /etc/exports.
|
44
|
+
def_model_attribute :nfs_export
|
45
|
+
|
46
|
+
# @!attribute [rw] nfs_export
|
47
|
+
# @return [nfs_udp] Whether or not to use UDP as the transport.
|
48
|
+
def_model_attribute :nfs_udp
|
49
|
+
|
50
|
+
# @!attribute [rw] nfs_version
|
51
|
+
# @return [Fixnum, String] The NFS protocol version to use.
|
52
|
+
def_model_attribute :nfs_version
|
53
|
+
|
54
|
+
# @!attribute [rw] rsync__args
|
55
|
+
# @return [Array<String>] A list of arguments to supply to rsync.
|
56
|
+
def_model_attribute :rsync__args
|
57
|
+
|
58
|
+
# @!attribute [rw] rsync__auto
|
59
|
+
# @return [Boolean] If false, then rsync-auto will not watch and
|
60
|
+
# automatically sync this folder.
|
61
|
+
def_model_attribute :rsync__auto
|
62
|
+
|
63
|
+
# @!attribute [rw] rsync__chown
|
64
|
+
# @return [Boolean] If false, then the owner and group options for the synced
|
65
|
+
# folder are ignored and Vagrant will not execute a recursive chown.
|
66
|
+
def_model_attribute :rsync__chown
|
67
|
+
|
68
|
+
# @!attribute [rw] rsync__exclude
|
69
|
+
# @return [String, Array<String>] A list of files or directories to exclude
|
70
|
+
# from the sync.
|
71
|
+
def_model_attribute :rsync__exclude
|
72
|
+
|
73
|
+
# @!attribute [rw] rsync__rsync_path
|
74
|
+
# @return [String] The path on the remote host where rsync is and how it is
|
75
|
+
# executed.
|
76
|
+
def_model_attribute :rsync__rsync_path
|
77
|
+
|
78
|
+
# @!attribute [rw] rsync__verbose
|
79
|
+
# @return [Boolean] If true, then the output from the rsync process will be
|
80
|
+
# echoed to the console.
|
81
|
+
def_model_attribute :rsync__verbose
|
82
|
+
|
31
83
|
def to_proc
|
32
84
|
Proc.new do |vm_config|
|
33
85
|
vm_config.synced_folder(attr(:host_path), attr(:guest_path), folder_opts)
|
@@ -38,11 +90,28 @@ class ConfigBuilder::Model::SyncedFolder < ConfigBuilder::Model::Base
|
|
38
90
|
|
39
91
|
def folder_opts
|
40
92
|
h = {}
|
41
|
-
with_attr(:
|
42
|
-
with_attr(:
|
43
|
-
with_attr(:
|
44
|
-
with_attr(:
|
45
|
-
|
93
|
+
with_attr(:create) { |val| h[:create] = val }
|
94
|
+
with_attr(:mount_options) { |val| h[:mount_options] = val }
|
95
|
+
with_attr(:disabled) { |val| h[:disabled] = val }
|
96
|
+
with_attr(:group) { |val| h[:group] = val }
|
97
|
+
with_attr(:create) { |val| h[:create] = val }
|
98
|
+
with_attr(:extra) { |val| h[:extra] = val }
|
99
|
+
with_attr(:disabled) { |val| h[:disabled] = val }
|
100
|
+
with_attr(:group) { |val| h[:group] = val }
|
101
|
+
with_attr(:nfs) { |val| h[:nfs] = val }
|
102
|
+
with_attr(:owner) { |val| h[:owner] = val }
|
103
|
+
with_attr(:type) { |val| h[:type] = val }
|
104
|
+
# NFS
|
105
|
+
with_attr(:nfs_export) { |val| h[:nfs_export] = val }
|
106
|
+
with_attr(:nfs_udp) { |val| h[:nfs_udp] = val }
|
107
|
+
with_attr(:nfs_version) { |val| h[:nfs_version] = val }
|
108
|
+
# RSync
|
109
|
+
with_attr(:rsync__args) { |val| h[:rsync__args] = val }
|
110
|
+
with_attr(:rsync__auto) { |val| h[:rsync__auto] = val }
|
111
|
+
with_attr(:rsync__chown) { |val| h[:rsync__chown] = val }
|
112
|
+
with_attr(:rsync__exclude) { |val| h[:rsync__exclude] = val }
|
113
|
+
with_attr(:rsync__rsync_path) { |val| h[:rsync__rsync_path] = val }
|
114
|
+
with_attr(:rsync__verbose) { |val| h[:rsync__verbose] = val }
|
46
115
|
h
|
47
116
|
end
|
48
117
|
end
|
@@ -1,8 +1,5 @@
|
|
1
1
|
# @see http://docs.vagrantup.com/v2/vagrantfile/machine_settings.html
|
2
2
|
class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
3
|
-
|
4
|
-
include ConfigBuilder::ModelDelegator
|
5
|
-
|
6
3
|
# @!attribute [rw] provider
|
7
4
|
# @return [Hash<Symbol, Object>] The provider configuration for
|
8
5
|
# this VM
|
@@ -64,6 +61,17 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
|
64
61
|
# ]
|
65
62
|
def_model_delegator :private_networks
|
66
63
|
|
64
|
+
# @!attribute [rw] public_networks
|
65
|
+
# @return [Array<Hash<Symbol, Object>>] A collection of IP address network
|
66
|
+
# settings.
|
67
|
+
# @example
|
68
|
+
# >> vm.public_networks
|
69
|
+
# => [
|
70
|
+
# {:ip => '10.20.4.1'},
|
71
|
+
# {:bridge: "en1: Wi-Fi (AirPort)"},
|
72
|
+
# ]
|
73
|
+
def_model_delegator :public_networks
|
74
|
+
|
67
75
|
# @!attribute [rw] synced_folders
|
68
76
|
# @return [Array<Hash<Symbol, Object>>]
|
69
77
|
# @example
|
@@ -75,9 +83,28 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
|
75
83
|
#
|
76
84
|
def_model_delegator :synced_folders
|
77
85
|
|
78
|
-
# @!attribute [rw]
|
79
|
-
# @return [String] The
|
80
|
-
|
86
|
+
# @!attribute [rw] name
|
87
|
+
# @return [String] The name of the instantiated box in this environment.
|
88
|
+
def_model_id :name
|
89
|
+
|
90
|
+
# @!attribute [rw] autostart
|
91
|
+
# @return [Boolean] If true, vagrant will start the box on "vagrant up".
|
92
|
+
# If false, vagrant must be given the box name explicitly or it will not
|
93
|
+
# start.
|
94
|
+
def_model_option :autostart
|
95
|
+
|
96
|
+
# @!attribute [rw] allowed_synced_folder_types
|
97
|
+
# @return [Array<String>]
|
98
|
+
def_model_attribute :allowed_synced_folder_types
|
99
|
+
|
100
|
+
# @!attribute [rw] base_mac
|
101
|
+
# @return [String] MAC address of the NAT device.
|
102
|
+
def_model_attribute :base_mac
|
103
|
+
|
104
|
+
# @!attribute [rw] autostart
|
105
|
+
# @return [Fixnum] The time in seconds that Vagrant will wait for the machine
|
106
|
+
# to boot and be accessible. By default this is 300 seconds.
|
107
|
+
def_model_attribute :boot_timeout
|
81
108
|
|
82
109
|
# @!attribute [rw] box
|
83
110
|
# @return [String] This configures what box the machine will be brought up
|
@@ -85,6 +112,14 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
|
85
112
|
# shorthand name of a box in Vagrant Cloud.
|
86
113
|
def_model_attribute :box
|
87
114
|
|
115
|
+
# @!attribute [rw] box_check_update
|
116
|
+
# @return [Boolean] If true, Vagrant will check for updates to the
|
117
|
+
# configured box on every `vagrant up`. If an update is found, Vagrant
|
118
|
+
# will tell the user. By default this is `true`. Updates will only be
|
119
|
+
# checked for boxes that properly support updates (boxes from Vagrant
|
120
|
+
# Cloud or some other versioned box).
|
121
|
+
def_model_attribute :box_check_update
|
122
|
+
|
88
123
|
# @!attribute [rw] box_url
|
89
124
|
# @return [String, Array<String>] The URL that the configured box can be
|
90
125
|
# found at. If `box` is a shorthand to a box in Vagrant Cloud then this
|
@@ -99,6 +134,29 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
|
99
134
|
# example: "file:///tmp/test.box".
|
100
135
|
def_model_attribute :box_url
|
101
136
|
|
137
|
+
# @!attribute [rw] box_server_url
|
138
|
+
# @return [String]
|
139
|
+
def_model_attribute :box_server_url
|
140
|
+
|
141
|
+
# @!attribute [rw] box_version
|
142
|
+
# @return [String] The version of the box to use. This defaults to ">= 0"
|
143
|
+
# (the latest version available). This can contain an arbitrary list of
|
144
|
+
# constraints, separated by commas, such as: >= 1.0, < 1.5. When
|
145
|
+
# constraints are given, Vagrant will use the latest available box
|
146
|
+
# satisfying these constraints.
|
147
|
+
def_model_attribute :box_version
|
148
|
+
|
149
|
+
# @!attribute [rw] box_download_ca_cert
|
150
|
+
# @return [String] Path to a CA cert bundle to use when downloading a box
|
151
|
+
# directly. By default, Vagrant will use the Mozilla CA cert bundle.
|
152
|
+
def_model_attribute :box_download_ca_cert
|
153
|
+
|
154
|
+
# @!attribute [rw] box_download_ca_path
|
155
|
+
# @return [String] Path to a directory containing CA certificates for
|
156
|
+
# downloading a box directly. By default, Vagrant will use the Mozilla CA
|
157
|
+
# cert bundle.
|
158
|
+
def_model_attribute :box_download_ca_path
|
159
|
+
|
102
160
|
# @!attribute [rw] box_download_checksum
|
103
161
|
# @return [String] The checksum of the box specified by `box_url`.
|
104
162
|
# If not specified, no checksum comparison will be done. If specified,
|
@@ -128,40 +186,42 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
|
128
186
|
# will be verified.
|
129
187
|
def_model_attribute :box_download_insecure
|
130
188
|
|
131
|
-
# @!attribute [rw]
|
132
|
-
# @return [Boolean] If true
|
133
|
-
#
|
134
|
-
#
|
135
|
-
#
|
136
|
-
|
137
|
-
def_model_attribute :box_check_update
|
189
|
+
# @!attribute [rw] box_download_location_trusted
|
190
|
+
# @return [Boolean] If ´true´, then all HTTP redirects will be treated as
|
191
|
+
# trusted. That means credentials used for initial URL will be used for all
|
192
|
+
# subsequent redirects. By default, redirect locations are untrusted so
|
193
|
+
# credentials (if specified) used only for initial HTTP request.
|
194
|
+
def_model_attribute :box_download_location_trusted
|
138
195
|
|
139
|
-
# @!attribute [rw]
|
140
|
-
# @return [String] The
|
141
|
-
#
|
142
|
-
|
143
|
-
# constraints are given, Vagrant will use the latest available box
|
144
|
-
# satisfying these constraints.
|
145
|
-
def_model_attribute :box_version
|
196
|
+
# @!attribute [rw] communicator
|
197
|
+
# @return [String] The name of the communicator to use when sending
|
198
|
+
# commands to this box. Set to 'winrm' for Windows VMs.
|
199
|
+
def_model_attribute :communicator
|
146
200
|
|
147
|
-
# @!attribute [rw]
|
148
|
-
# @return [
|
149
|
-
|
201
|
+
# @!attribute [rw] graceful_halt_timeout
|
202
|
+
# @return [Fixnum] The time in seconds that Vagrant will wait for the machine
|
203
|
+
# to
|
204
|
+
# gracefully halt when vagrant halt is called. Defaults to 60 seconds.
|
205
|
+
def_model_attribute :graceful_halt_timeout
|
206
|
+
|
207
|
+
# @!attribute [rw] guest
|
208
|
+
# @return [String] The guest type to use for this VM.
|
209
|
+
def_model_attribute :guest
|
150
210
|
|
151
211
|
# @!attribute [rw] hostname
|
152
212
|
# @return [String] The hostname the machine should have.
|
153
213
|
def_model_attribute :hostname
|
154
214
|
|
155
|
-
# @!attribute [rw]
|
156
|
-
# @return [String]
|
157
|
-
#
|
158
|
-
|
215
|
+
# @!attribute [rw] post_up_message
|
216
|
+
# @return [String] A message to show after vagrant up. This will be shown to
|
217
|
+
# the user and is useful for containing instructions such as how to access
|
218
|
+
# various components of the development environment.
|
219
|
+
def_model_attribute :post_up_message
|
159
220
|
|
160
|
-
# @!attribute [rw]
|
161
|
-
# @return [
|
162
|
-
#
|
163
|
-
|
164
|
-
def_model_attribute :autostart
|
221
|
+
# @!attribute [rw] usable_port_range
|
222
|
+
# @return [String] A range of ports Vagrant can use for handling port
|
223
|
+
# collisions and such. Defaults to 2200..2250.
|
224
|
+
def_model_attribute :usable_port_range
|
165
225
|
|
166
226
|
def initialize
|
167
227
|
@defaults = {
|
@@ -169,35 +229,27 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
|
169
229
|
:provisioners => [],
|
170
230
|
:forwarded_ports => [],
|
171
231
|
:private_networks => [],
|
232
|
+
:public_networks => [],
|
172
233
|
:synced_folders => [],
|
173
234
|
:autostart => true,
|
174
235
|
}
|
175
236
|
end
|
176
237
|
|
177
238
|
def to_proc
|
178
|
-
Proc.new do |
|
179
|
-
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
with_attr(:box_url) { |val| vm_config.box_url = val }
|
184
|
-
with_attr(:box_download_checksum) { |val| vm_config.box_download_checksum = val }
|
185
|
-
with_attr(:box_download_checksum_type) { |val| vm_config.box_download_checksum_type = val }
|
186
|
-
with_attr(:box_download_client_cert) { |val| vm_config.box_download_client_cert = val }
|
187
|
-
with_attr(:box_download_insecure) { |val| vm_config.box_download_insecure = val }
|
188
|
-
with_attr(:box_check_update) { |val| vm_config.box_check_update = val }
|
189
|
-
with_attr(:box_version) { |val| vm_config.box_version = val }
|
190
|
-
|
191
|
-
with_attr(:hostname) { |val| vm_config.hostname = attr(:hostname) }
|
192
|
-
with_attr(:guest) { |val| vm_config.guest = attr(:guest) }
|
193
|
-
|
194
|
-
with_attr(:communicator) { |val| vm_config.communicator = attr(:communicator) }
|
195
|
-
|
196
|
-
eval_models(vm_config)
|
197
|
-
end
|
239
|
+
Proc.new do |config|
|
240
|
+
vm_config = config.vm
|
241
|
+
|
242
|
+
configure!(vm_config)
|
243
|
+
eval_models(vm_config)
|
198
244
|
end
|
199
245
|
end
|
200
246
|
|
247
|
+
|
248
|
+
# @private
|
249
|
+
def configure_usable_port_range(config, val)
|
250
|
+
config.usable_port_range = Range.new(*val.split('..').map(&:to_i))
|
251
|
+
end
|
252
|
+
|
201
253
|
private
|
202
254
|
|
203
255
|
def eval_provisioners(vm_config)
|
@@ -232,6 +284,13 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
|
232
284
|
end
|
233
285
|
end
|
234
286
|
|
287
|
+
def eval_public_networks(vm_config)
|
288
|
+
attr(:public_networks).each do |hash|
|
289
|
+
n = ConfigBuilder::Model::Network::PublicNetwork.new_from_hash(hash)
|
290
|
+
n.call(vm_config)
|
291
|
+
end
|
292
|
+
end
|
293
|
+
|
235
294
|
def eval_forwarded_ports(vm_config)
|
236
295
|
attr(:forwarded_ports).each do |hash|
|
237
296
|
f = ConfigBuilder::Model::Network::ForwardedPort.new_from_hash(hash)
|