vagrant-azure 1.0.5 → 1.1.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.
Files changed (56) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +19 -15
  3. data/CHANGELOG.md +24 -24
  4. data/Gemfile +20 -15
  5. data/LICENSE +4 -4
  6. data/README.md +189 -125
  7. data/Rakefile +15 -14
  8. data/lib/vagrant-azure.rb +31 -33
  9. data/lib/vagrant-azure/action.rb +267 -243
  10. data/lib/vagrant-azure/action/connect_azure.rb +49 -46
  11. data/lib/vagrant-azure/action/os_type.rb +34 -0
  12. data/lib/vagrant-azure/action/powershell_run.rb +28 -0
  13. data/lib/vagrant-azure/action/provision.rb +42 -49
  14. data/lib/vagrant-azure/action/rdp.rb +63 -62
  15. data/lib/vagrant-azure/action/read_ssh_info.rb +54 -51
  16. data/lib/vagrant-azure/action/read_state.rb +47 -46
  17. data/lib/vagrant-azure/action/read_winrm_info.rb +57 -0
  18. data/lib/vagrant-azure/action/restart_vm.rb +28 -27
  19. data/lib/vagrant-azure/action/run_instance.rb +123 -115
  20. data/lib/vagrant-azure/action/start_instance.rb +35 -35
  21. data/lib/vagrant-azure/action/stop_instance.rb +42 -38
  22. data/lib/vagrant-azure/action/sync_folders.rb +64 -63
  23. data/lib/vagrant-azure/action/terminate_instance.rb +34 -34
  24. data/lib/vagrant-azure/action/vagrant_azure_service.rb +44 -43
  25. data/lib/vagrant-azure/action/wait_for_communicate.rb +39 -38
  26. data/lib/vagrant-azure/action/wait_for_state.rb +50 -49
  27. data/lib/vagrant-azure/capabilities/winrm.rb +12 -0
  28. data/lib/vagrant-azure/command/powershell.rb +43 -0
  29. data/lib/vagrant-azure/command/rdp.rb +24 -0
  30. data/lib/vagrant-azure/config.rb +158 -147
  31. data/lib/vagrant-azure/driver.rb +48 -84
  32. data/lib/vagrant-azure/errors.rb +28 -27
  33. data/lib/vagrant-azure/monkey_patch/azure.rb +46 -0
  34. data/lib/vagrant-azure/monkey_patch/winrm.rb +77 -0
  35. data/lib/vagrant-azure/plugin.rb +102 -91
  36. data/lib/vagrant-azure/provider.rb +74 -70
  37. data/lib/vagrant-azure/provisioner/chef-solo.rb +178 -177
  38. data/lib/vagrant-azure/provisioner/puppet.rb +116 -115
  39. data/lib/vagrant-azure/version.rb +11 -10
  40. data/locales/en.yml +37 -37
  41. data/templates/provisioners/chef-solo/solo.erb +51 -51
  42. data/vagrant-azure.gemspec +59 -58
  43. metadata +48 -38
  44. data/lib/vagrant-azure/command/rdp/command.rb +0 -21
  45. data/lib/vagrant-azure/communication/powershell.rb +0 -41
  46. data/lib/vagrant-azure/monkey_patch/machine.rb +0 -22
  47. data/lib/vagrant-azure/provisioner/shell.rb +0 -83
  48. data/lib/vagrant-azure/scripts/check_winrm.ps1 +0 -47
  49. data/lib/vagrant-azure/scripts/export_vm.ps1 +0 -31
  50. data/lib/vagrant-azure/scripts/file_sync.ps1 +0 -145
  51. data/lib/vagrant-azure/scripts/host_info.ps1 +0 -25
  52. data/lib/vagrant-azure/scripts/hyperv_manager.ps1 +0 -36
  53. data/lib/vagrant-azure/scripts/run_in_remote.ps1 +0 -32
  54. data/lib/vagrant-azure/scripts/upload_file.ps1 +0 -95
  55. data/lib/vagrant-azure/scripts/utils/create_session.ps1 +0 -34
  56. data/lib/vagrant-azure/scripts/utils/write_messages.ps1 +0 -18
