kitchen-ansible 0.48.8 → 0.51.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,35 +1,34 @@
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_development_dependency 'rspec'
30
- s.add_development_dependency 'pry'
31
- s.add_development_dependency 'rake'
32
- s.required_ruby_version = '>= 2.0'
33
- s.add_dependency 'test-kitchen', '~> 1.4'
34
- s.add_dependency 'net-ssh', '>= 3'
35
- 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_development_dependency 'rspec'
30
+ s.add_development_dependency 'pry'
31
+ s.add_development_dependency 'rake'
32
+ s.add_dependency 'test-kitchen', '>= 1.4'
33
+ s.add_dependency 'net-ssh', '>= 3'
34
+ end
@@ -1,6 +1,6 @@
1
- # -*- encoding: utf-8 -*-
2
- module Kitchen
3
- module Ansible
4
- VERSION = '0.48.8'.freeze
5
- end
6
- end
1
+ # -*- encoding: utf-8 -*-
2
+ module Kitchen
3
+ module Ansible
4
+ VERSION = '0.51.0'.freeze
5
+ end
6
+ end
@@ -1,196 +1,199 @@
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 :extra_vars_file, nil
43
- default_config :env_vars, {}
44
- default_config :tags, []
45
- default_config :ansible_apt_repo, 'ppa:ansible/ansible'
46
- default_config :ansible_yum_repo, nil
47
- default_config :ansible_sles_repo, 'http://download.opensuse.org/repositories/systemsmanagement/SLE_12/systemsmanagement.repo'
48
- default_config :python_sles_repo, 'http://download.opensuse.org/repositories/devel:/languages:/python/SLE_12/devel:languages:python.repo'
49
- default_config :chef_bootstrap_url, 'https://www.chef.io/chef/install.sh'
50
- # Providing we have Ruby >= 2.0 we only need Ruby. Leaving default to install Chef Omnibus for backwards compatibility.
51
- # Note: if using kitchen-verifer-serverspec your we can avoid needing Ruby too.
52
- # (Reference: https://github.com/neillturner/kitchen-ansible/issues/66 )
53
- default_config :require_chef_for_busser, true
54
- default_config :require_ruby_for_busser, false
55
- default_config :require_windows_support, false
56
- default_config :require_pip, false
57
- default_config :requirements_path, false
58
- default_config :ssh_known_hosts, nil
59
- default_config :additional_ssh_private_keys, nil
60
- default_config :ansible_verbose, false
61
- default_config :ansible_verbosity, 1
62
- default_config :ansible_check, false
63
- default_config :ansible_diff, false
64
- default_config :ansible_platform, ''
65
- default_config :ansible_connection, 'local'
66
- default_config :update_package_repos, true
67
- default_config :require_ansible_source, false
68
- default_config :ansible_source_url, 'git://github.com/ansible/ansible.git'
69
- default_config :ansible_source_rev, nil
70
- default_config :http_proxy, nil
71
- default_config :https_proxy, nil
72
- default_config :no_proxy, nil
73
- default_config :ansible_playbook_command, nil
74
- default_config :ansible_host_key_checking, true
75
- default_config :idempotency_test, nil
76
- default_config :idempotency_tags, []
77
- default_config :idempotency_skip_tags, []
78
- default_config :ansible_inventory, nil
79
- default_config :ansible_inventory_file, nil
80
- default_config :ansible_limit, nil
81
- default_config :ignore_extensions_from_root, ['.pyc']
82
- default_config :ignore_paths_from_root, []
83
- default_config :role_name, nil
84
- default_config :additional_copy_role_path, false
85
- default_config :shell_command, 'sh'
86
- default_config :custom_pre_install_command, nil
87
- default_config :custom_pre_play_command, nil
88
- default_config :custom_post_install_command, nil
89
- default_config :custom_post_play_command, nil
90
- default_config :show_command_output, false
91
- default_config :ignore_ansible_cfg, false
92
- default_config :galaxy_ignore_certs, false
93
-
94
- default_config :playbook do |provisioner|
95
- provisioner.calculate_path('default.yml', :file) ||
96
- 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')
97
- end
98
-
99
- default_config :roles_path do |provisioner|
100
- provisioner.calculate_path('roles') ||
101
- fail('No roles_path detected. Please specify one in .kitchen.yml')
102
- end
103
-
104
- default_config :group_vars_path do |provisioner|
105
- provisioner.calculate_path('group_vars', :directory)
106
- end
107
-
108
- default_config :additional_copy_path do |provisioner|
109
- provisioner.calculate_path('additional_copy', :directory)
110
- end
111
-
112
- default_config :recursive_additional_copy_path do |provisioner|
113
- provisioner.calculate_path('recursive_additional_copy', :directory)
114
- end
115
-
116
- default_config :host_vars_path do |provisioner|
117
- provisioner.calculate_path('host_vars', :directory)
118
- end
119
-
120
- default_config :modules_path do |provisioner|
121
- provisioner.calculate_path('modules', :directory)
122
- end
123
-
124
- default_config :ansiblefile_path do |provisioner|
125
- provisioner.calculate_path('Ansiblefile', :file)
126
- end
127
-
128
- default_config :library_plugins_path do |provisioner|
129
- provisioner.calculate_path('library', :directory)
130
- end
131
-
132
- default_config :callback_plugins_path do |provisioner|
133
- provisioner.calculate_path('callback_plugins', :directory)
134
- end
135
-
136
- default_config :filter_plugins_path do |provisioner|
137
- provisioner.calculate_path('filter_plugins', :directory)
138
- end
139
-
140
- default_config :lookup_plugins_path do |provisioner|
141
- provisioner.calculate_path('lookup_plugins', :directory)
142
- end
143
-
144
- default_config :ansible_vault_password_file do |provisioner|
145
- provisioner.calculate_path('ansible-vault-password', :file)
146
- end
147
-
148
- default_config :kerberos_conf_file do |provisioner|
149
- provisioner.calculate_path('kerberos_conf', :file)
150
- end
151
-
152
- default_config :ansible_cfg_path do |provisioner|
153
- provisioner.calculate_path('ansible.cfg', :file)
154
- end
155
-
156
- def initialize(config = {})
157
- init_config(config)
158
- end
159
-
160
- def []=(attr, val)
161
- config[attr] = val
162
- end
163
-
164
- def [](attr)
165
- config[attr]
166
- end
167
-
168
- def key?(k)
169
- config.key?(k)
170
- end
171
-
172
- def keys
173
- config.keys
174
- end
175
-
176
- def calculate_path(path, type = :directory)
177
- unless instance
178
- fail 'Please ensure that an instance is provided before calling calculate_path'
179
- end
180
-
181
- base = config[:test_base_path]
182
- candidates = []
183
- candidates << File.join(base, instance.suite.name, 'ansible', path)
184
- candidates << File.join(base, instance.suite.name, path)
185
- candidates << File.join(base, path)
186
- candidates << File.join(Dir.pwd, path)
187
- candidates << File.join(Dir.pwd) if path == 'roles'
188
-
189
- candidates.find do |c|
190
- type == :directory ? File.directory?(c) : File.file?(c)
191
- end
192
- end
193
- end
194
- end
195
- end
196
- 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 :extra_vars_file, nil
43
+ default_config :env_vars, {}
44
+ default_config :tags, []
45
+ default_config :ansible_apt_repo, 'ppa:ansible/ansible'
46
+ default_config :ansible_yum_repo, nil
47
+ default_config :ansible_sles_repo, 'http://download.opensuse.org/repositories/systemsmanagement/SLE_12/systemsmanagement.repo'
48
+ default_config :python_sles_repo, 'http://download.opensuse.org/repositories/devel:/languages:/python/SLE_12/devel:languages:python.repo'
49
+ default_config :chef_bootstrap_url, 'https://www.chef.io/chef/install.sh'
50
+ # Providing we have Ruby >= 2.0 we only need Ruby. Leaving default to install Chef Omnibus for backwards compatibility.
51
+ # Note: if using kitchen-verifer-serverspec your we can avoid needing Ruby too.
52
+ # (Reference: https://github.com/neillturner/kitchen-ansible/issues/66 )
53
+ default_config :require_chef_for_busser, true
54
+ default_config :require_ruby_for_busser, false
55
+ default_config :require_windows_support, false
56
+ default_config :require_pip, false
57
+ default_config :requirements_path, false
58
+ default_config :requirements_collection_path, false
59
+ default_config :ssh_known_hosts, nil
60
+ default_config :additional_ssh_private_keys, nil
61
+ default_config :ansible_verbose, false
62
+ default_config :ansible_verbosity, 1
63
+ default_config :ansible_check, false
64
+ default_config :ansible_diff, false
65
+ default_config :ansible_platform, ''
66
+ default_config :ansible_connection, 'local'
67
+ default_config :update_package_repos, true
68
+ default_config :require_ansible_source, false
69
+ default_config :ansible_source_url, 'git://github.com/ansible/ansible.git'
70
+ default_config :ansible_source_rev, nil
71
+ default_config :http_proxy, nil
72
+ default_config :https_proxy, nil
73
+ default_config :no_proxy, nil
74
+ default_config :ansible_playbook_command, nil
75
+ default_config :ansible_host_key_checking, true
76
+ default_config :idempotency_test, nil
77
+ default_config :idempotency_tags, []
78
+ default_config :idempotency_skip_tags, []
79
+ default_config :ansible_inventory, nil
80
+ default_config :ansible_inventory_file, nil
81
+ default_config :ansible_limit, nil
82
+ default_config :ignore_extensions_from_root, ['.pyc']
83
+ default_config :ignore_paths_from_root, []
84
+ default_config :role_name, nil
85
+ default_config :additional_copy_role_path, false
86
+ default_config :shell_command, 'sh'
87
+ default_config :custom_pre_install_command, nil
88
+ default_config :custom_pre_play_command, nil
89
+ default_config :custom_post_install_command, nil
90
+ default_config :custom_post_play_command, nil
91
+ default_config :show_command_output, false
92
+ default_config :ignore_ansible_cfg, false
93
+ default_config :ansible_cfg_overwrite, true
94
+ default_config :galaxy_ignore_certs, false
95
+ default_config :keep_playbook_path, false
96
+
97
+ default_config :playbook do |provisioner|
98
+ provisioner.calculate_path('default.yml', :file) ||
99
+ 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')
100
+ end
101
+
102
+ default_config :roles_path do |provisioner|
103
+ provisioner.calculate_path('roles') ||
104
+ fail('No roles_path detected. Please specify one in .kitchen.yml')
105
+ end
106
+
107
+ default_config :group_vars_path do |provisioner|
108
+ provisioner.calculate_path('group_vars', :directory)
109
+ end
110
+
111
+ default_config :additional_copy_path do |provisioner|
112
+ provisioner.calculate_path('additional_copy', :directory)
113
+ end
114
+
115
+ default_config :recursive_additional_copy_path do |provisioner|
116
+ provisioner.calculate_path('recursive_additional_copy', :directory)
117
+ end
118
+
119
+ default_config :host_vars_path do |provisioner|
120
+ provisioner.calculate_path('host_vars', :directory)
121
+ end
122
+
123
+ default_config :modules_path do |provisioner|
124
+ provisioner.calculate_path('modules', :directory)
125
+ end
126
+
127
+ default_config :ansiblefile_path do |provisioner|
128
+ provisioner.calculate_path('Ansiblefile', :file)
129
+ end
130
+
131
+ default_config :library_plugins_path do |provisioner|
132
+ provisioner.calculate_path('library', :directory)
133
+ end
134
+
135
+ default_config :callback_plugins_path do |provisioner|
136
+ provisioner.calculate_path('callback_plugins', :directory)
137
+ end
138
+
139
+ default_config :filter_plugins_path do |provisioner|
140
+ provisioner.calculate_path('filter_plugins', :directory)
141
+ end
142
+
143
+ default_config :lookup_plugins_path do |provisioner|
144
+ provisioner.calculate_path('lookup_plugins', :directory)
145
+ end
146
+
147
+ default_config :ansible_vault_password_file do |provisioner|
148
+ provisioner.calculate_path('ansible-vault-password', :file)
149
+ end
150
+
151
+ default_config :kerberos_conf_file do |provisioner|
152
+ provisioner.calculate_path('kerberos_conf', :file)
153
+ end
154
+
155
+ default_config :ansible_cfg_path do |provisioner|
156
+ provisioner.calculate_path('ansible.cfg', :file)
157
+ end
158
+
159
+ def initialize(config = {})
160
+ init_config(config)
161
+ end
162
+
163
+ def []=(attr, val)
164
+ config[attr] = val
165
+ end
166
+
167
+ def [](attr)
168
+ config[attr]
169
+ end
170
+
171
+ def key?(k)
172
+ config.key?(k)
173
+ end
174
+
175
+ def keys
176
+ config.keys
177
+ end
178
+
179
+ def calculate_path(path, type = :directory)
180
+ unless instance
181
+ fail 'Please ensure that an instance is provided before calling calculate_path'
182
+ end
183
+
184
+ base = config[:test_base_path]
185
+ candidates = []
186
+ candidates << File.join(base, instance.suite.name, 'ansible', path)
187
+ candidates << File.join(base, instance.suite.name, path)
188
+ candidates << File.join(base, path)
189
+ candidates << File.join(Dir.pwd, path)
190
+ candidates << File.join(Dir.pwd) if path == 'roles'
191
+
192
+ candidates.find do |c|
193
+ type == :directory ? File.directory?(c) : File.file?(c)
194
+ end
195
+ end
196
+ end
197
+ end
198
+ end
199
+ end