vagrant-azure 1.0.5 → 1.1.0

Sign up to get free protection for your applications and to get access to all the features.
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
- }