@@ -1,32 +0,0 @@
1
- #-------------------------------------------------------------------------
2
- # Copyright (c) Microsoft Open Technologies, Inc.
3
- # All Rights Reserved. Licensed under the Apache 2.0 License.
4
- #--------------------------------------------------------------------------
5
-
6
- param (
7
- [string]$guest_ip = $(throw "-guest_ip is required."),
8
- [string]$guest_port = $(throw "-guest_port is required."),
9
- [string]$username = $(throw "-guest_username is required."),
10
- [string]$password = $(throw "-guest_password is required."),
11
- [string]$command = ""
12
- )
13
-
14
- # Include the following modules
15
- $presentDir = Split-Path -parent $PSCommandPath
16
- . ([System.IO.Path]::Combine($presentDir, "utils\write_messages.ps1"))
17
- . ([System.IO.Path]::Combine($presentDir, "utils\create_session.ps1"))
18
-
19
- try {
20
- $response = Create-Remote-Session $guest_ip $guest_port $username $password
21
- if (!$response["session"] -and $response["error"]) {
22
- Write-Host $response["error"]
23
- return
24
- }
25
- function Remote-Execute($command) {
26
- cmd /c $command
27
- }
28
- Invoke-Command -Session $response["session"] -ScriptBlock ${function:Remote-Execute} -ArgumentList $command -ErrorAction "stop"
29
- } catch {
30
- Write-Host $_
31
- return
32
- }
@@ -1,95 +0,0 @@
1
- #-------------------------------------------------------------------------
2
- # Copyright (c) Microsoft Open Technologies, Inc.
3
- # All Rights Reserved. Licensed under the Apache 2.0 License.
4
- #--------------------------------------------------------------------------
5
-
6
- param (
7
- [string]$host_path = $(throw "-host_path is required."),
8
- [string]$guest_path = $(throw "-guest_path is required."),
9
- [string]$guest_ip = $(throw "-guest_ip is required."),
10
- [string]$guest_port = $(throw "-guest_port is required."),
11
- [string]$username = $(throw "-guest_username is required."),
12
- [string]$password = $(throw "-guest_password is required.")
13
- )
14
-
15
- # Include the following modules
16
- $presentDir = Split-Path -parent $PSCommandPath
17
- . ([System.IO.Path]::Combine($presentDir, "utils\write_messages.ps1"))
18
- . ([System.IO.Path]::Combine($presentDir, "utils\create_session.ps1"))
19
-
20
- try {
21
- function Copy-File-To-VM($path, $content) {
22
- if (!(Test-Path $path)) {
23
- $folder = Split-Path $path
24
- New-Item $folder -type directory -Force
25
- }
26
-
27
- [IO.File]::WriteAllBytes($path, $content)
28
- }
29
-
30
- function Upload-FIle-To-VM($host_path, $guest_path, $session) {
31
- $contents = [IO.File]::ReadAllBytes($host_path)
32
- Invoke-Command -Session $session -ScriptBlock ${function:Copy-File-To-VM} -ArgumentList $guest_path,$contents
33
- }
34
-
35
- function Prepare-Guest-Folder($session) {
36
- # Create the guest folder if not exist
37
- $result = Invoke-Command -Session $session -ScriptBlock ${function:Create-Guest-Folder} -ArgumentList $guest_path
38
- }
39
-
40
- function Create-Guest-Folder($guest_path) {
41
- try {
42
- if (Test-Path $guest_path) {
43
- # First attempt to remove a Junction drive. The fall back to removing a
44
- # folder
45
- $junction = Get-Item $guest_path
46
- $junction.Delete()
47
- }
48
- }
49
- # Catch any [IOException]
50
- catch {
51
- Remove-Item "$guest_path" -Force -Recurse
52
- }
53
- New-Item "$guest_path" -type directory -Force
54
- }
55
-
56
- $response = Create-Remote-Session $guest_ip $guest_port $username $password
57
- if (!$response["session"] -and $response["error"]) {
58
- $errortHash = @{
59
- type = "PowerShellError"
60
- error = $response["error"]
61
- }
62
- Write-Error-Message $errortHash
63
- return
64
- }
65
- $session = $response["session"]
66
-
67
- # When Host path is a folder.
68
- # Find all files within it and copy to the Guest
69
- if (Test-Path $host_path -pathtype container) {
70
- # Open a remote PS Session with the guest
71
- Prepare-Guest-Folder $session
72
- # Copy all files from Host path to Guest Path
73
- Get-ChildItem $host_path -rec |
74
- Where-Object {$_.PSIsContainer -eq $false} |
75
- ForEach-Object -Process {
76
- $file_name = $_.Fullname.SubString($host_path.length)
77
- $from = $host_path + $file_name
78
- $to = $guest_path + $file_name
79
- Upload-FIle-To-VM $from $to $session
80
- }
81
- } elseif (Test-Path $host_path) {
82
- Upload-FIle-To-VM $host_path $guest_path $session
83
- }
84
- $resultHash = @{
85
- message = "OK"
86
- }
87
- Write-Output-Message $resultHash
88
- } catch {
89
- $errortHash = @{
90
- type = "PowerShellError"
91
- error ="Failed to copy file $_"
92
- }
93
- Write-Error-Message $errortHash
94
- return
95
- }
@@ -1,34 +0,0 @@
1
- #-------------------------------------------------------------------------
2
- # Copyright (c) Microsoft Open Technologies, Inc.
3
- # All Rights Reserved. Licensed under the Apache 2.0 License.
4
- #--------------------------------------------------------------------------
5
-
6
- function Get-Remote-Session($guest_ip, $guest_port, $username, $password) {
7
- $secstr = convertto-securestring -AsPlainText -Force -String $password
8
- $cred = new-object -typename System.Management.Automation.PSCredential -argumentlist $username, $secstr
9
- New-PSSession -ComputerName $guest_ip -Port $guest_port -Credential $cred -UseSSL -ErrorAction "stop"
10
- }
11
-
12
- function Create-Remote-Session($guest_ip, $guest_port, $username, $password) {
13
- $count = 0
14
- $session_error = ""
15
- $session = ""
16
- do {
17
- $count++
18
- try {
19
- $session = Get-Remote-Session $guest_ip $guest_port $username $password
20
- $session_error = ""
21
- }
22
- catch {
23
- Start-Sleep -s 1
24
- $session_error = $_
25
- $session = ""
26
- }
27
- }
28
- while (!$session -and $count -lt 20)
29
-
30
- return @{
31
- session = $session
32
- error = "$session_error"
33
- }
34
- }
@@ -1,18 +0,0 @@
1
- #-------------------------------------------------------------------------
2
- # Copyright (c) Microsoft Open Technologies, Inc.
3
- # All Rights Reserved. Licensed under the Apache 2.0 License.
4
- #--------------------------------------------------------------------------
5
-
6
- function Write-Error-Message($message) {
7
- $result = ConvertTo-Json $message
8
- Write-Host "===Begin-Error==="
9
- Write-Host $result
10
- Write-Host "===End-Error==="
11
- }
12
-
13
- function Write-Output-Message($message) {
14
- $result = ConvertTo-Json $message
15
- Write-Host "===Begin-Output==="
16
- Write-Host $result
17
- Write-Host "===End-Output==="
18
- }