kitchen-azure_vm 0.1.0.beta

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 ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 8beacb4a02e50422dfcbd626a97b6bca61b63934
4
+ data.tar.gz: 246ae2e4c9d4738e70e01f060f97fc056c58dc9c
5
+ SHA512:
6
+ metadata.gz: 685a3d144895e9bd6339d00603956ccebd32a868053b155bf52afda4148cc22629374b274d522fa3d76152901d3fdc7d2f8d4b9d63c16a07d471982d04396528
7
+ data.tar.gz: 670b8327e7bbd5f6e0ff91b7393d642ddb567d5d981bdb7e78ac19cb0e6698ad4fd50afa8379bd842217bdda5b7e95ab36bb5a264b17e6ed57f29270651217d6
data/.cane ADDED
File without changes
data/.gitignore ADDED
@@ -0,0 +1,20 @@
1
+ *.gem
2
+ *.rbc
3
+ .bundle
4
+ .config
5
+ .yardoc
6
+ Gemfile.lock
7
+ InstalledFiles
8
+ _yardoc
9
+ coverage
10
+ doc/
11
+ lib/bundler/man
12
+ pkg
13
+ rdoc
14
+ spec/reports
15
+ test/tmp
16
+ test/version_tmp
17
+ tmp
18
+ /vendor
19
+ .kitchen/
20
+ .kitchen.local.yml
data/.kitchen.yml ADDED
@@ -0,0 +1,23 @@
1
+ ---
2
+ driver:
3
+ name: azure_vm
4
+
5
+ driver_config:
6
+ management_certificate: <%= ENV['AZURE_MANAGEMENT_CERTIFICATE'] %>
7
+ subscription_id: <%= ENV['AZURE_SUBSCRIPTION_ID'] %>
8
+ private_key_file: <%= ENV['AZURE_PRIVATE_KEY'] %>
9
+ certificate_file: <%= ENV['AZURE_CERTIFICATE'] %>
10
+ vm_size: Medium
11
+ location: Japan East
12
+
13
+ provisioner:
14
+ name: chef_zero
15
+
16
+ platforms:
17
+ - name: centos-6.5
18
+ - name: ubuntu-14.04
19
+
20
+ suites:
21
+ - name: default
22
+ run_list:
23
+ attributes:
data/.tailor ADDED
@@ -0,0 +1,4 @@
1
+ Tailor.config do |config|
2
+ config.formatters "text"
3
+ config.file_set 'lib/**/*.rb'
4
+ end
data/.travis.yml ADDED
@@ -0,0 +1,11 @@
1
+ language: ruby
2
+
3
+ rvm:
4
+ - 2.1
5
+ - 2.0.0
6
+ - 1.9.3
7
+ - ruby-head
8
+
9
+ matrix:
10
+ allow_failures:
11
+ - rvm: ruby-head
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ ## 0.1.0 / Unreleased
2
+
3
+ * Initial release
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec
data/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ Author:: Masashi Terui (<marcy9114@gmail.com>)
2
+
3
+ Copyright (C) 2015, Masashi Terui
4
+
5
+ Licensed under the Apache License, Version 2.0 (the "License");
6
+ you may not use this file except in compliance with the License.
7
+ You may obtain a copy of the License at
8
+
9
+ http://www.apache.org/licenses/LICENSE-2.0
10
+
11
+ Unless required by applicable law or agreed to in writing, software
12
+ distributed under the License is distributed on an "AS IS" BASIS,
13
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ See the License for the specific language governing permissions and
15
+ limitations under the License.
data/README.md ADDED
@@ -0,0 +1,194 @@
1
+ # <a name="title"></a> Kitchen::AzureVm
2
+
3
+ A Test Kitchen Driver for Azure Virtual Machine.
4
+
5
+ ## <a name="requirements"></a> Requirements
6
+
7
+ - Test-Kitchen
8
+
9
+ ## <a name="installation"></a> Installation and Setup
10
+
11
+ ```sh
12
+ gem install kitchen-azure_vm
13
+ ```
14
+
15
+ or put `Gemfile` in your project directory.
16
+
17
+ ```ruby
18
+ source 'https://rubygems.org'
19
+
20
+ gem 'kitchen-azure_vm'
21
+ ```
22
+
23
+ and
24
+
25
+ ```sh
26
+ bundle
27
+ ```
28
+
29
+ ## <a name="config"></a> Configuration
30
+
31
+ At first, put your `.kithcen(.local).yml` like this.
32
+
33
+ ```yml
34
+ ---
35
+ driver:
36
+ name: azure_vm
37
+ management_certificate: /path/to/management_certificate.cer
38
+ subscription_id: <%= ENV['AZURE_SUBSCRIPTION_ID'] %>
39
+ private_key_file: /path/to/private.key
40
+ certificate_file: /path/to/certificate.cer
41
+
42
+ platforms:
43
+ - name: ubuntu-14.04
44
+ - name: centos-6.6
45
+
46
+ suites:
47
+ - name: default
48
+ run_list:
49
+ attributes:
50
+ ```
51
+
52
+ ### management_certificate
53
+
54
+ Path to the Management Certificate file.
55
+ See also https://msdn.microsoft.com/en-us/library/azure/gg551722.aspx
56
+
57
+ Examples:
58
+
59
+ ```yml
60
+ management_certificate: /path/to/management_certificate.cer
61
+ ```
62
+
63
+ ### subscription_id
64
+
65
+ Your Azure Subscription ID.
66
+
67
+ Examples:
68
+
69
+ ```yml
70
+ subscription_id: xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
71
+ ```
72
+
73
+ ### private_key_file
74
+
75
+ Path to the SSH private key file.
76
+
77
+ Examples:
78
+
79
+ ```yml
80
+ private_key_file: /path/to/private.key
81
+ ```
82
+
83
+ ### private_key_file
84
+
85
+ Path to the x509 SSH certificate file.
86
+
87
+ Examples:
88
+
89
+ ```yml
90
+ certificate_file: /path/to/certificate.cer
91
+ ```
92
+
93
+ ### vm_user
94
+
95
+ Login user name on the VM.
96
+
97
+ The default value is `azureuser`.
98
+
99
+ Examples:
100
+
101
+ ```yml
102
+ vm_user: example-user
103
+ ```
104
+
105
+ ### location
106
+
107
+ Location(Region) of the VM.
108
+
109
+ The default value is `West US`.
110
+
111
+ Examples:
112
+
113
+ ```yml
114
+ location: Japan East
115
+ ```
116
+
117
+ ### ssh_port
118
+
119
+ Port number of SSH.
120
+
121
+ The default value is `22`.
122
+
123
+ Examples:
124
+
125
+ ```yml
126
+ ssh_port: 2222
127
+ ```
128
+
129
+ ### destroy_storage_account
130
+
131
+ Delete Storage Account when called `kitchen destroy`.
132
+
133
+ The default value is `true`.
134
+
135
+ Examples:
136
+
137
+ ```yml
138
+ destroy_storage_account: false
139
+ ```
140
+
141
+ ### vm_size
142
+
143
+ VM instance size.
144
+
145
+ The default value is `Small`.
146
+
147
+ Examples:
148
+
149
+ ```yml
150
+ vm_size: Large
151
+ ```
152
+
153
+ ### vm_image
154
+
155
+ VM boot image ID.
156
+
157
+ The default value get from public images by `platform.name`.
158
+
159
+ Examples:
160
+
161
+ ```yml
162
+ vm_size: Large
163
+ ```
164
+
165
+ ## <a name="development"></a> Development
166
+
167
+ * Source hosted at [GitHub][repo]
168
+ * Report issues/questions/feature requests on [GitHub Issues][issues]
169
+
170
+ Pull requests are very welcome! Make sure your patches are well tested.
171
+ Ideally create a topic branch for every separate change you make. For
172
+ example:
173
+
174
+ 1. Fork the repo
175
+ 2. Create your feature branch (`git checkout -b my-new-feature`)
176
+ 3. Commit your changes (`git commit -am 'Added some feature'`)
177
+ 4. Push to the branch (`git push origin my-new-feature`)
178
+ 5. Create new Pull Request
179
+
180
+ ## <a name="authors"></a> Authors
181
+
182
+ Created and maintained by [Masashi Terui][author] (<marcy9114@gmail.com>)
183
+
184
+ ## <a name="license"></a> License
185
+
186
+ Apache 2.0 (see [LICENSE][license])
187
+
188
+
189
+ [author]: https://github.com/marcy-terui
190
+ [issues]: https://github.com/marcy-terui/kitchen-azure_vm/issues
191
+ [license]: https://github.com/marcy-terui/kitchen-azure_vm/blob/master/LICENSE
192
+ [repo]: https://github.com/marcy-terui/kitchen-azure_vm
193
+ [driver_usage]: http://docs.kitchen-ci.org/drivers/usage
194
+ [chef_omnibus_dl]: http://www.getchef.com/chef/install/
data/Rakefile ADDED
@@ -0,0 +1,28 @@
1
+ require "bundler/gem_tasks"
2
+ require 'cane/rake_task'
3
+ require 'tailor/rake_task'
4
+
5
+ desc "Run cane to check quality metrics"
6
+ Cane::RakeTask.new do |cane|
7
+ cane.canefile = './.cane'
8
+ end
9
+
10
+ Tailor::RakeTask.new
11
+
12
+ desc "Display LOC stats"
13
+ task :stats do
14
+ puts "\n## Production Code Stats"
15
+ sh "countloc -r lib"
16
+ end
17
+
18
+ desc "Run all quality tasks"
19
+ task :quality => [:cane, :tailor, :stats]
20
+
21
+ task :default => [:quality]
22
+
23
+ begin
24
+ require "kitchen/rake_tasks"
25
+ Kitchen::RakeTasks.new
26
+ rescue LoadError
27
+ puts ">>>>> Kitchen gem not loaded, omitting tasks" unless ENV["CI"]
28
+ end
@@ -0,0 +1,32 @@
1
+ # coding: utf-8
2
+ lib = File.expand_path('../lib', __FILE__)
3
+ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
+ require 'kitchen/driver/azure_vm_version'
5
+
6
+ Gem::Specification.new do |spec|
7
+ spec.name = 'kitchen-azure_vm'
8
+ spec.version = Kitchen::Driver::AZURE_VM_VERSION
9
+ spec.authors = ['Masashi Terui']
10
+ spec.email = ['marcy9114@gmail.com']
11
+ spec.description = %q{A Test Kitchen Driver for Azure Virtual Machine}
12
+ spec.summary = spec.description
13
+ spec.homepage = 'https://github.com/marcy-terui/kitchen-azure_vm'
14
+ spec.license = 'Apache 2.0'
15
+
16
+ spec.files = `git ls-files`.split($/)
17
+ spec.executables = []
18
+ spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
+ spec.require_paths = ['lib']
20
+
21
+ spec.add_dependency 'test-kitchen', '>= 1.3'
22
+ spec.add_dependency 'azure'
23
+
24
+ spec.add_development_dependency 'bundler', '~> 1.3'
25
+ spec.add_development_dependency 'rake'
26
+
27
+ spec.add_development_dependency 'cane'
28
+ spec.add_development_dependency 'tailor'
29
+ spec.add_development_dependency 'countloc'
30
+ spec.add_development_dependency "coveralls"
31
+ spec.add_development_dependency "rspec"
32
+ end
@@ -0,0 +1,155 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Author:: Masashi Terui (<marcy9114@gmail.com>)
4
+ #
5
+ # Copyright (C) 2015, Masashi Terui
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ require 'kitchen'
20
+ require 'azure'
21
+ require 'securerandom'
22
+ require 'kitchen/driver/azure_vm_image'
23
+
24
+ module Kitchen
25
+
26
+ module Driver
27
+
28
+ # Azure Virtual Machine driver for Kitchen.
29
+ #
30
+ # @author Masashi Terui <marcy9114@gmail.com>
31
+ class AzureVm < Kitchen::Driver::SSHBase
32
+
33
+ default_config :management_endpoint, 'https://management.core.windows.net'
34
+ default_config :vm_user, 'azureuser'
35
+ default_config :location, 'West US'
36
+ default_config :ssh_port, 22
37
+ default_config :destroy_storage_account, true
38
+ default_config :vm_size, 'Small'
39
+
40
+ default_config :vm_image do |driver|
41
+ driver.default_vm_image
42
+ end
43
+
44
+ def default_vm_image
45
+ Kitchen::Driver::AzureVmImage.get(instance.platform.name)
46
+ end
47
+
48
+ required_config :management_certificate
49
+ required_config :subscription_id
50
+ required_config :private_key_file
51
+ required_config :certificate_file
52
+
53
+ def configure
54
+ Azure.config.management_certificate = config[:management_certificate]
55
+ Azure.config.subscription_id = config[:subscription_id]
56
+ Azure.config.management_endpoint = config[:management_endpoint]
57
+ end
58
+
59
+ def vm_service
60
+ configure
61
+ Azure::VirtualMachineManagementService.new
62
+ end
63
+
64
+ def storage_account_service
65
+ configure
66
+ Azure::StorageManagementService.new
67
+ end
68
+
69
+ def params(state)
70
+ {
71
+ :vm_name => state[:vm_name],
72
+ :vm_user => config[:vm_user],
73
+ :image => config[:vm_image],
74
+ :password => config[:password],
75
+ :location => config[:location],
76
+ }
77
+ end
78
+
79
+ def options(state)
80
+ {
81
+ :storage_account_name => state[:storage_account_name],
82
+ :winrm_transport => config[:winrm_transport],
83
+ :cloud_service_name => config[:cloud_service_name],
84
+ :deployment_name => config[:deployment_name],
85
+ :tcp_endpoints => config[:tcp_endpoints],
86
+ :private_key_file => config[:private_key_file],
87
+ :certificate_file => config[:certificate_file],
88
+ :ssh_port => config[:ssh_port],
89
+ :vm_size => config[:vm_size],
90
+ :affinity_group_name => config[:affinity_group_name],
91
+ :virtual_network_name => config[:virtual_network_name],
92
+ :subnet_name => config[:subnet_name],
93
+ :availability_set_name => config[:availability_set_name],
94
+ }
95
+ end
96
+
97
+ def create(state)
98
+ return if state[:vm_name]
99
+
100
+ state[:vm_name] = gen_vm_name
101
+ state[:storage_account_name] = "#{state[:vm_name]}storage"
102
+ info("Creating VM <#{state[:vm_name]}>...")
103
+ vm = vm_service.create_virtual_machine(params(state), options(state))
104
+ info("VM <#{state[:vm_name]}> created!")
105
+ state[:cloud_service_name] = vm.cloud_service_name
106
+ state[:hostname] = vm.ipaddress
107
+ wait_for_sshd(state[:hostname], config[:vm_user], {
108
+ :ssh_timeout => config[:ssh_timeout],
109
+ :ssh_retries => config[:ssh_retries],
110
+ :port => config[:ssh_port],
111
+ })
112
+ info("VM <#{state[:vm_name]}> ready!")
113
+ rescue Exception => e
114
+ raise ActionFailed, e.message
115
+ end
116
+
117
+ def destroy(state)
118
+ info("Deleting VM <#{state[:vm_name]}>...")
119
+ vm = vm_service.delete_virtual_machine(state[:vm_name],state[:cloud_service_name])
120
+ info("VM <#{state[:vm_name]}> deleted!")
121
+ if config[:destroy_storage_account]
122
+ delete_storage_account(state)
123
+ info("Storage Account <#{state[:storage_account_name]}> deleted!")
124
+ end
125
+ rescue Exception => e
126
+ raise ActionFailed, e.message
127
+ end
128
+
129
+ def gen_vm_name
130
+ SecureRandom.hex(7)
131
+ end
132
+
133
+ def delete_storage_account(state)
134
+ storage_account_service.delete_storage_account(state[:storage_account_name])
135
+ end
136
+
137
+ def build_ssh_args(state)
138
+ combined = config.to_hash.merge(state)
139
+
140
+ opts = Hash.new
141
+ opts[:user_known_hosts_file] = "/dev/null"
142
+ opts[:paranoid] = false
143
+ opts[:keys_only] = true if combined[:ssh_key]
144
+ opts[:password] = combined[:password] if combined[:password]
145
+ opts[:forward_agent] = combined[:forward_agent] if combined.key? :forward_agent
146
+ opts[:port] = combined[:port] if combined[:port]
147
+ opts[:keys] = Array(combined[:private_key_file]) if combined[:private_key_file]
148
+ opts[:logger] = logger
149
+
150
+ [combined[:hostname], combined[:vm_user], opts]
151
+ end
152
+
153
+ end
154
+ end
155
+ end
@@ -0,0 +1,48 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Author:: Masashi Terui (<marcy9114@gmail.com>)
4
+ #
5
+ # Copyright (C) 2015, Masashi Terui
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ module Kitchen
20
+
21
+ module Driver
22
+
23
+ # Azure Virtual Machine Image Helper.
24
+ #
25
+ # @author Masashi Terui <marcy9114@gmail.com>
26
+ class AzureVmImage
27
+ class << self
28
+ @@list = {
29
+ 'centos-6.5' => '5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-65-20150128',
30
+ 'centos-6.6' => '5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-66-20150128',
31
+ 'centos-7.0' => '5112500ae3b842c8b9c604889f8753c3__OpenLogic-CentOS-70-20150128',
32
+ 'ubuntu-12.04' => 'b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_5-LTS-amd64-server-20150204-en-us-30GB',
33
+ 'ubuntu-12.10' => 'b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-12_04_2-LTS-amd64-server-20121218-en-us-30GB',
34
+ 'ubuntu-14.04' => 'b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_04_1-LTS-amd64-server-20150123-en-us-30GB',
35
+ 'ubuntu-14.10' => 'b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu-14_10-amd64-server-20150202-en-us-30GB',
36
+ }
37
+
38
+ def get(platform)
39
+ unless @@list.key?(platform)
40
+ msg = "Image not found for #{platform}.\n[#{@@list.join(',')}] are available now."
41
+ raise ActionFailed, msg
42
+ end
43
+ @@list[platform]
44
+ end
45
+ end
46
+ end
47
+ end
48
+ end
@@ -0,0 +1,26 @@
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Author:: Masashi Terui (<marcy9114@gmail.com>)
4
+ #
5
+ # Copyright (C) 2015, Masashi Terui
6
+ #
7
+ # Licensed under the Apache License, Version 2.0 (the "License");
8
+ # you may not use this file except in compliance with the License.
9
+ # You may obtain a copy of the License at
10
+ #
11
+ # http://www.apache.org/licenses/LICENSE-2.0
12
+ #
13
+ # Unless required by applicable law or agreed to in writing, software
14
+ # distributed under the License is distributed on an "AS IS" BASIS,
15
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
16
+ # See the License for the specific language governing permissions and
17
+ # limitations under the License.
18
+
19
+ module Kitchen
20
+
21
+ module Driver
22
+
23
+ # Version string for AzureVm Kitchen driver
24
+ AZURE_VM_VERSION = "0.1.0.beta"
25
+ end
26
+ end
metadata ADDED
@@ -0,0 +1,184 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: kitchen-azure_vm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0.beta
5
+ platform: ruby
6
+ authors:
7
+ - Masashi Terui
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2015-03-11 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: test-kitchen
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '1.3'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '1.3'
27
+ - !ruby/object:Gem::Dependency
28
+ name: azure
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '1.3'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '1.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: cane
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: tailor
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: countloc
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ - !ruby/object:Gem::Dependency
112
+ name: coveralls
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: '0'
118
+ type: :development
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: '0'
125
+ - !ruby/object:Gem::Dependency
126
+ name: rspec
127
+ requirement: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - ">="
130
+ - !ruby/object:Gem::Version
131
+ version: '0'
132
+ type: :development
133
+ prerelease: false
134
+ version_requirements: !ruby/object:Gem::Requirement
135
+ requirements:
136
+ - - ">="
137
+ - !ruby/object:Gem::Version
138
+ version: '0'
139
+ description: A Test Kitchen Driver for Azure Virtual Machine
140
+ email:
141
+ - marcy9114@gmail.com
142
+ executables: []
143
+ extensions: []
144
+ extra_rdoc_files: []
145
+ files:
146
+ - ".cane"
147
+ - ".gitignore"
148
+ - ".kitchen.yml"
149
+ - ".tailor"
150
+ - ".travis.yml"
151
+ - CHANGELOG.md
152
+ - Gemfile
153
+ - LICENSE
154
+ - README.md
155
+ - Rakefile
156
+ - kitchen-azure_vm.gemspec
157
+ - lib/kitchen/driver/azure_vm.rb
158
+ - lib/kitchen/driver/azure_vm_image.rb
159
+ - lib/kitchen/driver/azure_vm_version.rb
160
+ homepage: https://github.com/marcy-terui/kitchen-azure_vm
161
+ licenses:
162
+ - Apache 2.0
163
+ metadata: {}
164
+ post_install_message:
165
+ rdoc_options: []
166
+ require_paths:
167
+ - lib
168
+ required_ruby_version: !ruby/object:Gem::Requirement
169
+ requirements:
170
+ - - ">="
171
+ - !ruby/object:Gem::Version
172
+ version: '0'
173
+ required_rubygems_version: !ruby/object:Gem::Requirement
174
+ requirements:
175
+ - - ">"
176
+ - !ruby/object:Gem::Version
177
+ version: 1.3.1
178
+ requirements: []
179
+ rubyforge_project:
180
+ rubygems_version: 2.2.2
181
+ signing_key:
182
+ specification_version: 4
183
+ summary: A Test Kitchen Driver for Azure Virtual Machine
184
+ test_files: []