kitchen-azurerm 0.2.2 → 0.2.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +3 -0
- data/README.md +1 -1
- data/lib/kitchen/driver/azurerm.rb +31 -11
- 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: 1f6ce83df5d29088ef7ebaaa11a832be94a7ee9d
|
4
|
+
data.tar.gz: 994ba64b254a493acd245aa68b01a80ba76733d9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 52f3d5911c4c6982e777c9f6697245f701ceddc1475de7846c51327a563326bad9ddd2dc78556ba5ad8f5b95be33cf988e2faa3e474e9aa2a3f4c1579abe31ab
|
7
|
+
data.tar.gz: ef139a046982e8f0fb1d09c70a0e26f11720f145cff459703fea7c11c6e89ff6f4870abbe970639dd7351b5d3504d425772ed4a819448487112997a60858a275
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,8 @@
|
|
1
1
|
# knife-azurerm Changelog
|
2
2
|
|
3
|
+
## [0.2.3] - 2015-12-17
|
4
|
+
- ```kitchen create``` can now be executed multiple times, updating an existing deployment if an error occurs (@smurawski)
|
5
|
+
|
3
6
|
## [0.2.2] - 2015-12-10
|
4
7
|
- Add an option for users to specify a custom script for WinRM (support Windows 2008 R2) (@andrewelizondo)
|
5
8
|
- Add azure_management_url parameter for Azure Stack support (@andrewelizondo)
|
data/README.md
CHANGED
@@ -23,7 +23,7 @@ You will essentially need 4 parameters from the above article to configure kitch
|
|
23
23
|
Using a text editor, open or create the file ```~/.azure/credentials``` and add the following section, noting there is one section per Subscription ID. **Make sure you save the file with UTF-8 encoding**
|
24
24
|
|
25
25
|
```ruby
|
26
|
-
[abcd1234-YOUR-
|
26
|
+
[abcd1234-YOUR-SUBSCRIPTION-ID-HERE-abcdef123456]
|
27
27
|
client_id = "48b9bba3-YOUR-GUID-HERE-90f0b68ce8ba"
|
28
28
|
client_secret = "your-client-secret-here"
|
29
29
|
tenant_id = "9c117323-YOUR-GUID-HERE-9ee430723ba3"
|
@@ -42,15 +42,8 @@ module Kitchen
|
|
42
42
|
end
|
43
43
|
|
44
44
|
def create(state)
|
45
|
-
state
|
46
|
-
|
47
|
-
state[:azure_resource_group_name] = "#{config[:azure_resource_group_name]}-#{formatted_time}"
|
48
|
-
state[:subscription_id] = config[:subscription_id]
|
49
|
-
state[:username] = config[:username]
|
50
|
-
state[:password] = config[:password]
|
51
|
-
state[:server_id] = "vm#{state[:uuid]}"
|
52
|
-
state[:vm_name] = config[:vm_name]
|
53
|
-
state[:azure_management_url] = config[:azure_management_url]
|
45
|
+
state = validate_state(state)
|
46
|
+
|
54
47
|
image_publisher, image_offer, image_sku, image_version = config[:image_urn].split(':', 4)
|
55
48
|
deployment_parameters = {
|
56
49
|
location: config[:location],
|
@@ -87,8 +80,15 @@ module Kitchen
|
|
87
80
|
info "Creating Deployment: #{deployment_name}"
|
88
81
|
resource_management_client.deployments.create_or_update(state[:azure_resource_group_name], deployment_name, deployment(template_for_transport_name, deployment_parameters)).value!
|
89
82
|
rescue ::MsRestAzure::AzureOperationError => operation_error
|
90
|
-
|
91
|
-
|
83
|
+
rest_error = operation_error.body['error']
|
84
|
+
deployment_active = rest_error['code'] == 'DeploymentActive'
|
85
|
+
if deployment_active
|
86
|
+
info "Deployment for resource group #{state[:azure_resource_group_name]} is ongoing."
|
87
|
+
info "If you need to change the deployment template you'll need to rerun `kitchen create` for this instance."
|
88
|
+
else
|
89
|
+
info rest_error
|
90
|
+
raise operation_error
|
91
|
+
end
|
92
92
|
end
|
93
93
|
|
94
94
|
# Monitor all operations until completion
|
@@ -102,6 +102,26 @@ module Kitchen
|
|
102
102
|
state[:hostname] = result.body.properties.ip_address
|
103
103
|
end
|
104
104
|
|
105
|
+
def existing_state_value?(state, property)
|
106
|
+
state.key?(property) && !state[property].nil?
|
107
|
+
end
|
108
|
+
|
109
|
+
def validate_state(state = {})
|
110
|
+
state[:uuid] = SecureRandom.hex(8) unless existing_state_value?(state, :uuid)
|
111
|
+
state[:server_id] = "vm#{state[:uuid]}" unless existing_state_value?(state, :server_id)
|
112
|
+
state[:azure_resource_group_name] = azure_resource_group_name unless existing_state_value?(state, :azure_resource_group_name)
|
113
|
+
[:subscription_id, :username, :password, :vm_name, :azure_management_url].each do |config_element|
|
114
|
+
state[config_element] = config[config_element] unless existing_state_value?(state, config_element)
|
115
|
+
end
|
116
|
+
|
117
|
+
state
|
118
|
+
end
|
119
|
+
|
120
|
+
def azure_resource_group_name
|
121
|
+
formatted_time = Time.now.utc.strftime '%Y%m%dT%H%M%S'
|
122
|
+
"#{config[:azure_resource_group_name]}-#{formatted_time}"
|
123
|
+
end
|
124
|
+
|
105
125
|
def template_for_transport_name
|
106
126
|
template = JSON.parse(virtual_machine_deployment_template)
|
107
127
|
if instance.transport.name.downcase == 'winrm'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: kitchen-azurerm
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Stuart Preston
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-12-
|
11
|
+
date: 2015-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: inifile
|