vagrant-unbundled 2.2.9.0 → 2.2.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +60 -0
- data/README.md +5 -5
- data/contrib/README.md +1 -0
- data/contrib/sudoers/linux-suse +2 -2
- data/contrib/zsh/_vagrant +736 -0
- data/contrib/zsh/generate_zsh_completion.rb +166 -0
- data/lib/vagrant/action.rb +3 -0
- data/lib/vagrant/action/builder.rb +52 -18
- data/lib/vagrant/action/builtin/box_add.rb +6 -5
- data/lib/vagrant/action/builtin/cloud_init_setup.rb +127 -0
- data/lib/vagrant/action/builtin/cloud_init_wait.rb +30 -0
- data/lib/vagrant/action/builtin/handle_box.rb +1 -1
- data/lib/vagrant/action/builtin/handle_forwarded_port_collisions.rb +13 -13
- data/lib/vagrant/action/builtin/has_provisioner.rb +36 -0
- data/lib/vagrant/action/builtin/mixin_provisioners.rb +1 -0
- data/lib/vagrant/action/builtin/mixin_synced_folders.rb +20 -21
- data/lib/vagrant/action/builtin/set_hostname.rb +5 -1
- data/lib/vagrant/action/builtin/synced_folders.rb +10 -0
- data/lib/vagrant/action/builtin/trigger.rb +3 -2
- data/lib/vagrant/action/hook.rb +59 -24
- data/lib/vagrant/action/warden.rb +25 -5
- data/lib/vagrant/box.rb +5 -4
- data/lib/vagrant/bundler.rb +6 -1
- data/lib/vagrant/errors.rb +37 -1
- data/lib/vagrant/machine.rb +47 -0
- data/lib/vagrant/machine_index.rb +27 -1
- data/lib/vagrant/plugin/v2/command.rb +5 -1
- data/lib/vagrant/plugin/v2/components.rb +6 -0
- data/lib/vagrant/plugin/v2/manager.rb +14 -0
- data/lib/vagrant/plugin/v2/plugin.rb +12 -0
- data/lib/vagrant/plugin/v2/synced_folder.rb +50 -0
- data/lib/vagrant/plugin/v2/trigger.rb +6 -5
- data/lib/vagrant/ui.rb +1 -1
- data/lib/vagrant/util/ansi_escape_code_remover.rb +1 -1
- data/lib/vagrant/util/caps.rb +48 -0
- data/lib/vagrant/util/credential_scrubber.rb +1 -1
- data/lib/vagrant/util/directory.rb +19 -0
- data/lib/vagrant/util/downloader.rb +3 -3
- data/lib/vagrant/util/guest_hosts.rb +68 -0
- data/lib/vagrant/util/install_cli_autocomplete.rb +118 -0
- data/lib/vagrant/util/ipv4_interfaces.rb +15 -0
- data/lib/vagrant/util/is_port_open.rb +8 -19
- data/lib/vagrant/util/network_ip.rb +11 -1
- data/lib/vagrant/util/powershell.rb +1 -1
- data/lib/vagrant/util/subprocess.rb +9 -1
- data/lib/vagrant/vagrantfile.rb +1 -1
- data/plugins/commands/autocomplete/command/install.rb +49 -0
- data/plugins/commands/autocomplete/command/root.rb +64 -0
- data/plugins/commands/autocomplete/plugin.rb +18 -0
- data/plugins/commands/destroy/command.rb +6 -2
- data/plugins/communicators/ssh/communicator.rb +7 -1
- data/plugins/communicators/winrm/helper.rb +1 -1
- data/plugins/communicators/winssh/communicator.rb +1 -1
- data/plugins/guests/alpine/cap/change_host_name.rb +10 -11
- data/plugins/guests/alt/cap/change_host_name.rb +40 -53
- data/plugins/guests/arch/cap/change_host_name.rb +5 -14
- data/plugins/guests/arch/cap/configure_networks.rb +27 -10
- data/plugins/guests/atomic/cap/change_host_name.rb +5 -14
- data/plugins/guests/darwin/cap/change_host_name.rb +10 -6
- data/plugins/guests/debian/cap/change_host_name.rb +11 -11
- data/plugins/guests/esxi/cap/public_key.rb +3 -1
- data/plugins/guests/freebsd/cap/change_host_name.rb +10 -6
- data/plugins/guests/gentoo/cap/change_host_name.rb +14 -22
- data/plugins/guests/haiku/cap/rsync.rb +19 -0
- data/plugins/guests/haiku/plugin.rb +15 -0
- data/plugins/guests/linux/cap/change_host_name.rb +46 -0
- data/plugins/guests/linux/cap/mount_virtualbox_shared_folder.rb +4 -11
- data/plugins/guests/linux/cap/persist_mount_shared_folder.rb +62 -0
- data/plugins/guests/linux/plugin.rb +10 -0
- data/plugins/guests/omnios/cap/change_host_name.rb +10 -16
- data/plugins/guests/openbsd/cap/change_host_name.rb +10 -6
- data/plugins/guests/photon/cap/change_host_name.rb +9 -15
- data/plugins/guests/pld/cap/change_host_name.rb +11 -17
- data/plugins/guests/redhat/cap/change_host_name.rb +10 -5
- data/plugins/guests/slackware/cap/change_host_name.rb +11 -17
- data/plugins/guests/solaris11/plugin.rb +5 -0
- data/plugins/guests/suse/cap/change_host_name.rb +12 -11
- data/plugins/hosts/darwin/cap/fs_iso.rb +49 -0
- data/plugins/hosts/darwin/plugin.rb +10 -0
- data/plugins/hosts/linux/cap/fs_iso.rb +49 -0
- data/plugins/hosts/linux/cap/rdp.rb +1 -1
- data/plugins/hosts/linux/plugin.rb +10 -0
- data/plugins/hosts/windows/cap/fs_iso.rb +48 -0
- data/plugins/hosts/windows/cap/rdp.rb +1 -1
- data/plugins/hosts/windows/plugin.rb +15 -0
- data/plugins/kernel_v2/config/cloud_init.rb +126 -0
- data/plugins/kernel_v2/config/disk.rb +40 -18
- data/plugins/kernel_v2/config/vm.rb +122 -13
- data/plugins/kernel_v2/config/vm_provisioner.rb +13 -2
- data/plugins/kernel_v2/config/vm_trigger.rb +5 -1
- data/plugins/providers/docker/action.rb +8 -17
- data/plugins/providers/docker/action/forwarded_ports.rb +2 -0
- data/plugins/providers/docker/action/prepare_forwarded_port_collision_params.rb +61 -0
- data/plugins/providers/docker/cap/has_communicator.rb +11 -0
- data/plugins/providers/docker/communicator.rb +1 -1
- data/plugins/providers/docker/driver.rb +35 -0
- data/plugins/providers/docker/plugin.rb +5 -0
- data/plugins/providers/hyperv/action.rb +2 -0
- data/plugins/providers/hyperv/action/configure.rb +8 -0
- data/plugins/providers/hyperv/cap/cleanup_disks.rb +54 -0
- data/plugins/providers/hyperv/cap/configure_disks.rb +200 -0
- data/plugins/providers/hyperv/cap/validate_disk_ext.rb +34 -0
- data/plugins/providers/hyperv/config.rb +5 -0
- data/plugins/providers/hyperv/driver.rb +80 -0
- data/plugins/providers/hyperv/plugin.rb +25 -0
- data/plugins/providers/hyperv/scripts/attach_disk_drive.ps1 +28 -0
- data/plugins/providers/hyperv/scripts/dismount_vhd.ps1 +13 -0
- data/plugins/providers/hyperv/scripts/get_vhd.ps1 +16 -0
- data/plugins/providers/hyperv/scripts/get_vm_status.ps1 +1 -1
- data/plugins/providers/hyperv/scripts/list_hdds.ps1 +17 -0
- data/plugins/providers/hyperv/scripts/new_vhd.ps1 +31 -0
- data/plugins/providers/hyperv/scripts/remove_disk_drive.ps1 +25 -0
- data/plugins/providers/hyperv/scripts/resize_disk_drive.ps1 +18 -0
- data/plugins/providers/hyperv/scripts/set_enhanced_session_transport_type.ps1 +24 -0
- data/plugins/providers/hyperv/scripts/utils/VagrantVM/VagrantVM.psm1 +8 -0
- data/plugins/providers/virtualbox/action.rb +12 -1
- data/plugins/providers/virtualbox/action/forward_ports.rb +2 -2
- data/plugins/providers/virtualbox/cap/cleanup_disks.rb +40 -9
- data/plugins/providers/virtualbox/cap/configure_disks.rb +230 -77
- data/plugins/providers/virtualbox/cap/mount_options.rb +35 -0
- data/plugins/providers/virtualbox/cap/validate_disk_ext.rb +10 -3
- data/plugins/providers/virtualbox/driver/meta.rb +3 -0
- data/plugins/providers/virtualbox/driver/version_5_0.rb +96 -21
- data/plugins/providers/virtualbox/model/storage_controller.rb +135 -0
- data/plugins/providers/virtualbox/model/storage_controller_array.rb +100 -0
- data/plugins/providers/virtualbox/plugin.rb +18 -1
- data/plugins/providers/virtualbox/synced_folder.rb +1 -0
- data/plugins/provisioners/container/client.rb +1 -1
- data/plugins/provisioners/shell/provisioner.rb +15 -9
- data/plugins/synced_folders/nfs/synced_folder.rb +3 -1
- data/plugins/synced_folders/smb/cap/default_fstab_modification.rb +11 -0
- data/plugins/synced_folders/smb/cap/mount_options.rb +36 -0
- data/plugins/synced_folders/smb/plugin.rb +10 -0
- data/plugins/synced_folders/smb/synced_folder.rb +1 -1
- data/plugins/synced_folders/unix_mount_helpers.rb +14 -0
- data/templates/guests/arch/{network_dhcp.erb → default_network/network_dhcp.erb} +0 -0
- data/templates/guests/arch/{network_static.erb → default_network/network_static.erb} +0 -0
- data/templates/guests/arch/{network_static6.erb → default_network/network_static6.erb} +0 -0
- data/templates/guests/arch/systemd_networkd/network_dhcp.erb +6 -0
- data/templates/guests/arch/systemd_networkd/network_static.erb +9 -0
- data/templates/guests/arch/systemd_networkd/network_static6.erb +9 -0
- data/templates/guests/linux/etc_fstab.erb +6 -0
- data/templates/locales/en.yml +121 -11
- data/templates/locales/providers_docker.yml +4 -0
- data/vagrant.gemspec +8 -7
- data/version.txt +1 -1
- metadata +1492 -1309
@@ -0,0 +1,34 @@
|
|
1
|
+
require "log4r"
|
2
|
+
|
3
|
+
module VagrantPlugins
|
4
|
+
module HyperV
|
5
|
+
module Cap
|
6
|
+
module ValidateDiskExt
|
7
|
+
LOGGER = Log4r::Logger.new("vagrant::plugins::hyperv::validate_disk_ext")
|
8
|
+
|
9
|
+
# The default set of disk formats that Hyper-V supports
|
10
|
+
DEFAULT_DISK_EXT_LIST = ["vhd", "vhdx"].map(&:freeze).freeze
|
11
|
+
DEFAULT_DISK_EXT = "vhdx".freeze
|
12
|
+
|
13
|
+
# @param [Vagrant::Machine] machine
|
14
|
+
# @param [String] disk_ext
|
15
|
+
# @return [Bool]
|
16
|
+
def self.validate_disk_ext(machine, disk_ext)
|
17
|
+
DEFAULT_DISK_EXT_LIST.include?(disk_ext)
|
18
|
+
end
|
19
|
+
|
20
|
+
# @param [Vagrant::Machine] machine
|
21
|
+
# @return [Array]
|
22
|
+
def self.default_disk_exts(machine)
|
23
|
+
DEFAULT_DISK_EXT_LIST
|
24
|
+
end
|
25
|
+
|
26
|
+
# @param [Vagrant::Machine] machine
|
27
|
+
# @return [String]
|
28
|
+
def self.set_default_disk_ext(machine)
|
29
|
+
DEFAULT_DISK_EXT
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -48,6 +48,8 @@ module VagrantPlugins
|
|
48
48
|
attr_accessor :enable_virtualization_extensions
|
49
49
|
# @return [Hash] Options for VMServiceIntegration
|
50
50
|
attr_accessor :vm_integration_services
|
51
|
+
# @return [Boolean] Enable Enhanced session mode
|
52
|
+
attr_accessor :enable_enhanced_session_mode
|
51
53
|
|
52
54
|
def initialize
|
53
55
|
@ip_address_timeout = UNSET_VALUE
|
@@ -65,6 +67,7 @@ module VagrantPlugins
|
|
65
67
|
@enable_automatic_checkpoints = UNSET_VALUE
|
66
68
|
@enable_checkpoints = UNSET_VALUE
|
67
69
|
@vm_integration_services = {}
|
70
|
+
@enable_enhanced_session_mode = UNSET_VALUE
|
68
71
|
end
|
69
72
|
|
70
73
|
def finalize!
|
@@ -102,6 +105,8 @@ module VagrantPlugins
|
|
102
105
|
|
103
106
|
# If automatic checkpoints are enabled, checkpoints will automatically be enabled
|
104
107
|
@enable_checkpoints ||= @enable_automatic_checkpoints
|
108
|
+
|
109
|
+
@enable_enhanced_session_mode = false if @enable_enhanced_session_mode == UNSET_VALUE
|
105
110
|
end
|
106
111
|
|
107
112
|
def validate(machine)
|
@@ -218,6 +218,85 @@ module VagrantPlugins
|
|
218
218
|
execute(:set_name, VMID: vm_id, VMName: vmname)
|
219
219
|
end
|
220
220
|
|
221
|
+
#
|
222
|
+
# Disk Driver methods
|
223
|
+
#
|
224
|
+
|
225
|
+
# @param [String] controller_type
|
226
|
+
# @param [String] controller_number
|
227
|
+
# @param [String] controller_location
|
228
|
+
# @param [Hash] opts
|
229
|
+
# @option opts [String] :ControllerType
|
230
|
+
# @option opts [String] :ControllerNumber
|
231
|
+
# @option opts [String] :ControllerLocation
|
232
|
+
def attach_disk(disk_file_path, **opts)
|
233
|
+
execute(:attach_disk_drive, VmId: @vm_id, Path: disk_file_path, ControllerType: opts[:ControllerType],
|
234
|
+
ControllerNumber: opts[:ControllerNumber], ControllerLocation: opts[:ControllerLocation])
|
235
|
+
end
|
236
|
+
|
237
|
+
# @param [String] path
|
238
|
+
# @param [Int] size_bytes
|
239
|
+
# @param [Hash] opts
|
240
|
+
# @option opts [Bool] :Fixed
|
241
|
+
# @option opts [String] :BlockSizeBytes
|
242
|
+
# @option opts [String] :LogicalSectorSizeBytes
|
243
|
+
# @option opts [String] :PhysicalSectorSizeBytes
|
244
|
+
# @option opts [String] :SourceDisk
|
245
|
+
# @option opts [Bool] :Differencing
|
246
|
+
# @option opts [String] :ParentPath
|
247
|
+
def create_disk(path, size_bytes, **opts)
|
248
|
+
execute(:new_vhd, Path: path, SizeBytes: size_bytes, Fixed: opts[:Fixed],
|
249
|
+
BlockSizeBytes: opts[:BlockSizeBytes], LogicalSectorSizeBytes: opts[:LogicalSectorSizeBytes],
|
250
|
+
PhysicalSectorSizeBytes: opts[:PhysicalSectorSizeBytes],
|
251
|
+
SourceDisk: opts[:SourceDisk], Differencing: opts[:Differencing],
|
252
|
+
ParentPath: opts[:ParentPath])
|
253
|
+
end
|
254
|
+
|
255
|
+
# @param [String] disk_file_path
|
256
|
+
def dismount_disk(disk_file_path)
|
257
|
+
execute(:dismount_vhd, DiskFilePath: disk_file_path)
|
258
|
+
end
|
259
|
+
|
260
|
+
# @param [String] disk_file_path
|
261
|
+
def get_disk(disk_file_path)
|
262
|
+
execute(:get_vhd, DiskFilePath: disk_file_path)
|
263
|
+
end
|
264
|
+
|
265
|
+
# @return [Array[Hash]]
|
266
|
+
def list_hdds
|
267
|
+
execute(:list_hdds, VmId: @vm_id)
|
268
|
+
end
|
269
|
+
|
270
|
+
# @param [String] controller_type
|
271
|
+
# @param [String] controller_number
|
272
|
+
# @param [String] controller_location
|
273
|
+
# @param [String] disk_file_path
|
274
|
+
# @param [Hash] opts
|
275
|
+
# @option opts [String] :ControllerType
|
276
|
+
# @option opts [String] :ControllerNumber
|
277
|
+
# @option opts [String] :ControllerLocation
|
278
|
+
def remove_disk(controller_type, controller_number, controller_location, disk_file_path, **opts)
|
279
|
+
execute(:remove_disk_drive, VmId: @vm_id, ControllerType: controller_type,
|
280
|
+
ControllerNumber: controller_number, ControllerLocation: controller_location,
|
281
|
+
DiskFilePath: disk_file_path)
|
282
|
+
end
|
283
|
+
|
284
|
+
# @param [String] path
|
285
|
+
# @param [Int] size_bytes
|
286
|
+
# @param [Hash] opts
|
287
|
+
def resize_disk(disk_file_path, size_bytes, **opts)
|
288
|
+
execute(:resize_disk_drive, VmId: @vm_id, DiskFilePath: disk_file_path,
|
289
|
+
DiskSize: size_bytes)
|
290
|
+
end
|
291
|
+
|
292
|
+
# Set enhanced session transport type of the VM
|
293
|
+
#
|
294
|
+
# @param [String] enhanced session transport type of the VM
|
295
|
+
# @return [nil]
|
296
|
+
def set_enhanced_session_transport_type(transport_type)
|
297
|
+
execute(:set_enhanced_session_transport_type, VmID: vm_id, type: transport_type)
|
298
|
+
end
|
299
|
+
|
221
300
|
protected
|
222
301
|
|
223
302
|
def execute_powershell(path, options, &block)
|
@@ -227,6 +306,7 @@ module VagrantPlugins
|
|
227
306
|
options = options || {}
|
228
307
|
ps_options = []
|
229
308
|
options.each do |key, value|
|
309
|
+
next if !value || value.to_s.empty?
|
230
310
|
next if value == false
|
231
311
|
ps_options << "-#{key}"
|
232
312
|
# If the value is a TrueClass assume switch
|
@@ -32,6 +32,31 @@ module VagrantPlugins
|
|
32
32
|
Cap::SnapshotList
|
33
33
|
end
|
34
34
|
|
35
|
+
provider_capability(:hyperv, :configure_disks) do
|
36
|
+
require_relative "cap/configure_disks"
|
37
|
+
Cap::ConfigureDisks
|
38
|
+
end
|
39
|
+
|
40
|
+
provider_capability(:hyperv, :cleanup_disks) do
|
41
|
+
require_relative "cap/cleanup_disks"
|
42
|
+
Cap::CleanupDisks
|
43
|
+
end
|
44
|
+
|
45
|
+
provider_capability(:hyperv, :validate_disk_ext) do
|
46
|
+
require_relative "cap/validate_disk_ext"
|
47
|
+
Cap::ValidateDiskExt
|
48
|
+
end
|
49
|
+
|
50
|
+
provider_capability(:hyperv, :default_disk_exts) do
|
51
|
+
require_relative "cap/validate_disk_ext"
|
52
|
+
Cap::ValidateDiskExt
|
53
|
+
end
|
54
|
+
|
55
|
+
provider_capability(:hyperv, :set_default_disk_ext) do
|
56
|
+
require_relative "cap/validate_disk_ext"
|
57
|
+
Cap::ValidateDiskExt
|
58
|
+
end
|
59
|
+
|
35
60
|
protected
|
36
61
|
|
37
62
|
def self.init!
|
@@ -0,0 +1,28 @@
|
|
1
|
+
#Requires -Modules VagrantMessages
|
2
|
+
|
3
|
+
param(
|
4
|
+
[Parameter(Mandatory=$true)]
|
5
|
+
[string]$VmId,
|
6
|
+
[Parameter(Mandatory=$true)]
|
7
|
+
[string]$Path,
|
8
|
+
[string]$ControllerType,
|
9
|
+
[string]$ControllerNumber,
|
10
|
+
[string]$ControllerLocation
|
11
|
+
)
|
12
|
+
|
13
|
+
$Params = @{}
|
14
|
+
|
15
|
+
foreach ($key in $MyInvocation.BoundParameters.keys) {
|
16
|
+
$value = (Get-Variable -Exclude "ErrorAction" $key).Value
|
17
|
+
if (($key -ne "VmId") -and ($key -ne "ErrorAction")) {
|
18
|
+
$Params.Add($key, $value)
|
19
|
+
}
|
20
|
+
}
|
21
|
+
|
22
|
+
try {
|
23
|
+
$VM = Hyper-V\Get-VM -Id $VmId
|
24
|
+
Hyper-V\Add-VMHardDiskDrive -VMName $VM.Name @Params
|
25
|
+
} catch {
|
26
|
+
Write-ErrorMessage "Failed to attach disk ${DiskFilePath} to VM ${VM}: ${PSItem}"
|
27
|
+
exit 1
|
28
|
+
}
|
@@ -0,0 +1,13 @@
|
|
1
|
+
#Requires -Modules VagrantMessages
|
2
|
+
|
3
|
+
param(
|
4
|
+
[Parameter(Mandatory=$true)]
|
5
|
+
[string]$DiskFilePath
|
6
|
+
)
|
7
|
+
|
8
|
+
try {
|
9
|
+
Hyper-V\Dismount-VHD -path $DiskFilePath
|
10
|
+
} catch {
|
11
|
+
Write-ErrorMessage "Failed to dismount disk info from disk file path ${DiskFilePath}: ${PSItem}"
|
12
|
+
exit 1
|
13
|
+
}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
#Requires -Modules VagrantMessages
|
2
|
+
|
3
|
+
param(
|
4
|
+
[Parameter(Mandatory=$true)]
|
5
|
+
[string]$DiskFilePath
|
6
|
+
)
|
7
|
+
|
8
|
+
try {
|
9
|
+
$Disk = Hyper-V\Get-VHD -path $DiskFilePath
|
10
|
+
} catch {
|
11
|
+
Write-ErrorMessage "Failed to retrieve disk info from disk file path ${DiskFilePath}: ${PSItem}"
|
12
|
+
exit 1
|
13
|
+
}
|
14
|
+
|
15
|
+
$result = ConvertTo-json $Disk
|
16
|
+
Write-OutputMessage $result
|
@@ -14,7 +14,7 @@ try
|
|
14
14
|
# type was loaded in Microsoft.HyperV.PowerShell
|
15
15
|
[void][System.Reflection.Assembly]::LoadWithPartialName('Microsoft.HyperV.PowerShell.Objects, Culture=neutral, PublicKeyToken=31bf3856ad364e35')
|
16
16
|
} catch {
|
17
|
-
|
17
|
+
# Empty catch ok, since if we didn't load the types, we will fail in the next block
|
18
18
|
}
|
19
19
|
|
20
20
|
$VmmsPath = if ([environment]::Is64BitProcess) { "$($env:SystemRoot)\System32\vmms.exe" } else { "$($env:SystemRoot)\Sysnative\vmms.exe" }
|
@@ -0,0 +1,17 @@
|
|
1
|
+
#Requires -Modules VagrantMessages
|
2
|
+
|
3
|
+
param(
|
4
|
+
[Parameter(Mandatory=$true)]
|
5
|
+
[string]$VmId
|
6
|
+
)
|
7
|
+
|
8
|
+
try {
|
9
|
+
$VM = Hyper-V\Get-VM -Id $VmId
|
10
|
+
$Disks = @(Hyper-V\Get-VMHardDiskDrive -VMName $VM.Name)
|
11
|
+
} catch {
|
12
|
+
Write-ErrorMessage "Failed to retrieve all disk info from ${VM}: ${PSItem}"
|
13
|
+
exit 1
|
14
|
+
}
|
15
|
+
|
16
|
+
$result = ConvertTo-json $Disks
|
17
|
+
Write-OutputMessage $result
|
@@ -0,0 +1,31 @@
|
|
1
|
+
#Requires -Modules VagrantMessages
|
2
|
+
|
3
|
+
param(
|
4
|
+
[Parameter(Mandatory=$true)]
|
5
|
+
[string]$Path,
|
6
|
+
[Parameter(Mandatory=$true)]
|
7
|
+
[UInt64]$SizeBytes,
|
8
|
+
[switch]$Fixed,
|
9
|
+
[switch]$Differencing,
|
10
|
+
[string]$ParentPath,
|
11
|
+
[Uint32]$BlockSizeBytes,
|
12
|
+
[UInt32]$LogicalSectorSizeBytes,
|
13
|
+
[UInt32]$PhysicalSectorSizeBytes,
|
14
|
+
[UInt32]$SourceDisk
|
15
|
+
)
|
16
|
+
|
17
|
+
$Params = @{}
|
18
|
+
|
19
|
+
foreach ($key in $MyInvocation.BoundParameters.keys) {
|
20
|
+
$value = (Get-Variable -Exclude "ErrorAction" $key).Value
|
21
|
+
if ($key -ne "ErrorAction") {
|
22
|
+
$Params.Add($key, $value)
|
23
|
+
}
|
24
|
+
}
|
25
|
+
|
26
|
+
try {
|
27
|
+
Hyper-V\New-VHD @Params
|
28
|
+
} catch {
|
29
|
+
Write-ErrorMessage "Failed to create disk ${DiskFilePath}: ${PSItem}"
|
30
|
+
exit 1
|
31
|
+
}
|
@@ -0,0 +1,25 @@
|
|
1
|
+
#Requires -Modules VagrantMessages
|
2
|
+
|
3
|
+
param(
|
4
|
+
[Parameter(Mandatory=$true)]
|
5
|
+
[string]$VmId,
|
6
|
+
[Parameter(Mandatory=$true)]
|
7
|
+
[string]$ControllerType,
|
8
|
+
[Parameter(Mandatory=$true)]
|
9
|
+
[string]$ControllerNumber,
|
10
|
+
[Parameter(Mandatory=$true)]
|
11
|
+
[string]$ControllerLocation,
|
12
|
+
[Parameter(Mandatory=$true)]
|
13
|
+
[string]$DiskFilePath
|
14
|
+
)
|
15
|
+
|
16
|
+
try {
|
17
|
+
$VM = Hyper-V\Get-VM -Id $VmId
|
18
|
+
|
19
|
+
Hyper-v\Remove-VMHardDiskDrive -VMName $VM.Name -ControllerType $ControllerType -ControllerNumber $ControllerNumber -ControllerLocation $ControllerLocation
|
20
|
+
|
21
|
+
Remove-Item -Path $DiskFilePath
|
22
|
+
} catch {
|
23
|
+
Write-ErrorMessage "Failed to remove disk ${DiskFilePath} to VM ${VM}: ${PSItem}"
|
24
|
+
exit 1
|
25
|
+
}
|
@@ -0,0 +1,18 @@
|
|
1
|
+
#Requires -Modules VagrantMessages
|
2
|
+
|
3
|
+
param(
|
4
|
+
[Parameter(Mandatory=$true)]
|
5
|
+
[string]$VmId,
|
6
|
+
[Parameter(Mandatory=$true)]
|
7
|
+
[string]$DiskFilePath,
|
8
|
+
[Parameter(Mandatory=$true)]
|
9
|
+
[UInt64]$DiskSize
|
10
|
+
)
|
11
|
+
|
12
|
+
try {
|
13
|
+
$VM = Hyper-V\Get-VM -Id $VmId
|
14
|
+
Hyper-V\Resize-VHD -Path $DiskFilePath -SizeBytes $DiskSize
|
15
|
+
} catch {
|
16
|
+
Write-ErrorMessage "Failed to resize disk ${DiskFilePath} for VM ${VM}: ${PSItem}"
|
17
|
+
exit 1
|
18
|
+
}
|
@@ -0,0 +1,24 @@
|
|
1
|
+
#Requires -Modules VagrantMessages
|
2
|
+
|
3
|
+
param (
|
4
|
+
[parameter (Mandatory=$true)]
|
5
|
+
[Guid] $VMID,
|
6
|
+
[parameter (Mandatory=$true)]
|
7
|
+
[string] $Type
|
8
|
+
)
|
9
|
+
|
10
|
+
$ErrorActionPreference = "Stop"
|
11
|
+
|
12
|
+
try {
|
13
|
+
$VM = Hyper-V\Get-VM -Id $VMID
|
14
|
+
} catch {
|
15
|
+
Write-ErrorMessage "Failed to locate VM: ${PSItem}"
|
16
|
+
exit 1
|
17
|
+
}
|
18
|
+
|
19
|
+
try {
|
20
|
+
Hyper-V\Set-VM -VM $VM -EnhancedSessionTransportType $Type
|
21
|
+
} catch {
|
22
|
+
Write-ErrorMessage "Failed to assign EnhancedSessionTransportType to ${Type}: ${PSItem}"
|
23
|
+
exit 1
|
24
|
+
}
|
@@ -223,6 +223,7 @@ function New-VagrantVMXML {
|
|
223
223
|
|
224
224
|
# Determine if secure boot is enabled
|
225
225
|
$SecureBoot = (Select-Xml -XML $VMConfig -XPath "//secure_boot_enabled").Node."#text"
|
226
|
+
$SecureBootTemplate = (Select-Xml -XML $VMConfig -XPath "//secure_boot_template").Node."#text"
|
226
227
|
|
227
228
|
$NewVMConfig = @{
|
228
229
|
Name = $VMName;
|
@@ -242,6 +243,13 @@ function New-VagrantVMXML {
|
|
242
243
|
if($Gen -gt 1) {
|
243
244
|
if($SecureBoot -eq "True") {
|
244
245
|
Hyper-V\Set-VMFirmware -VM $VM -EnableSecureBoot On
|
246
|
+
if (
|
247
|
+
( ![System.String]::IsNullOrEmpty($SecureBootTemplate) )`
|
248
|
+
-and`
|
249
|
+
( (Get-Command Hyper-V\Set-VMFirmware).Parameters.Keys.Contains("secureboottemplate") )
|
250
|
+
) {
|
251
|
+
Hyper-V\Set-VMFirmware -VM $VM -SecureBootTemplate $SecureBootTemplate
|
252
|
+
}
|
245
253
|
} else {
|
246
254
|
Hyper-V\Set-VMFirmware -VM $VM -EnableSecureBoot Off
|
247
255
|
}
|
@@ -79,12 +79,22 @@ module VagrantPlugins
|
|
79
79
|
b.use ForwardPorts
|
80
80
|
b.use SetHostname
|
81
81
|
b.use SaneDefaults
|
82
|
+
b.use Call, IsEnvSet, :cloud_init do |env, b2|
|
83
|
+
if env[:result]
|
84
|
+
b2.use CloudInitSetup
|
85
|
+
end
|
86
|
+
end
|
82
87
|
b.use CleanupDisks
|
83
88
|
b.use Disk
|
84
89
|
b.use Customize, "pre-boot"
|
85
90
|
b.use Boot
|
86
91
|
b.use Customize, "post-boot"
|
87
92
|
b.use WaitForCommunicator, [:starting, :running]
|
93
|
+
b.use Call, IsEnvSet, :cloud_init do |env, b2|
|
94
|
+
if env[:result]
|
95
|
+
b2.use CloudInitWait
|
96
|
+
end
|
97
|
+
end
|
88
98
|
b.use Customize, "post-comm"
|
89
99
|
b.use CheckGuestAdditions
|
90
100
|
end
|
@@ -106,7 +116,7 @@ module VagrantPlugins
|
|
106
116
|
b3.use ConfigValidate
|
107
117
|
b3.use ProvisionerCleanup, :before
|
108
118
|
b3.use CheckAccessible
|
109
|
-
b3.use EnvSet, force_halt:
|
119
|
+
b3.use EnvSet, force_halt: env2[:force_halt]
|
110
120
|
b3.use action_halt
|
111
121
|
b3.use Destroy
|
112
122
|
b3.use CleanMachineFolder
|
@@ -411,6 +421,7 @@ module VagrantPlugins
|
|
411
421
|
end
|
412
422
|
end
|
413
423
|
|
424
|
+
b.use EnvSet, cloud_init: true
|
414
425
|
b.use action_start
|
415
426
|
end
|
416
427
|
end
|
@@ -48,7 +48,7 @@ module VagrantPlugins
|
|
48
48
|
# bridged networking don't require port-forwarding and establishing
|
49
49
|
# forwarded ports on these attachment types has uncertain behaviour.
|
50
50
|
@env[:ui].detail(I18n.t("vagrant.actions.vm.forward_ports.forwarding_entry",
|
51
|
-
message_attributes))
|
51
|
+
**message_attributes))
|
52
52
|
|
53
53
|
# Verify we have the network interface to attach to
|
54
54
|
if !interfaces[fp.adapter]
|
@@ -62,7 +62,7 @@ module VagrantPlugins
|
|
62
62
|
# so verify that that is the case.
|
63
63
|
if interfaces[fp.adapter][:type] != :nat
|
64
64
|
@env[:ui].detail(I18n.t("vagrant.actions.vm.forward_ports.non_nat",
|
65
|
-
message_attributes))
|
65
|
+
**message_attributes))
|
66
66
|
next
|
67
67
|
end
|
68
68
|
|