vagrant-azure 2.0.0.pre2 → 2.0.0.pre3
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/README.md +52 -14
- data/lib/vagrant-azure/action/run_instance.rb +1 -0
- data/lib/vagrant-azure/action/terminate_instance.rb +7 -2
- data/lib/vagrant-azure/config.rb +7 -0
- data/lib/vagrant-azure/version.rb +1 -1
- data/spec/spec_helper.rb +0 -29
- data/templates/arm/deployment.json.erb +16 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 500531015ee4b9fa81557c8398f1fed55455cc4c
|
4
|
+
data.tar.gz: dec5502ea4dab238bb49cd61b2559102ad4eada6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2dce397adb9a233f7294d3f857e7de47c192b76a4da0f959e826a0ca449015bba6984d655d6a23d19d4d7a83e027f92facf35ba55cf084855d91dfe8f82c509b
|
7
|
+
data.tar.gz: 18d6a73dd73b31e4cafa27b29aaffcfb626653d6f6e36a7aab6a49853658872faadc6ae94b87c26456280b40b5dbe838ce973426eac029c3fd98cc9569902329
|
data/README.md
CHANGED
@@ -11,10 +11,10 @@ provider to Vagrant, allowing Vagrant to control and provision machines in Micro
|
|
11
11
|
|
12
12
|
Install the vagrant-azure plugin using the standard Vagrant 1.1+ installation methods. After installing the plugin, you can ```vagrant up``` and use ```azure``` provider. For example:
|
13
13
|
|
14
|
-
```
|
15
|
-
vagrant plugin install vagrant-azure --plugin-version '2.0.0.
|
14
|
+
```sh
|
15
|
+
& vagrant plugin install vagrant-azure --plugin-version '2.0.0.pre3'
|
16
16
|
...
|
17
|
-
vagrant up --provider=azure
|
17
|
+
$ vagrant up --provider=azure
|
18
18
|
...
|
19
19
|
```
|
20
20
|
|
@@ -24,12 +24,12 @@ You'll need an ```azure``` box before you can do ```vagrant up``` though.
|
|
24
24
|
|
25
25
|
You can use the dummy box and specify all the required details manually in the ```config.vm.provider``` block in your ```Vagrantfile```. Add the dummy box with the name you want:
|
26
26
|
|
27
|
-
```
|
28
|
-
vagrant box add azure https://github.com/azure/vagrant-azure/raw/v2.0/dummy.box
|
27
|
+
```sh
|
28
|
+
$ vagrant box add azure https://github.com/azure/vagrant-azure/raw/v2.0/dummy.box
|
29
29
|
...
|
30
30
|
```
|
31
31
|
|
32
|
-
|
32
|
+
For ***nix**, edit your `Vagrantfile` as shown below and provide all the values as explained.
|
33
33
|
|
34
34
|
```ruby
|
35
35
|
Vagrant.configure('2') do |config|
|
@@ -52,10 +52,41 @@ Vagrant.configure('2') do |config|
|
|
52
52
|
end
|
53
53
|
```
|
54
54
|
|
55
|
-
|
55
|
+
For **Windows**, edit your `Vagrantfile` as shown below and provide all the values as explained.
|
56
|
+
|
57
|
+
```ruby
|
58
|
+
Vagrant.configure('2') do |config|
|
59
|
+
config.vm.box = 'azure'
|
56
60
|
|
61
|
+
config.vm.provider :azure do |azure, override|
|
62
|
+
|
63
|
+
# use Azure Active Directory Application / Service Principal to connect to Azure
|
64
|
+
# see: https://azure.microsoft.com/en-us/documentation/articles/resource-group-create-service-principal-portal/
|
65
|
+
|
66
|
+
# each of the below values will default to use the env vars named as below if not specified explicitly
|
67
|
+
azure.tenant_id = ENV['AZURE_TENANT_ID']
|
68
|
+
azure.client_id = ENV['AZURE_CLIENT_ID']
|
69
|
+
azure.client_secret = ENV['AZURE_CLIENT_SECRET']
|
70
|
+
azure.subscription_id = ENV['AZURE_SUBSCRIPTION_ID']
|
71
|
+
|
72
|
+
azure.vm_image_urn = 'MicrosoftSQLServer:SQL2016-WS2012R2:Express:latest'
|
73
|
+
azure.instance_ready_timeout = 600
|
74
|
+
azure.vm_password = 'TopSecretPassw0rd'
|
75
|
+
azure.admin_username = "OctoAdmin"
|
76
|
+
azure.admin_password = 'TopSecretPassw0rd'
|
77
|
+
override.winrm.transport = :ssl
|
78
|
+
override.winrm.port = 5986
|
79
|
+
override.winrm.ssl_peer_verification = false # must be false if using a self signed cert
|
80
|
+
end
|
81
|
+
|
82
|
+
end
|
57
83
|
```
|
58
|
-
|
84
|
+
|
85
|
+
Now you can run
|
86
|
+
|
87
|
+
```sh
|
88
|
+
$ vagrant up --provider=azure
|
89
|
+
...
|
59
90
|
```
|
60
91
|
|
61
92
|
This will bring up an Azure VM as per the configuration options set above.
|
@@ -66,7 +97,7 @@ Normally, a lot of this options, e.g., ```vm_image_urn```, will be embedded in a
|
|
66
97
|
|
67
98
|
## Azure Boxes
|
68
99
|
|
69
|
-
The vagrant-azure plugin provides the ability to use ```Azure``` boxes with Vagrant. Please see the example box provided in [example_box
|
100
|
+
The vagrant-azure plugin provides the ability to use ```Azure``` boxes with Vagrant. Please see the example box provided in [example_box](https://github.com/azure/vagrant-azure/tree/v2.0/example_box) directory and follow the instructions there to build an ```azure``` box.
|
70
101
|
|
71
102
|
Please see [Vagrant Docs](http://docs.vagrantup.com/v2/) for more details.
|
72
103
|
|
@@ -76,21 +107,28 @@ The vagrant-azure provide exposes a few Azure specific configuration options:
|
|
76
107
|
|
77
108
|
### Mandatory
|
78
109
|
|
79
|
-
For instructions on how to setup an Azure Active Directory Application see: https://azure.microsoft.com/en-us/documentation/articles/resource-group-create-service-principal-portal
|
110
|
+
For instructions on how to setup an Azure Active Directory Application see: <https://azure.microsoft.com/en-us/documentation/articles/resource-group-create-service-principal-portal/>
|
111
|
+
|
80
112
|
* `tenant_id`: Your Azure Active Directory Tenant Id.
|
81
113
|
* `client_id`: Your Azure Active Directory application client id.
|
82
114
|
* `client_secret`: Your Azure Active Directory application client secret.
|
83
115
|
* `subscription_id`: The Azure subscription Id you'd like to use.
|
84
116
|
|
85
117
|
### Optional
|
118
|
+
|
86
119
|
* `resource_group_name`: (Optional) Name of the resource group to use.
|
87
|
-
* `location`: (Optional) Azure location to build the VM -- defaults to
|
120
|
+
* `location`: (Optional) Azure location to build the VM -- defaults to `westus`
|
88
121
|
* `vm_name`: (Optional) Name of the virtual machine
|
89
122
|
* `vm_password`: (Optional for *nix) Password for the VM -- This is not recommended for *nix deployments
|
90
|
-
* `vm_size`: (Optional) VM size to be used -- defaults to 'Standard_DS2_v2'. See
|
91
|
-
* `vm_image_urn`: (Optional) Name of the virtual machine image urn to use -- defaults to 'canonical:ubuntuserver:16.04-LTS:latest'. See
|
123
|
+
* `vm_size`: (Optional) VM size to be used -- defaults to 'Standard_DS2_v2'. See sizes for [*nix](https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-sizes/), [Windows](https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-windows-sizes/).
|
124
|
+
* `vm_image_urn`: (Optional) Name of the virtual machine image urn to use -- defaults to 'canonical:ubuntuserver:16.04-LTS:latest'. See documentation for [*nix](https://azure.microsoft.com/en-us/documentation/articles/virtual-machines-linux-cli-ps-findimage/), [Windows](https://docs.microsoft.com/en-us/azure/virtual-machines/virtual-machines-windows-cli-ps-findimage).
|
92
125
|
* `virtual_network_name`: (Optional) Name of the virtual network resource
|
93
126
|
* `subnet_name`: (Optional) Name of the virtual network subnet resource
|
94
127
|
* `instance_ready_timeout`: (Optional) The timeout to wait for an instance to become ready -- default 120 seconds.
|
95
128
|
* `instance_check_interval`: (Optional) The interval to wait for checking an instance's state -- default 2 seconds.
|
96
|
-
* `endpoint`: (Optional) The Azure Management API endpoint -- default 'https://management.azure.com
|
129
|
+
* `endpoint`: (Optional) The Azure Management API endpoint -- default `ENV['AZURE_MANAGEMENT_ENDPOINT']` if exists, falls back to <https://management.azure.com>.
|
130
|
+
* `admin_username`: (Optional) The root/administrator username for the VM
|
131
|
+
* `admin_password`: (Optional, Windows only) The password to set for the windows administrator user
|
132
|
+
* `winrm_install_self_signed_cert`: (Optional, Windows only) Whether to install a self-signed cert automatically to enable WinRM to communicate over HTTPS (5986). Only available when a custom `deployment_template` is not supplied. Default 'true'.
|
133
|
+
* `deployment_template`: (Optional) A custom ARM template to use instead of the default template
|
134
|
+
* `wait_for_destroy`: (Optional) Wait for all resources to be deleted prior to completing Vagrant destroy -- default false.
|
@@ -90,6 +90,7 @@ module VagrantPlugins
|
|
90
90
|
operating_system = get_image_os(image_details)
|
91
91
|
|
92
92
|
template_params = {
|
93
|
+
availability_set_name: availability_set_name,
|
93
94
|
operating_system: operating_system,
|
94
95
|
winrm_install_self_signed_cert: winrm_install_self_signed_cert,
|
95
96
|
winrm_port: winrm_port,
|
@@ -10,7 +10,7 @@ module VagrantPlugins
|
|
10
10
|
class TerminateInstance
|
11
11
|
include VagrantPlugins::Azure::Util::MachineIdHelper
|
12
12
|
|
13
|
-
def initialize(app,
|
13
|
+
def initialize(app, _)
|
14
14
|
@app = app
|
15
15
|
@logger = Log4r::Logger.new('vagrant_azure::action::terminate_instance')
|
16
16
|
end
|
@@ -23,7 +23,12 @@ module VagrantPlugins
|
|
23
23
|
env[:ui].info('Deleting resource group')
|
24
24
|
|
25
25
|
# Call the begin_xxx_async version to kick off the delete, but don't wait for the resource group to be cleaned up
|
26
|
-
env[:
|
26
|
+
if env[:machine].provider_config.wait_for_destroy
|
27
|
+
env[:azure_arm_service].resources.resource_groups.delete(parsed[:group])
|
28
|
+
else
|
29
|
+
env[:azure_arm_service].resources.resource_groups.begin_delete_async(parsed[:group]).value!
|
30
|
+
end
|
31
|
+
|
27
32
|
env[:ui].info('Resource group is deleting... Moving on.')
|
28
33
|
rescue MsRestAzure::AzureOperationError => ex
|
29
34
|
unless ex.response.status == 404
|
data/lib/vagrant-azure/config.rb
CHANGED
@@ -113,6 +113,11 @@ module VagrantPlugins
|
|
113
113
|
# @return [String]
|
114
114
|
attr_accessor :deployment_template
|
115
115
|
|
116
|
+
# (Optional) Wait for all resources to be deleted prior to completing Vagrant destroy -- default false.
|
117
|
+
#
|
118
|
+
# @return [String]
|
119
|
+
attr_accessor :wait_for_destroy
|
120
|
+
|
116
121
|
def initialize
|
117
122
|
@tenant_id = UNSET_VALUE
|
118
123
|
@client_id = UNSET_VALUE
|
@@ -135,6 +140,7 @@ module VagrantPlugins
|
|
135
140
|
@admin_password = UNSET_VALUE
|
136
141
|
@winrm_install_self_signed_cert = UNSET_VALUE
|
137
142
|
@deployment_template = UNSET_VALUE
|
143
|
+
@wait_for_destroy = UNSET_VALUE
|
138
144
|
end
|
139
145
|
|
140
146
|
def finalize!
|
@@ -162,6 +168,7 @@ module VagrantPlugins
|
|
162
168
|
@admin_password = (ENV['AZURE_VM_ADMIN_PASSWORD'] || '$Vagrant(0)') if @admin_password == UNSET_VALUE
|
163
169
|
@winrm_install_self_signed_cert = true if @winrm_install_self_signed_cert == UNSET_VALUE
|
164
170
|
@deployment_template = nil if @deployment_template == UNSET_VALUE
|
171
|
+
@wait_for_destroy = false if @wait_for_destroy == UNSET_VALUE
|
165
172
|
end
|
166
173
|
|
167
174
|
def validate(machine)
|
data/spec/spec_helper.rb
CHANGED
@@ -3,35 +3,6 @@
|
|
3
3
|
# Licensed under the MIT License. See License in the project root for license information.
|
4
4
|
require 'vagrant-azure'
|
5
5
|
|
6
|
-
if ENV['COVERAGE'] || ENV['CI'] || ENV['TRAVIS']
|
7
|
-
require 'simplecov'
|
8
|
-
require 'coveralls'
|
9
|
-
|
10
|
-
if ENV['TRAVIS']
|
11
|
-
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
12
|
-
SimpleCov::Formatter::HTMLFormatter,
|
13
|
-
Coveralls::SimpleCov::Formatter
|
14
|
-
]
|
15
|
-
else
|
16
|
-
SimpleCov.formatter = SimpleCov::Formatter::HTMLFormatter
|
17
|
-
end
|
18
|
-
|
19
|
-
SimpleCov.start do
|
20
|
-
project_name 'vagrant-azure'
|
21
|
-
add_filter '/build-tests/'
|
22
|
-
add_filter '/coverage/'
|
23
|
-
add_filter '/locales/'
|
24
|
-
add_filter '/templates/'
|
25
|
-
add_filter '/doc/'
|
26
|
-
add_filter '/example_box/'
|
27
|
-
add_filter '/pkg/'
|
28
|
-
add_filter '/spec/'
|
29
|
-
add_filter '/tasks/'
|
30
|
-
add_filter '/yard-template/'
|
31
|
-
add_filter '/yardoc/'
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
6
|
# import all the support files
|
36
7
|
Dir[File.join(File.dirname(__FILE__), 'support/**/*.rb')].each { |f| require File.expand_path(f) }
|
37
8
|
|
@@ -242,6 +242,14 @@
|
|
242
242
|
]
|
243
243
|
}
|
244
244
|
},
|
245
|
+
<% if availabilitySetName = availability_set_name.nil? || availability_set_name.empty? ? nil : availability_set_name %>
|
246
|
+
{
|
247
|
+
"apiVersion": "[variables('apiVersion')]",
|
248
|
+
"type": "Microsoft.Compute/availabilitySets",
|
249
|
+
"name": "<%= availabilitySetName %>",
|
250
|
+
"location": "[variables('location')]"
|
251
|
+
},
|
252
|
+
<% end %>
|
245
253
|
{
|
246
254
|
"apiVersion": "[variables('apiVersion')]",
|
247
255
|
"type": "Microsoft.Compute/virtualMachines",
|
@@ -250,6 +258,9 @@
|
|
250
258
|
"dependsOn": [
|
251
259
|
"[concat('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
|
252
260
|
"[concat('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
|
261
|
+
<% if availabilitySetName %>,
|
262
|
+
"[resourceId('Microsoft.Compute/availabilitySets', '<%= availabilitySetName %>')]"
|
263
|
+
<% end %>
|
253
264
|
],
|
254
265
|
<% if operating_system == 'Windows' %>
|
255
266
|
<%= self_signed_cert_resource %>
|
@@ -300,6 +311,11 @@
|
|
300
311
|
}
|
301
312
|
]
|
302
313
|
}
|
314
|
+
<% if availabilitySetName %>,
|
315
|
+
"availabilitySet": {
|
316
|
+
"id": "[resourceId('Microsoft.Compute/availabilitySets', '<%= availabilitySetName %>')]"
|
317
|
+
}
|
318
|
+
<% end %>
|
303
319
|
}
|
304
320
|
}
|
305
321
|
]
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vagrant-azure
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0.
|
4
|
+
version: 2.0.0.pre3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Azure
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-02-
|
11
|
+
date: 2017-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: azure_mgmt_resources
|