kitchen-ansible 0.46.0 → 0.46.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 24e506b16b7566a6c179b3ba75f7bf0a49d932d9
4
- data.tar.gz: 45e03baef7f9bb872622f085ce5a72488900d9b6
3
+ metadata.gz: b32daee00e5d86149852730c2886d4e57b5324d4
4
+ data.tar.gz: 60b860dff81e09a2e571903bcf659b6b0bf3b141
5
5
  SHA512:
6
- metadata.gz: 402e8bff85a9b3c8a130cb314d466609558aa4c43073e8fb77d3096680d33772a0eaf58dccb24c7d07b82268d1bf523343cbb811b58143a7eedf6db2ae4e70f2
7
- data.tar.gz: dc54f9033f6118c5af36d7b76ac500e209a5d0b59c39fbce9903cc1059b773773513afe37f6a8b4cb2617673281193641a1272903d777dc326cc4b2c10db6ee1
6
+ metadata.gz: 58da2f4aad784bed8f6a88ee035bcbfb25ce1305b0e8bca7e68eee0b6eb3d8514924f151043a4105ecca164051e0350980a73e942984f693a85e312cd3b436e5
7
+ data.tar.gz: 31a20f6821e86b2d69acb4185947e48b162e1bdfd6d1351b1c60789dac6b9c0b2ee8edcdf1534c273b4559f380c7c27626da7a61c6e118d1ee3d4e6e684dd1a3
@@ -1,6 +1,6 @@
1
1
  # -*- encoding: utf-8 -*-
2
2
  module Kitchen
3
3
  module Ansible
4
- VERSION = '0.46.0'
4
+ VERSION = '0.46.1'
5
5
  end
6
6
  end
@@ -80,6 +80,10 @@ module Kitchen
80
80
  default_config :role_name, nil
81
81
  default_config :additional_copy_role_path, false
82
82
  default_config :shell_command, 'sh'
83
+ default_config :custom_pre_install_command, nil
84
+ default_config :custom_pre_play_command, nil
85
+ default_config :custom_post_install_command, nil
86
+ default_config :custom_post_play_command, nil
83
87
 
84
88
  default_config :playbook do |provisioner|
85
89
  provisioner.calculate_path('default.yml', :file) ||
@@ -106,7 +106,8 @@ module Kitchen
106
106
  else
107
107
  return
108
108
  end
109
- result = cmd + install_windows_support + install_busser_prereqs
109
+
110
+ result = custom_pre_install_command + cmd + install_windows_support + install_busser_prereqs + custom_post_install_command
110
111
  debug("Going to install ansible with: #{result}")
111
112
  result
112
113
  end
@@ -234,6 +235,19 @@ module Kitchen
234
235
  install
235
236
  end
236
237
 
238
+ def custom_pre_install_command
239
+ <<-INSTALL
240
+
241
+ #{config[:custom_pre_install_command]}
242
+ INSTALL
243
+ end
244
+
245
+ def custom_post_install_command
246
+ <<-INSTALL
247
+ #{config[:custom_post_install_command]}
248
+ INSTALL
249
+ end
250
+
237
251
  def init_command
238
252
  dirs = %w(modules roles group_vars host_vars)
239
253
  .map { |dir| File.join(config[:root_path], dir) }.join(' ')
@@ -346,53 +360,64 @@ module Kitchen
346
360
  end
347
361
 
348
362
  def run_command
349
- if !config[:ansible_playbook_command].nil?
350
- return config[:ansible_playbook_command]
363
+ return config[:ansible_playbook_command] unless config[:ansible_playbook_command].nil?
364
+ if config[:require_ansible_source] && !config[:ansible_binary_path]
365
+ # this is an ugly hack to get around the fact that extra vars uses ' and "
366
+ cmd = ansible_command("PATH=#{config[:root_path]}/ansible/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games PYTHONPATH=#{config[:root_path]}/ansible/lib MANPATH=#{config[:root_path]}/ansible/docs/man ansible-playbook")
367
+ elsif config[:ansible_binary_path]
368
+ cmd = ansible_command("#{config[:ansible_binary_path]}/ansible-playbook")
351
369
  else
370
+ cmd = ansible_command('ansible-playbook')
371
+ end
352
372
 
