kitchen-ansible 0.0.13 → 0.0.14

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: 7c76809e1ae3af15a1af70c8e2a3506592a5a3fa
4
+ data.tar.gz: ead9e832b47e8509069250df3b4c76f073894205
5
+ SHA512:
6
+ metadata.gz: c618628de49ae2e74afbce52a93c09b45f125174fb743e79e009d442d515899cab1ce6ebe71600a1198317a52a5fce9d62d47bc3914203a328b3f277e2e68537
7
+ data.tar.gz: da7d1fd5f358c495f082bef1d0c0d0f372123a97c73a69dc686bba5d8d5e499e7e04a5e747af22883eb57ea086c77fa0538246225eef03528f6bca3f63517eef
data/README.md CHANGED
@@ -1,6 +1,7 @@
1
1
  # kitchen-ansible
2
2
 
3
3
  [![Gem Version](https://badge.fury.io/rb/kitchen-ansible.svg)](http://badge.fury.io/rb/kitchen-ansible)
4
+ [![Gem Downloads](http://ruby-gem-downloads-badge.herokuapp.com/kitchen-ansible?type=total&color=brightgreen)](https://rubygems.org/gems/kitchen-ansible)
4
5
 
5
6
  A Test Kitchen Provisioner for Ansible
6
7
 
@@ -1,5 +1,5 @@
1
1
  module Kitchen
2
2
  module Ansible
3
- VERSION = "0.0.13"
3
+ VERSION = "0.0.14"
4
4
  end
5
5
  end
@@ -85,6 +85,10 @@ module Kitchen
85
85
  provisioner.calculate_path('filter_plugins', :directory)
86
86
  end
87
87
 
88
+ default_config :ansible_vault_password_file do |provisioner|
89
+ provisioner.calculate_path('ansible-vault-password', :file)
90
+ end
91
+
88
92
  default_config :requirements_path, false
89
93
  default_config :ansible_verbose, false
90
94
  default_config :ansible_verbosity, 1
@@ -149,7 +153,7 @@ module Kitchen
149
153
  if [ ! $(which ansible) ]; then
150
154
  #{update_packages_debian_cmd}
151
155
  ## Install apt-utils to silence debconf warning: http://serverfault.com/q/358943/77156
152
- #{sudo('apt-get')} -y install apt-utils
156
+ #{sudo('apt-get')} -y install apt-utils git
153
157
  ## Fix debconf tty warning messages
154
158
  export DEBIAN_FRONTEND=noninteractive
155
159
  ## 13.10, 14.04 include add-apt-repository in software-properties-common
@@ -276,6 +280,7 @@ module Kitchen
276
280
  prepare_host_vars
277
281
  prepare_hosts
278
282
  prepare_filter_plugins
283
+ prepare_ansible_vault_password_file
279
284
  info('Finished Preparing files for transfer')
280
285
 
281
286
  end
@@ -327,6 +332,7 @@ module Kitchen
327
332
  ansible_verbose_flag,
328
333
  ansible_check_flag,
329
334
  ansible_diff_flag,
335
+ ansible_vault_flag,
330
336
  extra_vars,
331
337
  tags,
332
338
  "#{File.join(config[:root_path], File.basename(config[:playbook]))}",
@@ -362,6 +368,10 @@ module Kitchen
362
368
  File.join(sandbox_path, 'filter_plugins')
363
369
  end
364
370
 
371
+ def tmp_ansible_vault_password_file_path
372
+ File.join(sandbox_path, File.basename(ansible_vault_password_file))
373
+ end
374
+
365
375
  def ansiblefile
366
376
  config[:ansiblefile_path] || ''
367
377
  end
@@ -395,7 +405,7 @@ module Kitchen
395
405
  end
396
406
 
397
407
  def addt_dir
398
- config[:additional_copy_path].to_s
408
+ config[:additional_copy_path]
399
409
  end
400
410
 
401
411
  def host_vars
@@ -406,6 +416,9 @@ module Kitchen
406
416
  config[:filter_plugins_path].to_s
407
417
  end
408
418
 
419
+ def ansible_vault_password_file
420
+ config[:ansible_vault_password_file]
421
+ end
409
422
 
410
423
  def ansible_debian_version
411
424
  config[:ansible_version] ? "=#{config[:ansible_version]}" : nil
@@ -427,6 +440,11 @@ module Kitchen
427
440
  config[:ansible_diff] ? '--diff' : nil
428
441
  end
429
442
 
443
+ def ansible_vault_flag
444
+ debug(config[:ansible_vault_password_file])
445
+ config[:ansible_vault_password_file] ? "--vault-password-file=#{File.join(config[:root_path], File.basename(config[:ansible_vault_password_file]))}" : nil
446
+ end
447
+
430
448
  def ansible_platform
431
449
  config[:ansible_platform].to_s.downcase
432
450
  end
@@ -500,15 +518,22 @@ module Kitchen
500
518
  def prepare_ansible_cfg
501
519
  info('Preparing ansible.cfg file')
502
520
  ansible_config_file = "#{File.join(sandbox_path, 'ansible.cfg')}"
503
- if config[:roles_path].nil?
521
+
522
+ roles_paths = []
523
+ roles_paths << File.join(config[:root_path], 'roles') unless config[:roles_path].nil?
524
+ additional_dirs.each do |additional_dir|
525
+ roles_paths << File.join(config[:root_path], File.basename(additional_dir))
526
+ end
527
+
528
+ if roles_paths.empty?
504
529
  info('No roles have been set. empty ansible.cfg generated')
505
530
  File.open(ansible_config_file, "wb") do |file|
506
531
  file.write("#no roles path specified\n")
507
532
  end
508
533
  else
509
- debug("Setting roles_path inside VM to #{File.join(config[:root_path], 'roles')}")
534
+ debug("Setting roles_path inside VM to #{ roles_paths.join(':') }")
510
535
  File.open( ansible_config_file, "wb") do |file|
511
- file.write("[defaults]\nroles_path = #{File.join(config[:root_path], 'roles')}\n")
536
+ file.write("[defaults]\nroles_path = #{ roles_paths.join(':') }\n")
512
537
  end
513
538
  end
514
539
  end
@@ -553,16 +578,30 @@ module Kitchen
553
578
 
554
579
  def prepare_addt_dir
555
580
  info('Preparing additional_copy_path')
556
- tmp_addt_dir = File.join(sandbox_path, File.basename(addt_dir))
557
- FileUtils.mkdir_p(tmp_addt_dir)
558
581
 
559
- unless File.directory?(addt_dir)
560
- info 'nothing to do for additional_copy_path'
561
- return
582
+ additional_dirs.each do |additional_dir|
583
+
584
+ tmp_addt_dir = File.join(sandbox_path, File.basename(additional_dir))
585
+ FileUtils.mkdir_p(tmp_addt_dir)
586
+
587
+ unless File.directory?(additional_dir)
588
+ info "invalid value #{additional_dir} in additional_copy_path"
589
+ return
590
+ end
591
+
592
+ debug("Using additional_copy_path from #{additional_dir}")
593
+ FileUtils.cp_r(Dir.glob("#{additional_dir}/*"), tmp_addt_dir)
562
594
  end
595
+ end
563
596
 
564
- debug("Using additional_copy_path from #{addt_dir}")
565
- FileUtils.cp_r(Dir.glob("#{addt_dir}/*"), tmp_addt_dir)
597
+ def additional_dirs
598
+ additional_dirs = []
599
+
600
+ if ( addt_dir )
601
+ additional_dirs = addt_dir.kind_of?(Array) ? addt_dir : [addt_dir]
602
+ end
603
+
604
+ additional_dirs.map { |additional_dir| additional_dir.to_s }
566
605
  end
567
606
 
568
607
  def prepare_host_vars
@@ -603,6 +642,12 @@ module Kitchen
603
642
  end
604
643
  end
605
644
 
645
+ def prepare_ansible_vault_password_file
646
+ info('Preparing ansible vault password')
647
+ debug("Copying ansible vault password file from #{ansible_vault_password_file} to #{tmp_ansible_vault_password_file_path}")
648
+ FileUtils.cp(ansible_vault_password_file, tmp_ansible_vault_password_file_path)
649
+ end
650
+
606
651
  def resolve_with_librarian
607
652
  Kitchen.mutex.synchronize do
608
653
  Ansible::Librarian.new(ansiblefile, tmp_roles_dir, logger).resolve
@@ -6,8 +6,9 @@ key | default value | Notes
6
6
  ansible_version | "latest"| desired version, affects apt installs
7
7
  ansible_platform | naively tries to determine | OS platform of server
8
8
  require_ansible_repo | true | Set if using a ansible install from yum or apt repo
9
- ansible_apt_repo | "ppa:ansible/ansible"| apt repo
10
- ansible_yum_repo | "https://download.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpm"| yum repo
9
+ ansible_apt_repo | "ppa:ansible/ansible" | apt repo
10
+ ansible_yum_repo | "https://download.fedoraproject.org | yum repo
11
+ | /pub/epel/6/i386/epel-release-6-8.noarch.rpm" |
11
12
  require_ansible_omnibus | false | Set if using omnibus ansible install
12
13
  ansible_omnibus_url | | omnibus ansible install location.
13
14
  ansible_omnibus_remote_path | "/opt/ansible" | Server Installation location of an omnibus ansible install.
@@ -15,7 +16,7 @@ roles_path | roles | ansible repo roles directory
15
16
  group_vars_path | group_vars | ansible repo group_vars directory
16
17
  host_vars_path | host_vars | ansible repo hosts directory
17
18
  filter_plugins | filter_plugins | ansible repo filter_plugins directory
18
- additional_copy_path | | arbitrary directory to copy into test environment, relative to CWD. (eg, vars)
19
+ additional_copy_path | | arbitrary array of directories to copy into test environment, relative to CWD. (eg, vars)
19
20
  extra_vars | Hash.new | Hash to set the extra_vars passed to ansibile-playbook command
20
21
  playbook | 'site.yml' | playbook for ansible-playbook to run
21
22
  modules_path | | ansible repo manifests directory
@@ -27,6 +28,7 @@ update_package_repos| true| update OS repository metadata
27
28
  chef_bootstrap_url |"https://www.getchef.com/chef/install.sh"| the chef (needed for busser to run tests)
28
29
  ansiblefile_path | | Path to Ansiblefile
29
30
  requirements_path | | Path to ansible-galaxy requirements
31
+ ansible_vault_password_file| | Path of Ansible Vault Password File
30
32
 
31
33
  ## Configuring Provisioner Options
32
34
 
metadata CHANGED
@@ -1,77 +1,66 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-ansible
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.13
5
- prerelease:
4
+ version: 0.0.14
6
5
  platform: ruby
7
6
  authors:
8
7
  - Neill Turner
9
8
  autorequire:
10
9
  bindir: bin
11
10
  cert_chain: []
12
- date: 2015-04-27 00:00:00.000000000 Z
11
+ date: 2015-05-08 00:00:00.000000000 Z
13
12
  dependencies:
14
13
  - !ruby/object:Gem::Dependency
15
14
  name: test-kitchen
16
15
  requirement: !ruby/object:Gem::Requirement
17
- none: false
18
16
  requirements:
19
- - - ! '>='
17
+ - - ">="
20
18
  - !ruby/object:Gem::Version
21
19
  version: '0'
22
20
  type: :runtime
23
21
  prerelease: false
24
22
  version_requirements: !ruby/object:Gem::Requirement
25
- none: false
26
23
  requirements:
27
- - - ! '>='
24
+ - - ">="
28
25
  - !ruby/object:Gem::Version
29
26
  version: '0'
30
27
  - !ruby/object:Gem::Dependency
31
28
  name: rspec
32
29
  requirement: !ruby/object:Gem::Requirement
33
- none: false
34
30
  requirements:
35
- - - ! '>='
31
+ - - ">="
36
32
  - !ruby/object:Gem::Version
37
33
  version: '0'
38
34
  type: :development
39
35
  prerelease: false
40
36
  version_requirements: !ruby/object:Gem::Requirement
41
- none: false
42
37
  requirements:
43
- - - ! '>='
38
+ - - ">="
44
39
  - !ruby/object:Gem::Version
45
40
  version: '0'
46
41
  - !ruby/object:Gem::Dependency
47
42
  name: pry
48
43
  requirement: !ruby/object:Gem::Requirement
49
- none: false
50
44
  requirements:
51
- - - ! '>='
45
+ - - ">="
52
46
  - !ruby/object:Gem::Version
53
47
  version: '0'
54
48
  type: :development
55
49
  prerelease: false
56
50
  version_requirements: !ruby/object:Gem::Requirement
57
- none: false
58
51
  requirements:
59
- - - ! '>='
52
+ - - ">="
60
53
  - !ruby/object:Gem::Version
61
54
  version: '0'
62
- description: ! '== DESCRIPTION:
63
-
55
+ description: |+
56
+ == DESCRIPTION:
64
57
 
65
58
  Ansible Provisioner for Test Kitchen
66
59
 
67
-
68
60
  == FEATURES:
69
61
 
70
-
71
62
  Supports running ansible-playbook
72
63
 
73
-
74
- '
75
64
  email:
76
65
  - neillwturner@gmail.com
77
66
  executables: []
@@ -86,26 +75,25 @@ files:
86
75
  - provisioner_options.md
87
76
  homepage: https://github.com/neillturner/kitchen-ansible
88
77
  licenses: []
78
+ metadata: {}
89
79
  post_install_message:
90
80
  rdoc_options: []
91
81
  require_paths:
92
82
  - lib
93
83
  required_ruby_version: !ruby/object:Gem::Requirement
94
- none: false
95
84
  requirements:
96
- - - ! '>='
85
+ - - ">="
97
86
  - !ruby/object:Gem::Version
98
87
  version: '0'
99
88
  required_rubygems_version: !ruby/object:Gem::Requirement
100
- none: false
101
89
  requirements:
102
- - - ! '>='
90
+ - - ">="
103
91
  - !ruby/object:Gem::Version
104
92
  version: '0'
105
93
  requirements: []
106
- rubyforge_project: ! '[none]'
107
- rubygems_version: 1.8.24
94
+ rubyforge_project: "[none]"
95
+ rubygems_version: 2.2.2
108
96
  signing_key:
109
- specification_version: 3
97
+ specification_version: 4
110
98
  summary: ansible provisioner for test-kitchen
111
99
  test_files: []