kitchen-puppet 1.48.2 → 2.0.0

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: 0e0d4e20a145eddab72ac3db27bdaf1bcee24d5e
4
- data.tar.gz: 1a46e08b13ea72e6dde4745ca253733321eb4ba0
3
+ metadata.gz: bc443e789c42271e0ea4a036a0f64824b9e4947e
4
+ data.tar.gz: 66021dc606cc056dc2d2776d9cc9e5591e7c02cc
5
5
  SHA512:
6
- metadata.gz: 1364f3924e290e7b61c141cb1063445b2ce48549047d6849ef80da1fd3d11b6466b63e5993ee14de7311cba6132a979471dcadf0160d57f4c5110e3049c39370
7
- data.tar.gz: c6dc0b4fc53fa59b6c45f1dfd9653618e540178da3fe2af458f3bfed304453f1c813ad58118b8520e9ae0c81abdac3f597b9ec6a53068d6dbdab909ca37aaed1
6
+ metadata.gz: 33c28b9cfe62c3ef95a0450fe9745b6d68ee3edf83cbc9d07cd8e7dc868c618e7ffd6ce56179012630b4907854d5c7022a1640843069b266ba53fe74f077cf80
7
+ data.tar.gz: f8c5e852419e4c5432b3128637f8abec967aa40e8383c2ba4c918264980adc5be2b12d11e1817890e8e33c310f01c996551075d94579c6157282f4709ed3011b
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kitchen
4
4
  module Puppet
5
- VERSION = '1.48.2'.freeze
5
+ VERSION = '2.0.0'.freeze
6
6
  end
7
7
  end
@@ -60,6 +60,15 @@ module Kitchen
60
60
  default_config :require_chef_for_busser, true
61
61
  default_config :resolve_with_librarian_puppet, true
62
62
  default_config :puppet_environment, nil
63
+ default_config :puppet_environment_config_path do |provisioner|
64
+ provisioner.calculate_path('environment.conf')
65
+ end
66
+ default_config :puppet_environment_remote_modules_path, 'modules'
67
+ default_config :puppet_environment_remote_manifests_path, 'manifests'
68
+ default_config :puppet_environment_remote_hieradata_path, 'hieradata'
69
+ default_config :puppet_environment_hiera_config_path do |provisioner|
70
+ provisioner.calculate_path('hiera.yaml', :file)
71
+ end
63
72
  default_config :puppet_apt_repo, 'http://apt.puppetlabs.com/puppetlabs-release-precise.deb'
64
73
  default_config :puppet_yum_repo, 'https://yum.puppetlabs.com/puppetlabs-release-el-6.noarch.rpm'
65
74
  default_config :chef_bootstrap_url, 'https://www.getchef.com/chef/install.sh'
@@ -112,6 +121,7 @@ module Kitchen
112
121
  end
113
122
 
114
123
  default_config :hiera_config_path do |provisioner|
124
+ provisioner.calculate_path('hiera.global.yaml', :file) ||
115
125
  provisioner.calculate_path('hiera.yaml', :file)
116
126
  end
117
127
 
@@ -157,6 +167,7 @@ module Kitchen
157
167
 
158
168
  default_config :hiera_eyaml, false
159
169
  default_config :hiera_eyaml_key_remote_path, '/etc/puppet/secure/keys'
170
+ default_config :puppet_environmentpath_remote_path, nil
160
171
 
161
172
  default_config :hiera_eyaml_gpg, false
162
173
  default_config :hiera_eyaml_gpg_recipients, false
@@ -521,14 +532,15 @@ module Kitchen
521
532
  end
522
533
 
523
534
  def init_command
524
- todelete = %w[modules manifests files hiera hiera.yaml facter spec enc]
535
+ todelete = %w[modules manifests files hiera hiera.yaml hiera.global.yaml facter spec enc environment]
525
536
  .map { |dir| File.join(config[:root_path], dir) }