353
- if config[:require_ansible_source] && !config[:ansible_binary_path]
354
- # this is an ugly hack to get around the fact that extra vars uses ' and "
355
- cmd = ansible_command("PATH=#{config[:root_path]}/ansible/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games PYTHONPATH=#{config[:root_path]}/ansible/lib MANPATH=#{config[:root_path]}/ansible/docs/man ansible-playbook")
356
- elsif config[:ansible_binary_path]
357
- cmd = ansible_command("#{config[:ansible_binary_path]}/ansible-playbook")
358
- else
359
- cmd = ansible_command('ansible-playbook')
360
- end
373
+ cmd = "#{env_vars} #{cmd}" if !config[:env_vars].none?
374
+ cmd = "HTTPS_PROXY=#{https_proxy} #{cmd}" if https_proxy
375
+ cmd = "HTTP_PROXY=#{http_proxy} #{cmd}" if http_proxy
376
+ cmd = "NO_PROXY=#{no_proxy} #{cmd}" if no_proxy
377
+ cmd = "ANSIBLE_ROLES_PATH=#{ansible_roles_path} #{cmd}" if ansible_roles_path
378
+ cmd = "ANSIBLE_HOST_KEY_CHECKING=false #{cmd}" if !ansible_host_key_checking
379
+
380
+ cmd = "#{cd_ansible} #{cmd}" if !config[:ansible_sudo].nil? && !config[:ansible_sudo]
381
+ cmd = "#{copy_private_key_cmd} #{cmd}" if config[:private_key]
382
+
383
+ result = [
384
+ cmd,
385
+ ansible_inventory_flag,
386
+ ansible_limit_flag,
387
+ ansible_connection_flag,
388
+ "-M #{File.join(config[:root_path], 'modules')}",
389
+ ansible_verbose_flag,
390
+ ansible_check_flag,
391
+ ansible_diff_flag,
392
+ ansible_vault_flag,
393
+ private_key,
394
+ extra_vars,
395
+ extra_vars_file,
396
+ tags,
397
+ ansible_extra_flags,
398
+ "#{File.join(config[:root_path], File.basename(config[:playbook]))}"
399
+ ].join(' ')
400
+ if config[:custom_post_play_command]
401
+ custom_post_play_trap = <<-TRAP
402
+ function custom_post_play_command {
403
+ #{config[:custom_post_play_command]}
404
+ }
405
+ trap custom_post_play_command EXIT
406
+ TRAP
407
+ end
408
+ result = <<-RUN
409
+ #{config[:custom_pre_play_command]}
410
+ #{custom_post_play_trap}
411
+ #{result}
412
+ RUN
413
+ debug("Going to invoke ansible-playbook with: #{result}")
414
+ if config[:idempotency_test]
415
+ result = "#{result} && (echo 'Going to invoke ansible-playbook second time:'; #{result} | tee /tmp/idempotency_test.txt; grep -q 'changed=0.*failed=0' /tmp/idempotency_test.txt && (echo 'Idempotence test: PASS' && exit 0) || (echo 'Idempotence test: FAIL' && exit 1))"
416
+ debug("Full cmd with idempotency test: #{result}")
417
+ end
361
418
 
362
- cmd = "#{env_vars} #{cmd}" if !config[:env_vars].none?
363
- cmd = "HTTPS_PROXY=#{https_proxy} #{cmd}" if https_proxy
364
- cmd = "HTTP_PROXY=#{http_proxy} #{cmd}" if http_proxy
365
- cmd = "NO_PROXY=#{no_proxy} #{cmd}" if no_proxy
366
- cmd = "ANSIBLE_ROLES_PATH=#{ansible_roles_path} #{cmd}" if ansible_roles_path
367
- cmd = "ANSIBLE_HOST_KEY_CHECKING=false #{cmd}" if !ansible_host_key_checking
368
-
369
- cmd = "#{cd_ansible} #{cmd}" if !config[:ansible_sudo].nil? && !config[:ansible_sudo]
370
- cmd = "#{copy_private_key_cmd} #{cmd}" if config[:private_key]
371
-
372
- result = [
373
- cmd,
374
- ansible_inventory_flag,
375
- ansible_limit_flag,
376
- ansible_connection_flag,
377
- "-M #{File.join(config[:root_path], 'modules')}",
378
- ansible_verbose_flag,
379
- ansible_check_flag,
380
- ansible_diff_flag,
381
- ansible_vault_flag,
382
- private_key,
383
- extra_vars,
384
- tags,
385
- ansible_extra_flags,
386
- "#{File.join(config[:root_path], File.basename(config[:playbook]))}"
387
- ].join(' ')
388
- debug("Going to invoke ansible-playbook with: #{result}")
389
- if config[:idempotency_test]
390
- result = "#{result} && (echo 'Going to invoke ansible-playbook second time:'; #{result} | tee /tmp/idempotency_test.txt; grep -q 'changed=0.*failed=0' /tmp/idempotency_test.txt && (echo 'Idempotence test: PASS' && exit 0) || (echo 'Idempotence test: FAIL' && exit 1))"
391
- debug("Full cmd with idempotency test: #{result}")
392
- end
419
+ result
393
420
 
