kitchen-azure_vm 0.1.0.beta

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