526
537
  todelete += [hiera_data_remote_path,
527
538
  '/etc/hiera.yaml',
528
539
  "#{puppet_dir}/hiera.yaml",
529
540
  spec_files_remote_path.to_s,
530
541
  "#{puppet_dir}/fileserver.conf"]
531
- todelete << File.join(puppet_dir, config[:puppet_environment]) if config[:puppet_environment]
542
+ todelete << File.join(puppet_dir, puppet_environment) if puppet_environment
543
+ todelete << File.join(puppet_environmentpath_remote_path, puppet_environment) if puppet_environment_config && puppet_environment
532
544
  cmd = "#{sudo(rm_command_paths(todelete))};"
533
545
  cmd += " #{mkdir_command} #{config[:root_path]};"
534
546
  cmd += " #{sudo(mkdir_command)} #{puppet_dir}"
@@ -547,6 +559,7 @@ module Kitchen
547
559
  prepare_facts
548
560
  prepare_puppet_config
549
561
  prepare_hiera_config
562
+ prepare_puppet_environment
550
563
  prepare_fileserver_config
551
564
  prepare_hiera_data
552
565
  prepare_enc
@@ -602,16 +615,6 @@ module Kitchen
602
615
  ].join(' ')
603
616
  end
604
617
 
605
- if hiera_config
606
- commands << [
607
- sudo(cp_command), File.join(config[:root_path], 'hiera.yaml'), '/etc/'
608
- ].join(' ')
609
-
610
- commands << [
611
- sudo(cp_command), File.join(config[:root_path], 'hiera.yaml'), hiera_config_dir
612
- ].join(' ')
613
- end
614
-
615
618
  if fileserver_config