394
- result
395
- end
396
421
  end
397
422
 
398
423
  def ansible_command(script)
@@ -747,13 +772,16 @@ module Kitchen
747
772
  bash_vars = config[:attributes][:extra_vars]
748
773
  end
749
774
 
750
- return nil if bash_vars.none? and config[:extra_vars_file].nil?
751
- if !bash_vars.none?
752
- bash_extra_vars = JSON.dump(bash_vars)
753
- else
754
- bash_extra_vars = "\@#{config[:extra_vars_file]}"
755
- end
756
- bash_extra_vars = "-e '#{bash_extra_vars}'"
775
+ return nil if bash_vars.none?
776
+ bash_vars = JSON.dump(bash_vars)
777
+ bash_vars = "-e '#{bash_vars}'"
778
+ debug(bash_vars)
779
+ bash_vars
780
+ end
781
+
782
+ def extra_vars_file
783
+ return nil if config[:extra_vars_file].nil?
784
+ bash_extra_vars = "-e '\@#{config[:extra_vars_file]}'"
757
785
  debug(bash_extra_vars)
758
786
  bash_extra_vars
759
787
  end
@@ -54,10 +54,14 @@ ansible_yum_repo | nil | `yum` repo for EL platforms
54
54
  ansiblefile_path | | Path to Ansiblefile
55
55
  callback_plugins_path | callback_plugins | Ansible repo `callback_plugins` directory
56
56
  chef_bootstrap_url | `https://www.getchef.com/chef/install.sh` | The Chef install
57
+ custom_pre_install_command | nil | Custom shell command to be used at beginning of install stage. Can be multiline.
58
+ custom_pre_play_command | nil | Custom shell command to be used before the ansible play stage. Can be multiline. See examples below.
59
+ custom_post_install_command | nil | Custom shell command to be used at after the install stage. Can be multiline.
60
+ custom_post_play_command | nil | Custom shell command to be used after the ansible play stage. Can be multiline. See examples below.
57
61
  enable_yum_epel | false | Enable the `yum` EPEL repo
58
62
  env_vars | Hash.new | Hash to set environment variable to use with `ansible-playbook` command
59
63
  extra_vars | Hash.new | Hash to set the `extra_vars` passed to `ansible-playbook` command
60
- extra_vars_file | nil | file containing environment variables e.g. `private_vars/production.yml site.yml` Only if extra_vars not specified. Don't prefix with a @ sign.
64
+ extra_vars_file | nil | file containing environment variables e.g. `private_vars/production.yml site.yml` Don't prefix with a @ sign.
61
65
  filter_plugins_path | filter_plugins | Ansible repo `filter_plugins` directory
62
66
  group_vars_path | group_vars | Ansible repo group_vars directory
63
67
  host_vars_path | host_vars | Ansible repo hosts directory
@@ -132,3 +136,15 @@ $kitchen_root/ansible/$suite_name/roles
132
136
  $kitchen_root/ansible/$suite_name/modules
133
137
  $kitchen_root/ansible/$suite_name/Ansiblefile
134
138
  ```
139
+
140
+ Multiple Line Structure
141
+ ```yaml
142
+ provisioner::
143
+ command: |
144
+ sudo -s <<SERVERSPEC
145
+ cd /opt/gdc/serverspec-core
146
+ export SERVERSPEC_ENV=$EC2DATA_ENVIRONMENT
147
+ export SERVERSPEC_BACKEND=exec
148
+ serverspec junit=true tag=~skip_in_kitchen check:role:$EC2DATA_TYPE
149
+ SERVERSPEC
150
+ ```
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-ansible
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.46.0
4
+ version: 0.46.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Neill Turner
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-03-05 00:00:00.000000000 Z
11
+ date: 2017-03-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen