kitchen-ansible 0.44.4 → 0.44.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,39 +1,39 @@
1
- # encoding: utf-8
2
-
3
- $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
4
- require 'kitchen-ansible/version'
5
-
6
- Gem::Specification.new do |s|
7
- s.name = 'kitchen-ansible'
8
- s.license = 'Apache-2.0'
9
- s.version = Kitchen::Ansible::VERSION
10
- s.authors = ['Neill Turner']
11
- s.email = ['neillwturner@gmail.com']
12
- s.homepage = 'https://github.com/neillturner/kitchen-ansible'
13
- s.summary = 'ansible provisioner for test-kitchen'
14
- candidates = Dir.glob('{lib}/**/*') + ['README.md', 'provisioner_options.md', 'kitchen-ansible.gemspec']
15
- s.files = candidates.sort
16
- s.platform = Gem::Platform::RUBY
17
- s.require_paths = ['lib']
18
- s.rubyforge_project = '[none]'
19
- s.description = <<-EOF
20
- == DESCRIPTION:
21
-
22
- Ansible Provisioner for Test Kitchen
23
-
24
- == FEATURES:
25
-
26
- Supports running ansible-playbook
27
-
28
- EOF
29
- s.add_runtime_dependency 'test-kitchen', '~> 1.4'
30
-
31
- s.add_development_dependency 'rspec'
32
- s.add_development_dependency 'pry'
33
- s.add_development_dependency 'rake'
34
- if RUBY_VERSION >= '2.0'
35
- s.add_dependency 'net-ssh', '~> 3.0'
36
- else
37
- s.add_dependency 'net-ssh', '~> 2.9'
38
- end
39
- end
1
+ # encoding: utf-8
2
+
3
+ $LOAD_PATH.unshift File.expand_path('../lib', __FILE__)
4
+ require 'kitchen-ansible/version'
5
+
6
+ Gem::Specification.new do |s|
7
+ s.name = 'kitchen-ansible'
8
+ s.license = 'Apache-2.0'
9
+ s.version = Kitchen::Ansible::VERSION
10
+ s.authors = ['Neill Turner']
11
+ s.email = ['neillwturner@gmail.com']
12
+ s.homepage = 'https://github.com/neillturner/kitchen-ansible'
13
+ s.summary = 'ansible provisioner for test-kitchen'
14
+ candidates = Dir.glob('{lib}/**/*') + ['README.md', 'provisioner_options.md', 'kitchen-ansible.gemspec']
15
+ s.files = candidates.sort
16
+ s.platform = Gem::Platform::RUBY
17
+ s.require_paths = ['lib']
18
+ s.rubyforge_project = '[none]'
19
+ s.description = <<-EOF
20
+ == DESCRIPTION:
21
+
22
+ Ansible Provisioner for Test Kitchen
23
+
24
+ == FEATURES:
25
+
26
+ Supports running ansible-playbook
27
+
28
+ EOF
29
+ s.add_runtime_dependency 'test-kitchen', '~> 1.4'
30
+
31
+ s.add_development_dependency 'rspec'
32
+ s.add_development_dependency 'pry'
33
+ s.add_development_dependency 'rake'
34
+ if RUBY_VERSION >= '2.0'
35
+ s.add_dependency 'net-ssh', '~> 3.0'
36
+ else
37
+ s.add_dependency 'net-ssh', '~> 2.9'
38
+ end
39
+ end
@@ -1,6 +1,6 @@
1
- # -*- encoding: utf-8 -*-
2
- module Kitchen
3
- module Ansible
4
- VERSION = '0.44.4'
5
- end
6
- end
1
+ # -*- encoding: utf-8 -*-
2
+ module Kitchen
3
+ module Ansible
4
+ VERSION = '0.44.5'
5
+ end
6
+ end
@@ -1,171 +1,172 @@
1
- # -*- encoding: utf-8 -*-
2
- #
3
- # Author:: Michael Heap (<m@michaelheap.com>)
4
- #
5
- # Copyright (C) 2015 Michael Heap
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
-
20
- require 'json'
21
-
22
- module Kitchen
23
- module Provisioner
24
- module Ansible
25
- #
26
- # Ansible Playbook provisioner.
27
- #
28
- class Config
29
- include Kitchen::Configurable
30
-
31
- attr_accessor :instance
32
-
33
- default_config :ansible_sudo, true
34
- default_config :ansible_verbose, false
35
- default_config :require_ansible_omnibus, false
36
- default_config :ansible_omnibus_url, 'https://raw.githubusercontent.com/neillturner/omnibus-ansible/master/ansible_install.sh'
37
- default_config :ansible_omnibus_remote_path, '/opt/ansible'
38
- default_config :ansible_version, nil
39
- default_config :require_ansible_repo, true
40
- default_config :enable_yum_epel, false
41
- default_config :extra_vars, {}
42
- default_config :tags, []
43
- default_config :ansible_apt_repo, 'ppa:ansible/ansible'
44
- default_config :ansible_yum_repo, nil
45
- default_config :ansible_sles_repo, 'http://download.opensuse.org/repositories/systemsmanagement/SLE_12/systemsmanagement.repo'
46
- default_config :python_sles_repo, 'http://download.opensuse.org/repositories/devel:/languages:/python/SLE_12/devel:languages:python.repo'
47
- default_config :chef_bootstrap_url, 'https://www.getchef.com/chef/install.sh'
48
- # Providing we have Ruby >= 2.0 we only need Ruby. Leaving default to install Chef Omnibus for backwards compatibility.
49
- # Note: if using kitchen-verifer-serverspec your we can avoid needing Ruby too.
50
- # (Reference: https://github.com/neillturner/kitchen-ansible/issues/66 )
51
- default_config :require_chef_for_busser, true
52
- default_config :require_ruby_for_busser, false
53
- default_config :require_windows_support, false
54
- default_config :require_pip, false
55
- default_config :requirements_path, false
56
- default_config :ssh_known_hosts, nil
57
- default_config :ansible_verbose, false
58
- default_config :ansible_verbosity, 1
59
- default_config :ansible_check, false
60
- default_config :ansible_diff, false
61
- default_config :ansible_platform, ''
62
- default_config :ansible_connection, 'local'
63
- default_config :update_package_repos, true
64
- default_config :require_ansible_source, false
65
- default_config :ansible_source_rev, nil
66
- default_config :http_proxy, nil
67
- default_config :https_proxy, nil
68
- default_config :no_proxy, nil
69
- default_config :ansible_playbook_command, nil
70
- default_config :ansible_host_key_checking, true
71
- default_config :idempotency_test, nil
72
- default_config :ansible_inventory, nil
73
- default_config :ansible_inventory_file, nil
74
- default_config :ansible_limit, nil
75
- default_config :ignore_paths_from_root, []
76
-
77
- default_config :playbook do |provisioner|
78
- provisioner.calculate_path('default.yml', :file) ||
79
- fail('No playbook found or specified! Please either set a playbook in your .kitchen.yml config, or create a default playbook in test/integration/<suite_name>/ansible/default.yml, test/integration/<suite_name>/default.yml, test/integration/default.yml or in default.yml in the top level')
80
- end
81
-
82
- default_config :roles_path do |provisioner|
83
- provisioner.calculate_path('roles') ||
84
- fail('No roles_path detected. Please specify one in .kitchen.yml')
85
- end
86
-
87
- default_config :group_vars_path do |provisioner|
88
- provisioner.calculate_path('group_vars', :directory)
89
- end
90
-
91
- default_config :additional_copy_path do |provisioner|
92
- provisioner.calculate_path('additional_copy', :directory)
93
- end
94
-
95
- default_config :host_vars_path do |provisioner|
96
- provisioner.calculate_path('host_vars', :directory)
97
- end
98
-
99
- default_config :modules_path do |provisioner|
100
- provisioner.calculate_path('modules', :directory)
101
- end
102
-
103
- default_config :ansiblefile_path do |provisioner|
104
- provisioner.calculate_path('Ansiblefile', :file)
105
- end
106
-
107
- default_config :library_plugins_path do |provisioner|
108
- provisioner.calculate_path('library', :directory)
109
- end
110
-
111
- default_config :callback_plugins_path do |provisioner|
112
- provisioner.calculate_path('callback_plugins', :directory)
113
- end
114
-
115
- default_config :filter_plugins_path do |provisioner|
116
- provisioner.calculate_path('filter_plugins', :directory)
117
- end
118
-
119
- default_config :lookup_plugins_path do |provisioner|
120
- provisioner.calculate_path('lookup_plugins', :directory)
121
- end
122
-
123
- default_config :ansible_vault_password_file do |provisioner|
124
- provisioner.calculate_path('ansible-vault-password', :file)
125
- end
126
-
127
- default_config :kerberos_conf_file do |provisioner|
128
- provisioner.calculate_path('kerberos_conf', :file)
129
- end
130
-
131
- def initialize(config = {})
132
- init_config(config)
133
- end
134
-
135
- def []=(attr, val)
136
- config[attr] = val
137
- end
138
-
139
- def [](attr)
140
- config[attr]
141
- end
142
-
143
- def key?(k)
144
- config.key?(k)
145
- end
146
-
147
- def keys
148
- config.keys
149
- end
150
-
151
- def calculate_path(path, type = :directory)
152
- unless instance
153
- fail 'Please ensure that an instance is provided before calling calculate_path'
154
- end
155
-
156
- base = config[:test_base_path]
157
- candidates = []
158
- candidates << File.join(base, instance.suite.name, 'ansible', path)
159
- candidates << File.join(base, instance.suite.name, path)
160
- candidates << File.join(base, path)
161
- candidates << File.join(Dir.pwd, path)
162
- candidates << File.join(Dir.pwd) if path == 'roles'
163
-
164
- candidates.find do |c|
165
- type == :directory ? File.directory?(c) : File.file?(c)
166
- end
167
- end
168
- end
169
- end
170
- end
171
- end
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Author:: Michael Heap (<m@michaelheap.com>)
4
+ #
5
+ # Copyright (C) 2015 Michael Heap
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
+
20
+ require 'json'
21
+
22
+ module Kitchen
23
+ module Provisioner
24
+ module Ansible
25
+ #
26
+ # Ansible Playbook provisioner.
27
+ #
28
+ class Config
29
+ include Kitchen::Configurable
30
+
31
+ attr_accessor :instance
32
+
33
+ default_config :ansible_sudo, true
34
+ default_config :ansible_verbose, false
35
+ default_config :require_ansible_omnibus, false
36
+ default_config :ansible_omnibus_url, 'https://raw.githubusercontent.com/neillturner/omnibus-ansible/master/ansible_install.sh'
37
+ default_config :ansible_omnibus_remote_path, '/opt/ansible'
38
+ default_config :ansible_version, nil
39
+ default_config :require_ansible_repo, true
40
+ default_config :enable_yum_epel, false
41
+ default_config :extra_vars, {}
42
+ default_config :tags, []
43
+ default_config :ansible_apt_repo, 'ppa:ansible/ansible'
44
+ default_config :ansible_yum_repo, nil
45
+ default_config :ansible_sles_repo, 'http://download.opensuse.org/repositories/systemsmanagement/SLE_12/systemsmanagement.repo'
46
+ default_config :python_sles_repo, 'http://download.opensuse.org/repositories/devel:/languages:/python/SLE_12/devel:languages:python.repo'
47
+ default_config :chef_bootstrap_url, 'https://www.getchef.com/chef/install.sh'
48
+ # Providing we have Ruby >= 2.0 we only need Ruby. Leaving default to install Chef Omnibus for backwards compatibility.
49
+ # Note: if using kitchen-verifer-serverspec your we can avoid needing Ruby too.
50
+ # (Reference: https://github.com/neillturner/kitchen-ansible/issues/66 )
51
+ default_config :require_chef_for_busser, true
52
+ default_config :require_ruby_for_busser, false
53
+ default_config :require_windows_support, false
54
+ default_config :require_pip, false
55
+ default_config :requirements_path, false
56
+ default_config :ssh_known_hosts, nil
57
+ default_config :ansible_verbose, false
58
+ default_config :ansible_verbosity, 1
59
+ default_config :ansible_check, false
60
+ default_config :ansible_diff, false
61
+ default_config :ansible_platform, ''
62
+ default_config :ansible_connection, 'local'
63
+ default_config :update_package_repos, true
64
+ default_config :require_ansible_source, false
65
+ default_config :ansible_source_rev, nil
66
+ default_config :http_proxy, nil
67
+ default_config :https_proxy, nil
68
+ default_config :no_proxy, nil
69
+ default_config :ansible_playbook_command, nil
70
+ default_config :ansible_host_key_checking, true
71
+ default_config :idempotency_test, nil
72
+ default_config :ansible_inventory, nil
73
+ default_config :ansible_inventory_file, nil
74
+ default_config :ansible_limit, nil
75
+ default_config :ignore_paths_from_root, []
76
+ default_config :role_name, nil
77
+
78
+ default_config :playbook do |provisioner|
79
+ provisioner.calculate_path('default.yml', :file) ||
80
+ fail('No playbook found or specified! Please either set a playbook in your .kitchen.yml config, or create a default playbook in test/integration/<suite_name>/ansible/default.yml, test/integration/<suite_name>/default.yml, test/integration/default.yml or in default.yml in the top level')
81
+ end
82
+
83
+ default_config :roles_path do |provisioner|
84
+ provisioner.calculate_path('roles') ||
85
+ fail('No roles_path detected. Please specify one in .kitchen.yml')
86
+ end
87
+
88
+ default_config :group_vars_path do |provisioner|
89
+ provisioner.calculate_path('group_vars', :directory)
90
+ end
91
+
92
+ default_config :additional_copy_path do |provisioner|
93
+ provisioner.calculate_path('additional_copy', :directory)
94
+ end
95
+
96
+ default_config :host_vars_path do |provisioner|
97
+ provisioner.calculate_path('host_vars', :directory)
98
+ end
99
+
100
+ default_config :modules_path do |provisioner|
101
+ provisioner.calculate_path('modules', :directory)
102
+ end
103
+
104
+ default_config :ansiblefile_path do |provisioner|
105
+ provisioner.calculate_path('Ansiblefile', :file)
106
+ end
107
+
108
+ default_config :library_plugins_path do |provisioner|
109
+ provisioner.calculate_path('library', :directory)
110
+ end
111
+
112
+ default_config :callback_plugins_path do |provisioner|
113
+ provisioner.calculate_path('callback_plugins', :directory)
114
+ end
115
+
116
+ default_config :filter_plugins_path do |provisioner|
117
+ provisioner.calculate_path('filter_plugins', :directory)
118
+ end
119
+
120
+ default_config :lookup_plugins_path do |provisioner|
121
+ provisioner.calculate_path('lookup_plugins', :directory)
122
+ end
123
+
124
+ default_config :ansible_vault_password_file do |provisioner|
125
+ provisioner.calculate_path('ansible-vault-password', :file)
126
+ end
127
+
128
+ default_config :kerberos_conf_file do |provisioner|
129
+ provisioner.calculate_path('kerberos_conf', :file)
130
+ end
131
+
132
+ def initialize(config = {})
133
+ init_config(config)
134
+ end
135
+
136
+ def []=(attr, val)
137
+ config[attr] = val
138
+ end
139
+
140
+ def [](attr)
141
+ config[attr]
142
+ end
143
+
144
+ def key?(k)
145
+ config.key?(k)
146
+ end
147
+
148
+ def keys
149
+ config.keys
150
+ end
151
+
152
+ def calculate_path(path, type = :directory)
153
+ unless instance
154
+ fail 'Please ensure that an instance is provided before calling calculate_path'
155
+ end
156
+
157
+ base = config[:test_base_path]
158
+ candidates = []
159
+ candidates << File.join(base, instance.suite.name, 'ansible', path)
160
+ candidates << File.join(base, instance.suite.name, path)
161
+ candidates << File.join(base, path)
162
+ candidates << File.join(Dir.pwd, path)
163
+ candidates << File.join(Dir.pwd) if path == 'roles'
164
+
165
+ candidates.find do |c|
166
+ type == :directory ? File.directory?(c) : File.file?(c)
167
+ end
168
+ end
169
+ end
170
+ end
171
+ end
172
+ end
@@ -1,78 +1,78 @@
1
- # -*- encoding: utf-8 -*-
2
- #
3
- # Author:: Fletcher Nichol (<fnichol@nichol.ca>) Neill Turner (<neillwturner@gmail.com>)
4
- #
5
- # Copyright (C) 2013, Fletcher Nichol, Neill Turner
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/errors'
20
- require 'kitchen/logging'
21
-
22
- module Kitchen
23
- module Provisioner
24
- module Ansible
25
- # Ansible module resolver that uses Librarian-Ansible and a Ansiblefile to
26
- # calculate # dependencies.
27
- #
28
- class Librarian
29
- include Logging
30
-
31
- def initialize(ansiblefile, path, logger = Kitchen.logger)
32
- @ansiblefile = ansiblefile
33
- @path = path
34
- @logger = logger
35
- end
36
-
37
- def self.load!(logger = Kitchen.logger)
38
- load_librarian!(logger)
39
- end
40
-
41
- def resolve
42
- version = ::Librarian::Ansible::VERSION
43
- info("Resolving role dependencies with Librarian-Ansible #{version}...")
44
- debug("Using Ansiblefile from #{ansiblefile}")
45
-
46
- env = ::Librarian::Ansible::Environment.new(
47
- project_path: File.dirname(ansiblefile))
48
- env.config_db.local['path'] = path
49
- ::Librarian::Action::Resolve.new(env).run
50
- ::Librarian::Action::Install.new(env).run
51
- end
52
-
53
- attr_reader :ansiblefile, :path, :logger
54
-
55
- def self.load_librarian!(logger)
56
- first_load = require 'librarian/ansible'
57
- require 'librarian/ansible/environment'
58
- require 'librarian/action/resolve'
59
- require 'librarian/action/install'
60
-
61
- version = ::Librarian::Ansible::VERSION
62
- if first_load
63
- logger.debug("Librarian-Ansible #{version} library loaded")
64
- else
65
- logger.debug("Librarian-Ansible #{version} previously loaded")
66
- end
67
- rescue LoadError => e
68
- logger.fatal("The `librarian-ansible' gem is missing and must be installed" \
69
- ' or cannot be properly activated. Run' \
70
- ' `gem install librarian-ansible` or add the following to your' \
71
- " Gemfile if you are using Bundler: `gem 'librarian-ansible'`.")
72
- raise UserError,
73
- "Could not load or activate Librarian-Ansible (#{e.message})"
74
- end
75
- end
76
- end
77
- end
78
- end
1
+ # -*- encoding: utf-8 -*-
2
+ #
3
+ # Author:: Fletcher Nichol (<fnichol@nichol.ca>) Neill Turner (<neillwturner@gmail.com>)
4
+ #
5
+ # Copyright (C) 2013, Fletcher Nichol, Neill Turner
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/errors'
20
+ require 'kitchen/logging'
21
+
22
+ module Kitchen
23
+ module Provisioner
24
+ module Ansible
25
+ # Ansible module resolver that uses Librarian-Ansible and a Ansiblefile to
26
+ # calculate # dependencies.
27
+ #
28
+ class Librarian
29
+ include Logging
30
+
31
+ def initialize(ansiblefile, path, logger = Kitchen.logger)
32
+ @ansiblefile = ansiblefile
33
+ @path = path
34
+ @logger = logger
35
+ end
36
+
37
+ def self.load!(logger = Kitchen.logger)
38
+ load_librarian!(logger)
39
+ end
40
+
41
+ def resolve
42
+ version = ::Librarian::Ansible::VERSION
43
+ info("Resolving role dependencies with Librarian-Ansible #{version}...")
44
+ debug("Using Ansiblefile from #{ansiblefile}")
45
+
46
+ env = ::Librarian::Ansible::Environment.new(
47
+ project_path: File.dirname(ansiblefile))
48
+ env.config_db.local['path'] = path
49
+ ::Librarian::Action::Resolve.new(env).run
50
+ ::Librarian::Action::Install.new(env).run
51
+ end
52
+
53
+ attr_reader :ansiblefile, :path, :logger
54
+
55
+ def self.load_librarian!(logger)
56
+ first_load = require 'librarian/ansible'
57
+ require 'librarian/ansible/environment'
58
+ require 'librarian/action/resolve'
59
+ require 'librarian/action/install'
60
+
61
+ version = ::Librarian::Ansible::VERSION
62
+ if first_load
63
+ logger.debug("Librarian-Ansible #{version} library loaded")
64
+ else
65
+ logger.debug("Librarian-Ansible #{version} previously loaded")
66
+ end
67
+ rescue LoadError => e
68
+ logger.fatal("The `librarian-ansible' gem is missing and must be installed" \
69
+ ' or cannot be properly activated. Run' \
70
+ ' `gem install librarian-ansible` or add the following to your' \
71
+ " Gemfile if you are using Bundler: `gem 'librarian-ansible'`.")
72
+ raise UserError,
73
+ "Could not load or activate Librarian-Ansible (#{e.message})"
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end