616
619
  commands << [
617
620
  sudo(cp_command),
@@ -655,7 +658,31 @@ module Kitchen
655
658
 
656
659
  if puppet_environment
657
660
  commands << [
658
- sudo('ln -s '), config[:root_path], File.join(puppet_dir, config[:puppet_environment])
661
+ sudo('ln -s '), config[:root_path], File.join(puppet_dir, puppet_environment)
662
+ ].join(' ')
663
+ end
664
+
665
+ if puppet_environment_config && puppet_environment
666
+ commands << [
667
+ sudo(mkdir_command), puppet_environmentpath_remote_path
668
+ ].join(' ')
669
+ commands << [
670
+ sudo(mkdir_command), File.join(puppet_environmentpath_remote_path, puppet_environment)
671
+ ].join(' ')
672
+ commands << [
673
+ sudo('ln -s '), File.join(config[:root_path], 'modules'), File.join(puppet_environmentpath_remote_path, puppet_environment, puppet_environment_remote_modules_path)
674
+ ].join(' ')
675
+ commands << [
676
+ sudo('ln -s '), File.join(config[:root_path], 'manifests'), File.join(puppet_environmentpath_remote_path, puppet_environment, puppet_environment_remote_manifests_path)
677
+ ].join(' ')
678
+ commands << [
679
+ sudo('ln -s '), File.join(config[:root_path], 'hiera'), File.join(puppet_environmentpath_remote_path, puppet_environment, puppet_environment_remote_hieradata_path)
680
+ ].join(' ')
681
+ commands << [
682
+ sudo('cp'), File.join(config[:root_path], 'environment', 'environment.conf'), File.join(puppet_environmentpath_remote_path, puppet_environment, 'environment.conf')
683
+ ].join(' ')
684
+ commands << [
685
+ sudo('cp'), File.join(config[:root_path], 'environment', 'hiera.yaml'), File.join(puppet_environmentpath_remote_path, puppet_environment, 'hiera.yaml')
659
686
  ].join(' ')
660
687
  end
661
688
 
@@ -694,6 +721,7 @@ module Kitchen
694
721
  puppet_environment_flag,
695
722
  puppet_noop_flag,
696
723
  puppet_enc_flag,
724
+ puppet_hiera_flag,
697
725
  puppet_detailed_exitcodes_flag,
698
726
  puppet_verbose_flag,
699
727
  puppet_debug_flag,
@@ -768,6 +796,25 @@ module Kitchen
768
796
  config[:puppet_environment]
769
797
  end
770
798
 
799
+ def puppet_environment_config
800
+ if config[:puppet_environment_config_path] && !puppet_environment
801
+ raise("ERROR: found environment config '#{config[:puppet_environment_config_path]}', however no 'puppet_environment' is specified. Please specify 'puppet_environment' or unset 'puppet_environment_config_path' in .kitchen.yml")
802
+ end
803
+ config[:puppet_environment_config_path]
804
+ end
805
+
806
+ def puppet_environment_remote_modules_path
807
+ config[:puppet_environment_remote_modules_path]
808
+ end
809
+
810
+ def puppet_environment_remote_manifests_path
811
+ config[:puppet_environment_remote_manifests_path]
812
+ end
813
+
814
+ def puppet_environment_remote_hieradata_path
815
+ config[:puppet_environment_remote_hieradata_path]
816
+ end
817
+
771
818
  def puppet_git_init
772
819
  config[:puppet_git_init]
773
820
  end
@@ -780,6 +827,10 @@ module Kitchen
780
827
  config[:hiera_config_path]
781
828
  end
782
829
 
830
+ def puppet_environment_hiera_config
831
+ config[:puppet_environment_hiera_config_path]
832
+ end
833
+
783
834
  def fileserver_config
784
835
  config[:fileserver_config_path]
785
836
  end
@@ -859,6 +910,15 @@ module Kitchen
859
910
  config[:require_puppet_collections] ? '/etc/puppetlabs/puppet' : '/etc/puppet'
860
911
  end
861
912
 
913
+ def puppet_environmentpath_remote_path
914
+ return config[:puppet_environmentpath_remote_path] if config[:puppet_environmentpath_remote_path]
915
+ if config[:puppet_version] =~ /^3/
916
+ powershell? ? 'C:/ProgramData/PuppetLabs/puppet/etc' : '/etc/puppet/environments'
917
+ else
918
+ powershell? ? 'C:/ProgramData/PuppetLabs/code/environments' : '/etc/puppetlabs/code/environments'
919
+ end
920
+ end
921
+
862
922
  def hiera_config_dir
863
923
  return 'C:/ProgramData/PuppetLabs/puppet/etc' if powershell?
864
924
  config[:require_puppet_collections] ? '/etc/puppetlabs/code' : '/etc/puppet'
@@ -890,9 +950,9 @@ module Kitchen
890
950
 
891
951
  def puppet_environment_flag
892
952
  if config[:puppet_version] =~ /^2/
893
- config[:puppet_environment] ? "--environment=#{config[:puppet_environment]}" : nil
953
+ config[:puppet_environment] ? "--environment=#{puppet_environment}" : nil
894
954
  else
895
- config[:puppet_environment] ? "--environment=#{config[:puppet_environment]} --environmentpath=#{puppet_dir}" : nil
955
+ config[:puppet_environment] ? "--environment=#{puppet_environment} --environmentpath=#{puppet_environmentpath_remote_path}" : nil
896
956
  end
897
957
  end
898
958
 
@@ -1000,6 +1060,10 @@ module Kitchen
1000
1060
  config[:puppet_enc] ? "--node_terminus=exec --external_nodes=#{config[:root_path]}/enc/#{File.basename(config[:puppet_enc])}" : nil
1001
1061
  end
1002
1062
 
1063
+ def puppet_hiera_flag
1064
+ hiera_config ? "--hiera_config=#{config[:root_path]}/hiera.global.yaml" : nil
1065
+ end
1066
+
1003
1067
  def puppet_detailed_exitcodes_flag
1004
1068
  config[:puppet_detailed_exitcodes] ? '--detailed-exitcodes' : nil
1005
1069
  end
@@ -1255,13 +1319,29 @@ module Kitchen
1255
1319
  FileUtils.cp_r(config[:puppet_enc], File.join(enc_dir, '/'))
1256
1320
  end
1257
1321
 
1322
+ def prepare_puppet_environment
1323
+ return unless puppet_environment_config
1324
+
1325
+ info('Preparing Environment Config')
1326
+ environment_dir = File.join(sandbox_path, 'environment')
1327
+ FileUtils.mkdir_p(environment_dir)
1328
+ debug("Using Environment Config environment.conf from #{puppet_environment_config}")
1329
+ FileUtils.cp_r(puppet_environment_config, File.join(environment_dir, 'environment.conf'))
1330
+ if puppet_environment_hiera_config
1331
+ debug("Using Environment Hiera Config hiera.yaml from #{puppet_environment_hiera_config}")
1332
+ FileUtils.cp_r(puppet_environment_hiera_config, File.join(environment_dir, 'hiera.yaml'))
1333
+ else
1334
+ info('No Environment hiera.yaml found')
1335
+ end
1336
+ end
1337
+
1258
1338
  def prepare_hiera_config
1259
1339
  return unless hiera_config
1260
1340
 
1261
- info('Preparing hiera')
1341
+ info('Preparing hiera (global layer)')
1262
1342
  debug("Using hiera from #{hiera_config}")
1263
1343
 
1264
- FileUtils.cp_r(hiera_config, File.join(sandbox_path, 'hiera.yaml'))
1344
+ FileUtils.cp_r(hiera_config, File.join(sandbox_path, 'hiera.global.yaml'))
1265
1345
  end
1266
1346
 
1267
1347
  def prepare_fileserver_config
@@ -38,7 +38,7 @@ facter_file | nil | yaml file of custom facter_files to be provided to the puppe
38
38
  facter_version | "latest"| desired version, affects apt installs.
39
39
  files_path | | directory to place at /tmp/kitchen/files
40
40
  fileserver_config_path | | file to place fileserver.conf
41
- hiera_config_path | | path to hiera.yaml
41
+ hiera_config_path | hiera.global.yaml then hiera.yaml | path to hiera.yaml
42
42
  hiera_data_path | | puppet repo hiera data directory
43
43
  hiera_data_remote_path | "/var/lib/hiera" | Hiera data directory on server
44
44
  hiera_deep_merge | false | install the deep_merge gem to support hiera deep merge mode
@@ -80,6 +80,12 @@ puppet_debug| false| Enable full debugging logging on puppet run
80
80
  puppet_detailed_exitcodes | nil | Provide transaction information via exit codes. See `--detailed-exitcodes` section of `puppet help apply`
81
81
  puppet_enc | | path for external node classifier script
82
82
  puppet_environment | nil | puppet environment for running puppet apply (Must set if using Puppet v4)
83
+ puppet_environment _config_path | "environment.conf" | Puppet environment config file
84
+ puppet_environment _hiera_config_path | "hiera.yaml" | Environment layer hiera config file (see Puppet 4.10), only used if puppet _environmentpath = true
85
+ puppet_environment _remote_hieradata_path | "hieradata" | Path in `puppet_environmentpath_remote_path` to contains the hiera data.
86
+ puppet_environment _remote_modules_path | "modules" | Path in `puppet_environmentpath_remote_path` to contains the modules.
87
+ puppet_environment _remote_manifests_path | "manifests" | Path in `puppet_environmentpath_remote_path` to contains the manifests.
88
+ puppet _environmentpath_remote_path | "/etc/puppet/environments" (v3), "/etc/puppetlabs/code/environments" (v4) | The remote path for environments if `puppet_environmentpath` is true
83
89
  puppet_future_parser | false | Run puppet with the future parser enabled (see https://docs.puppet.com/puppet/3.8/experiments_future.html).
84
90
  puppet_git_init | nil | initialize puppet from GIT repository, e.g. "git@github.com:example/puppet-repo.git"
85
91
  puppet_git_pr | nil | checkout specific Pull Request from repository specified in puppet_git_init, e.g. "324"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kitchen-puppet
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.48.2
4
+ version: 2.0.0
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-05-13 00:00:00.000000000 Z
11
+ date: 2017-05-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: test-kitchen