vagrant-config_builder 0.10.1 → 0.11.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +18 -0
- data/lib/config_builder/model/root.rb +29 -1
- data/lib/config_builder/model/ssh.rb +104 -4
- data/lib/config_builder/model/synced_folder.rb +1 -1
- data/lib/config_builder/model/vm.rb +72 -8
- data/lib/config_builder/model/winrm.rb +56 -0
- data/lib/config_builder/model.rb +1 -0
- data/lib/config_builder/version.rb +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: b242f323d273ed6a555d016d2281609563d28620
|
4
|
+
data.tar.gz: badb6da19a3ec43aea229f162ea616b5e04be7c5
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: c78a02cc55ebf0fc674ca2cc3e0038350fd3ffacdd55bbaa659c18e88dcf008f630ba3e1bf9c8c48c07ef3e442383815edac8393582b6a44c34772b7210a940a
|
7
|
+
data.tar.gz: ab497c2f941c60880b6aafa1c586dda6d3f4acfe3a4c6f762d8f8506f7c3066223a9ff89786160796924fc692479b0b60cb701f285992304b2602cc453e7fc49
|
data/CHANGELOG
CHANGED
@@ -1,6 +1,24 @@
|
|
1
1
|
CHANGELOG
|
2
2
|
=========
|
3
3
|
|
4
|
+
0.11.0
|
5
|
+
------
|
6
|
+
|
7
|
+
2014-09-17
|
8
|
+
|
9
|
+
This is a backwards feature release.
|
10
|
+
|
11
|
+
* (GH-23) Fix misspelling of `disabled` option for synced folders.
|
12
|
+
|
13
|
+
* (GH-26) Enable configuration of global WinRM options.
|
14
|
+
|
15
|
+
* Enable configuration of global SSH options.
|
16
|
+
|
17
|
+
* Enable configuration of additional box download options such as
|
18
|
+
checksumming and versioning.
|
19
|
+
|
20
|
+
Thanks to Nan Liu and Ethan Brown for their contributions to this release.
|
21
|
+
|
4
22
|
0.10.1
|
5
23
|
------
|
6
24
|
|
@@ -6,9 +6,27 @@ class ConfigBuilder::Model::Root < ConfigBuilder::Model::Base
|
|
6
6
|
include ConfigBuilder::ModelDelegator
|
7
7
|
|
8
8
|
def_model_delegator :vagrant
|
9
|
-
def_model_delegator :ssh
|
10
9
|
def_model_delegator :vms
|
11
10
|
|
11
|
+
# @!attribute [rw] ssh
|
12
|
+
# @return [Hash<Symbol, Object>] The ssh configuration for all VMs
|
13
|
+
# @example
|
14
|
+
# >> config.ssh
|
15
|
+
# => {
|
16
|
+
# :username => 'administrator',
|
17
|
+
# :password => 'vagrant',
|
18
|
+
# }
|
19
|
+
def_model_delegator :ssh
|
20
|
+
|
21
|
+
# @!attribute [rw] winrm
|
22
|
+
# @return [Hash<Symbol, Object>] The winrm configuration for all VMs
|
23
|
+
# @example
|
24
|
+
# >> config.winrm
|
25
|
+
# => {
|
26
|
+
# :username => 'administrator',
|
27
|
+
# :password => 'vagrant',
|
28
|
+
# }
|
29
|
+
def_model_delegator :winrm
|
12
30
|
|
13
31
|
def initialize
|
14
32
|
@defaults = {:vms => [], :vagrant => {}}
|
@@ -36,6 +54,16 @@ class ConfigBuilder::Model::Root < ConfigBuilder::Model::Base
|
|
36
54
|
end
|
37
55
|
|
38
56
|
def eval_ssh(root_config)
|
57
|
+
with_attr(:ssh) do |ssh_config|
|
58
|
+
f = ConfigBuilder::Model::SSH.new_from_hash(ssh_config)
|
59
|
+
f.call(root_config)
|
60
|
+
end
|
61
|
+
end
|
39
62
|
|
63
|
+
def eval_winrm(root_config)
|
64
|
+
if attr(:winrm)
|
65
|
+
f = ConfigBuilder::Model::WinRM.new_from_hash(attr(:winrm))
|
66
|
+
f.call(root_config)
|
67
|
+
end
|
40
68
|
end
|
41
69
|
end
|
@@ -1,10 +1,110 @@
|
|
1
|
+
# Vagrant SSH credential model
|
2
|
+
#
|
1
3
|
# @see http://docs.vagrantup.com/v2/vagrantfile/ssh_settings.html
|
2
4
|
class ConfigBuilder::Model::SSH < ConfigBuilder::Model::Base
|
5
|
+
# @!attribute [rw] username
|
6
|
+
# @return [String] This sets the username that Vagrant will SSH as by
|
7
|
+
# default. Providers are free to override this if they detect a more
|
8
|
+
# appropriate user. By default this is "vagrant," since that is what most
|
9
|
+
# public boxes are made as.
|
10
|
+
def_model_attribute :username
|
11
|
+
|
12
|
+
# @!attribute [rw] password
|
13
|
+
# @return [String] This sets a password that Vagrant will use to
|
14
|
+
# authenticate the SSH user. Note that Vagrant recommends you use
|
15
|
+
# key-based authentiation rather than a password (see #private_key_path)
|
16
|
+
# below. If you use a password, Vagrant will automatically insert a
|
17
|
+
# keypair if `insert_key` is true.
|
18
|
+
def_model_attribute :password
|
19
|
+
|
20
|
+
# @!attribute [rw] host
|
21
|
+
# @return [String] The hostname or IP to SSH into. By default this is
|
22
|
+
# empty, because the provider usually figures this out for you.
|
23
|
+
def_model_attribute :host
|
24
|
+
|
25
|
+
# @!attribute [rw] port
|
26
|
+
# @return [Fixnum] The port to SSH into. By default this is port 22.
|
27
|
+
def_model_attribute :port
|
28
|
+
|
3
29
|
# @!attribute [rw] guest_port
|
4
|
-
#
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
30
|
+
# @return [Fixnum] The port on the guest that SSH is running on. This is
|
31
|
+
# used by some providers to detect forwarded ports for SSH. For example,
|
32
|
+
# if this is set to 22 (the default), and Vagrant detects a forwarded
|
33
|
+
# port to port 22 on the guest from port 4567 on the host, Vagrant will
|
34
|
+
# attempt to use port 4567 to talk to the guest if there is no other
|
35
|
+
# option.
|
36
|
+
def_model_attribute :guest_port
|
37
|
+
|
38
|
+
# @!attribute [rw] private_key_path
|
39
|
+
# @return [String] The path to the private key to use to SSH into the guest
|
40
|
+
# machine. By default this is the insecure private key that ships with
|
41
|
+
# Vagrant, since that is what public boxes use. If you make your own
|
42
|
+
# custom box with a custom SSH key, this should point to that private
|
43
|
+
# key.
|
44
|
+
#
|
45
|
+
# You can also specify multiple private keys by setting this to be an
|
46
|
+
# array. This is useful, for example, if you use the default private key
|
47
|
+
# to bootstrap the machine, but replace it with perhaps a more secure key
|
48
|
+
# later.
|
49
|
+
def_model_attribute :private_key_path
|
50
|
+
|
8
51
|
# @!attribute [rw] forward_agent
|
52
|
+
# @return [Boolean] If `true`, agent forwarding over SSH connections is
|
53
|
+
# enabled. Defaults to `false`.
|
54
|
+
def_model_attribute :forward_agent
|
55
|
+
|
56
|
+
# @!attribute [rw] forward_x11
|
57
|
+
# @return [Boolean] If `true`, X11 forwarding over SSH connections is
|
58
|
+
# enabled. Defaults to `false`.
|
59
|
+
def_model_attribute :forward_x11
|
60
|
+
|
61
|
+
# @!attribute [rw] insert_key
|
62
|
+
# @return [Boolean] If `true`, Vagrant will automatically insert an insecure
|
63
|
+
# keypair to use for SSH. By default, this is `true`. This only has an
|
64
|
+
# effect if you don't already use private keys for authentication.
|
65
|
+
def_model_attribute :insert_key
|
66
|
+
|
67
|
+
# @!attribute [rw] proxy_command
|
68
|
+
# @return [String] A command-line command to execute that receives the data
|
69
|
+
# to send to SSH on stdin. This can be used to proxy the SSH connection.
|
70
|
+
# `%h` in the command is replaced with the host and `%p` is replaced with
|
71
|
+
# the port.
|
72
|
+
def_model_attribute :proxy_command
|
73
|
+
|
74
|
+
# @!attribute [rw] pty
|
75
|
+
# @return [Boolean] If `true`, pty will be used for provisioning. Defaults
|
76
|
+
# to `false`.
|
77
|
+
#
|
78
|
+
# This setting is an _advanced feature_ that should not be enabled unless
|
79
|
+
# absolutely necessary. It breaks some other features of Vagrant, and is
|
80
|
+
# really only exposed for cases where it is absolutely necessary. If you
|
81
|
+
# can find a way to not use a pty, that is recommended instead.
|
82
|
+
def_model_attribute :pty
|
83
|
+
|
9
84
|
# @!attribute [rw] shell
|
85
|
+
# @return [String] The shell to use when executing SSH commands from
|
86
|
+
# Vagrant. By default this is `bash -l`. Note that this has no effect on
|
87
|
+
# the shell you get when you run `vagrant ssh`. This configuration option
|
88
|
+
# only affects the shell to use when executing commands internally in
|
89
|
+
# Vagrant.
|
90
|
+
def_model_attribute :shell
|
91
|
+
|
92
|
+
def to_proc
|
93
|
+
Proc.new do |global_config|
|
94
|
+
ssh = global_config.ssh
|
95
|
+
|
96
|
+
with_attr(:username) { |val| ssh.username = val }
|
97
|
+
with_attr(:password) { |val| ssh.password = val }
|
98
|
+
with_attr(:host) { |val| ssh.host = val }
|
99
|
+
with_attr(:port) { |val| ssh.port = val }
|
100
|
+
with_attr(:guest_port) { |val| ssh.guest_port = val }
|
101
|
+
with_attr(:private_key_path) { |val| ssh.private_key_path = val }
|
102
|
+
with_attr(:forward_agent) { |val| ssh.forward_agent = val }
|
103
|
+
with_attr(:forward_x11) { |val| ssh.forward_x11 = val }
|
104
|
+
with_attr(:insert_key) { |val| ssh.insert_key = val }
|
105
|
+
with_attr(:proxy_command) { |val| ssh.proxy_command = val }
|
106
|
+
with_attr(:pty) { |val| ssh.pty = val }
|
107
|
+
with_attr(:shell) { |val| ssh.shell = val }
|
108
|
+
end
|
109
|
+
end
|
10
110
|
end
|
@@ -35,7 +35,7 @@ class ConfigBuilder::Model::SyncedFolder < ConfigBuilder::Model::Base
|
|
35
35
|
def folder_opts
|
36
36
|
h = {}
|
37
37
|
with_attr(:extra) { |val| h[:extra] = val }
|
38
|
-
with_attr(:
|
38
|
+
with_attr(:disabled) { |val| h[:disabled] = val }
|
39
39
|
with_attr(:nfs) { |val| h[:nfs] = val }
|
40
40
|
|
41
41
|
h
|
@@ -73,18 +73,75 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
|
73
73
|
#
|
74
74
|
def_model_delegator :synced_folders
|
75
75
|
|
76
|
-
# @!attribute [rw] box
|
77
|
-
# @return [String] The name of the Vagrant box to instantiate for this VM
|
78
|
-
def_model_attribute :box
|
79
|
-
|
80
76
|
# @!attribute [rw] guest
|
81
77
|
# @return [String] The guest type to use for this VM
|
82
78
|
def_model_attribute :guest
|
83
79
|
|
84
|
-
# @!attribute [rw]
|
85
|
-
# @return [String]
|
80
|
+
# @!attribute [rw] box
|
81
|
+
# @return [String] This configures what box the machine will be brought up
|
82
|
+
# against. The value here should be the name of an installed box or a
|
83
|
+
# shorthand name of a box in Vagrant Cloud.
|
86
84
|
def_model_attribute :box
|
87
85
|
|
86
|
+
# @!attribute [rw] box_url
|
87
|
+
# @return [String, Array<String>] The URL that the configured box can be
|
88
|
+
# found at. If `box` is a shorthand to a box in Vagrant Cloud then this
|
89
|
+
# value doesn't need to be specified. Otherwise, it should point to the
|
90
|
+
# proper place where the box can be found if it isn't installed.
|
91
|
+
#
|
92
|
+
# This can also be an array of multiple URLs. The URLs will be tried in
|
93
|
+
# order. Note that any client certificates, insecure download settings,
|
94
|
+
# and so on will apply to all URLs in this list.
|
95
|
+
#
|
96
|
+
# The URLs can also be local files by using the file:// scheme. For
|
97
|
+
# example: "file:///tmp/test.box".
|
98
|
+
def_model_attribute :box_url
|
99
|
+
|
100
|
+
# @!attribute [rw] box_download_checksum
|
101
|
+
# @return [String] The checksum of the box specified by `box_url`.
|
102
|
+
# If not specified, no checksum comparison will be done. If specified,
|
103
|
+
# Vagrant will compare the checksum of the downloaded box to this value
|
104
|
+
# and error if they do not match. Checksum checking is only done when
|
105
|
+
# Vagrant must download the box.
|
106
|
+
#
|
107
|
+
# If this is specified, then `box_download_checksum_type` must also be
|
108
|
+
# specified.
|
109
|
+
def_model_attribute :box_download_checksum
|
110
|
+
|
111
|
+
# @!attribute [rw] box_download_checksum_type
|
112
|
+
# @return [String] The type of checksum specified by
|
113
|
+
# `box_download_checksum` (if any). Supported values are currently `md5`,
|
114
|
+
# `sha1`, and `sha256`.
|
115
|
+
def_model_attribute :box_download_checksum_type
|
116
|
+
|
117
|
+
# @!attribute [rw] box_download_client_cert
|
118
|
+
# @return [String] Path to a client certificate to use when downloading the
|
119
|
+
# box, if it is necessary. By default, no client certificate is used to
|
120
|
+
# download the box.
|
121
|
+
def_model_attribute :box_download_client_cert
|
122
|
+
|
123
|
+
# @!attribute [rw] box_download_insecure
|
124
|
+
# @return [Boolean] If `true`, then SSL certificates from the server will
|
125
|
+
# not be verified. By default, if the URL is an HTTPS URL, then SSL certs
|
126
|
+
# will be verified.
|
127
|
+
def_model_attribute :box_download_insecure
|
128
|
+
|
129
|
+
# @!attribute [rw] box_check_update
|
130
|
+
# @return [Boolean] If true, Vagrant will check for updates to the
|
131
|
+
# configured box on every `vagrant up`. If an update is found, Vagrant
|
132
|
+
# will tell the user. By default this is `true`. Updates will only be
|
133
|
+
# checked for boxes that properly support updates (boxes from Vagrant
|
134
|
+
# Cloud or some other versioned box).
|
135
|
+
def_model_attribute :box_check_update
|
136
|
+
|
137
|
+
# @!attribute [rw] box_version
|
138
|
+
# @return [String] The version of the box to use. This defaults to ">= 0"
|
139
|
+
# (the latest version available). This can contain an arbitrary list of
|
140
|
+
# constraints, separated by commas, such as: >= 1.0, < 1.5. When
|
141
|
+
# constraints are given, Vagrant will use the latest available box
|
142
|
+
# satisfying these constraints.
|
143
|
+
def_model_attribute :box_version
|
144
|
+
|
88
145
|
# @!attribute [rw] name
|
89
146
|
# @return [String] The name of the instantiated box in this environment
|
90
147
|
def_model_attribute :name
|
@@ -113,8 +170,15 @@ class ConfigBuilder::Model::VM < ConfigBuilder::Model::Base
|
|
113
170
|
global_config.vm.define(attr(:name)) do |config|
|
114
171
|
vm_config = config.vm
|
115
172
|
|
116
|
-
with_attr(:box)
|
117
|
-
with_attr(:box_url)
|
173
|
+
with_attr(:box) { |val| vm_config.box = val }
|
174
|
+
with_attr(:box_url) { |val| vm_config.box_url = val }
|
175
|
+
with_attr(:box_download_checksum) { |val| vm_config.box_download_checksum = val }
|
176
|
+
with_attr(:box_download_checksum_type) { |val| vm_config.box_download_checksum_type = val }
|
177
|
+
with_attr(:box_download_client_cert) { |val| vm_config.box_download_client_cert = val }
|
178
|
+
with_attr(:box_download_insecure) { |val| vm_config.box_download_insecure = val }
|
179
|
+
with_attr(:box_check_update) { |val| vm_config.box_check_update = val }
|
180
|
+
with_attr(:box_version) { |val| vm_config.box_version = val }
|
181
|
+
|
118
182
|
with_attr(:hostname) { |val| vm_config.hostname = attr(:hostname) }
|
119
183
|
with_attr(:guest) { |val| vm_config.guest = attr(:guest) }
|
120
184
|
|
@@ -0,0 +1,56 @@
|
|
1
|
+
# Vagrant WinRM credential model.
|
2
|
+
#
|
3
|
+
# @see http://docs.vagrantup.com/v2/vagrantfile
|
4
|
+
class ConfigBuilder::Model::WinRM < ConfigBuilder::Model::Base
|
5
|
+
# @!attribute [rw] username
|
6
|
+
# @return [String] This sets the username that Vagrant will WinRM as by
|
7
|
+
# default. Providers are free to override this if they detect a more
|
8
|
+
# appropriate user. By default this is "vagrant," since that is what most
|
9
|
+
# public boxes are made as.
|
10
|
+
def_model_attribute :username
|
11
|
+
|
12
|
+
# @!attribute [rw] password
|
13
|
+
# @return [String] This sets a password that Vagrant will use to
|
14
|
+
# authenticate the WinRM user.
|
15
|
+
def_model_attribute :password
|
16
|
+
|
17
|
+
# @!attribute [rw] host
|
18
|
+
# @return [String] The hostname or IP to WinRM into. By default this is
|
19
|
+
# empty, because the provider usually figures this out for you.
|
20
|
+
def_model_attribute :host
|
21
|
+
|
22
|
+
# @!attribute [rw] port
|
23
|
+
# @return [Fixnum] The port to WinRM into. By default this is port 5985.
|
24
|
+
def_model_attribute :port
|
25
|
+
|
26
|
+
# @!attribute [rw] guest_port
|
27
|
+
# @return [Fixnum] The port on the guest that WinRM is running on.
|
28
|
+
# This is used by some providers to detect forwarded ports for WinRM.
|
29
|
+
# For example, if this is set to 5985 (the default), and Vagrant detects
|
30
|
+
# a forwarded port to port 5985 on the guest from port 4567 on the host,
|
31
|
+
# Vagrant will attempt to use port 4567 to talk to the guest if there is
|
32
|
+
# no other option.
|
33
|
+
def_model_attribute :guest_port
|
34
|
+
|
35
|
+
# @!attribute [rw] max_tries
|
36
|
+
# @return [Fixnum] Maximum number of retry attempts. By default this is 20.
|
37
|
+
def_model_attribute :max_tries
|
38
|
+
|
39
|
+
# @!attribute [rw] timeout
|
40
|
+
# @return [Fixnum] The timeout in seconds. By default this is 1800 seconds.
|
41
|
+
def_model_attribute :timeout
|
42
|
+
|
43
|
+
def to_proc
|
44
|
+
Proc.new do |global_config|
|
45
|
+
winrm = global_config.winrm
|
46
|
+
|
47
|
+
with_attr(:username) { |val| winrm.username = val }
|
48
|
+
with_attr(:password) { |val| winrm.password = val }
|
49
|
+
with_attr(:host) { |val| winrm.host = val }
|
50
|
+
with_attr(:guest) { |val| winrm.guest = val }
|
51
|
+
with_attr(:guest_port) { |val| winrm.guest_port = val }
|
52
|
+
with_attr(:max_tries) { |val| winrm.max_tries = val }
|
53
|
+
with_attr(:timeout) { |val| winrm.timeout = val }
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
data/lib/config_builder/model.rb
CHANGED
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.11.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-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: deep_merge
|
@@ -77,6 +77,7 @@ files:
|
|
77
77
|
- lib/config_builder/model/ssh.rb
|
78
78
|
- lib/config_builder/model/synced_folder.rb
|
79
79
|
- lib/config_builder/model/vm.rb
|
80
|
+
- lib/config_builder/model/winrm.rb
|
80
81
|
- lib/config_builder/model_delegator.rb
|
81
82
|
- lib/config_builder/plugin.rb
|
82
83
|
- lib/config_builder/runner.rb
|