kitchen-puppet 3.3.2 → 3.4.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: 0542ac99d127e21a163136f2b52b95f0e2d84335
4
- data.tar.gz: ad2486099b5fe869218c222d9196e7d89c821cb2
3
+ metadata.gz: df14da642855ea0a839df2f8ad0cdc4792f8c2b9
4
+ data.tar.gz: aa9ae40146325dbbcd971fa3386d2ee2254964e1
5
5
  SHA512:
6
- metadata.gz: e36d7314cccffb36e8a6c1a41e411326b6c59d45100745976164b16f93f519efdcf2dc31a572ae386f75147cf1ea0b4339ded5d71687eabacff880b49cee70b0
7
- data.tar.gz: 6ca7dc799071b0d9155d1eb55a2a63e13cc3a58111c2b5e14c063e1200a2b88cb2324a0051669a3023d761636e622dc27225da59b57c3f98d7972a71e5cc61f0
6
+ metadata.gz: 84b81095921b8eb7468aff290085afb48be1b7f58d3f752934ede4d6d3f933717b9ef4dc96ba08c0839b05f1eb3595664b4728d4bc3a5ff6ac24402d1c9fbf74
7
+ data.tar.gz: a03e2f07fc71aab142738ccba3d90f7eab350be33a474a95b3d98ab6fc624a280a0ef8684eb559a5a843dbbe748c8197f2968aa506ba986c19304535769fe866
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Kitchen
4
4
  module Puppet
5
- VERSION = '3.3.2'.freeze
5
+ VERSION = '3.4.0'.freeze
6
6
  end
7
7
  end
@@ -0,0 +1,73 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ #
4
+ # Author:: Fletcher Nichol (<fnichol@nichol.ca>) Neill Turner (<neillwturner@gmail.com>) Dennis Lerch (<dennis.lerch@transporeon.com>)
5
+ #
6
+ # Copyright (C) 2018, Fletcher Nichol, Neill Turner, Dennis Lerch
7
+ #
8
+ # Licensed under the Apache License, Version 2.0 (the "License");
9
+ # you may not use this file except in compliance with the License.
10
+ # You may obtain a copy of the License at
11
+ #
12
+ # http://www.apache.org/licenses/LICENSE-2.0
13
+ #
14
+ # Unless required by applicable law or agreed to in writing, software
15
+ # distributed under the License is distributed on an "AS IS" BASIS,
16
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
17
+ # See the License for the specific language governing permissions and
18
+ # limitations under the License.
19
+
20
+ require 'kitchen/errors'
21
+ require 'kitchen/logging'
22
+
23
+ module Kitchen
24
+ module Provisioner
25
+ module Puppet
26
+ # Puppet module resolver that uses R10K and a Puppetfile to
27
+ # calculate # dependencies.
28
+ #
29
+ class R10K
30
+ include Logging
31
+
32
+ def initialize(puppetfile, path, logger = Kitchen.logger)
33
+ @puppetfile = puppetfile
34
+ @path = path
35
+ @logger = logger
36
+ end
37
+
38
+ def self.load!(logger = Kitchen.logger)
39
+ load_r10k!(logger)
40
+ end
41
+
42
+ def resolve
43
+ version = ::R10K::VERSION
44
+ info("Resolving module dependencies with R10K-Puppet #{version}...")
45
+ debug("Using Puppetfile from #{puppetfile}")
46
+
47
+ ::R10K::Git::Cache.settings[:cache_root] = '.r10k/git'
48
+ ::R10K::Forge::ModuleRelease.settings[:cache_root] = '.r10k/cache'
49
+
50
+ pf = ::R10K::Puppetfile.new(nil, path, puppetfile)
51
+ pf.load
52
+ pf.modules.map(&:sync)
53
+ end
54
+
55
+ attr_reader :puppetfile, :path, :logger
56
+
57
+ def self.load_r10k!(logger)
58
+ require 'r10k/puppetfile'
59
+
60
+ version = ::R10K::VERSION
61
+ logger.debug("R10K #{version} library loaded")
62
+ rescue LoadError => e
63
+ logger.fatal("The `r10k' gem is missing and must be installed" \
64
+ ' or cannot be properly activated. Run' \
65
+ ' `gem install r10k` or add the following to your' \
66
+ " Gemfile if you are using Bundler: `gem 'r10k'`.")
67
+ raise UserError,
68
+ "Could not load or activate R10K (#{e.message})"
69
+ end
70
+ end
71
+ end
72
+ end
73
+ end
@@ -24,7 +24,6 @@
24
24
  require 'uri'
25
25
  require 'json'
26
26
  require 'kitchen'
27
- require 'kitchen/provisioner/puppet/librarian'
28
27
 
29
28
  module Kitchen
30
29
  class Busser
@@ -59,6 +58,7 @@ module Kitchen
59
58
  default_config :require_puppet_repo, true
60
59
  default_config :require_chef_for_busser, true
61
60
  default_config :resolve_with_librarian_puppet, true
61
+ default_config :resolve_with_r10k, false
62
62
  default_config :puppet_environment, nil
63
63
  default_config :puppet_environment_config_path do |provisioner|
64
64
  provisioner.calculate_path('environment.conf')
@@ -165,6 +165,7 @@ module Kitchen
165
165
  default_config :puppet_detailed_exitcodes, nil
166
166
  default_config :facter_file, nil
167
167
  default_config :librarian_puppet_ssl_file, nil
168
+ default_config :r10k_ssl_file, nil
168
169
 
169
170
  default_config :hiera_eyaml, false
170
171
  default_config :hiera_eyaml_key_remote_path, '/etc/puppet/secure/keys'
@@ -758,9 +759,16 @@ module Kitchen
758
759
 
759
760
  def load_needed_dependencies!
760
761
  return unless File.exist?(puppetfile)
761
- return unless config[:resolve_with_librarian_puppet]
762
- debug("Puppetfile found at #{puppetfile}, loading Librarian-Puppet")
763
- Puppet::Librarian.load!(logger)
762
+ return unless config[:resolve_with_librarian_puppet] || config[:resolve_with_r10k]
763
+ if config[:resolve_with_librarian_puppet]
764
+ require 'kitchen/provisioner/puppet/librarian'
765
+ debug("Puppetfile found at #{puppetfile}, loading Librarian-Puppet")
766
+ Puppet::Librarian.load!(logger)
767
+ elsif config[:resolve_with_r10k]
768
+ require 'kitchen/provisioner/puppet/r10k'
769
+ debug("Puppetfile found at #{puppetfile}, loading R10K")
770
+ Puppet::R10K.load!(logger)
771
+ end
764
772
  end
765
773
 
766
774
  def tmpmodules_dir
@@ -900,6 +908,10 @@ module Kitchen
900
908
  config[:librarian_puppet_ssl_file]
901
909
  end
902
910
 
911
+ def r10k_ssl_file
912
+ config[:r10k_puppet_ssl_file] || config[:librarian_puppet_ssl_file]
913
+ end
914
+
903
915
  def puppet_cmd
904
916
  return '& "C:\Program Files\Puppet Labs\Puppet\bin\puppet"' if powershell?
905
917
 
@@ -1259,6 +1271,7 @@ module Kitchen
1259
1271
 
1260
1272
  FileUtils.mkdir_p(tmpmodules_dir)
1261
1273
  resolve_with_librarian if File.exist?(puppetfile) && config[:resolve_with_librarian_puppet]
1274
+ resolve_with_r10k if File.exist?(puppetfile) && config[:resolve_with_r10k] && !config[:resolve_with_librarian_puppet]
1262
1275
  modules_to_copy = {}
1263
1276
 
1264
1277
  # If root dir (.) is a module, add it for copying
@@ -1408,6 +1421,7 @@ module Kitchen
1408
1421
  end
1409
1422
 
1410
1423
  def resolve_with_librarian
1424
+ require 'kitchen/provisioner/puppet/librarian'
1411
1425
  Kitchen.mutex.synchronize do
1412
1426
  ENV['SSL_CERT_FILE'] = librarian_puppet_ssl_file if librarian_puppet_ssl_file
1413
1427
  Puppet::Librarian.new(puppetfile, tmpmodules_dir, logger).resolve
@@ -1415,6 +1429,15 @@ module Kitchen
1415
1429
  end
1416
1430
  end
1417
1431
 
1432
+ def resolve_with_r10k
1433
+ require 'kitchen/provisioner/puppet/r10k'
1434
+ Kitchen.mutex.synchronize do
1435
+ ENV['SSL_CERT_FILE'] = r10k_ssl_file if r10k_ssl_file
1436
+ Puppet::R10K.new(puppetfile, tmpmodules_dir, logger).resolve
1437
+ ENV['SSL_CERT_FILE'] = '' if r10k_ssl_file
1438
+ end
1439
+ end
1440
+
1418
1441
  def cp_command
1419
1442
  return 'cp -force' if powershell?
1420
1443
  'cp'
@@ -59,6 +59,7 @@ ignore_spec_fixtures | false | don't copy spec/fixtures to avoid problems with s
59
59
  install_custom_facts| false | Install custom facts to yaml file at "/tmp/kitchen/facter/kitchen.rb"
60
60
  install_hiera | false | Installs `hiera-puppet` package. Not needed for puppet > 3.x.x
61
61
  librarian_puppet_ssl_file | nil | ssl certificate file for librarian-puppet
62
+ r10k_ssl_file | nil | ssl certificate file for r10k
62
63
  manifest | puppet parses every .pp file in the manifests_path directory and its subdirectories | manifest(s) for puppet apply to run. If set to a file like 'site.pp' it will use the file in the mainfests_path.
63
64
  manifests_path | 'mainfests' | puppet repo manifests directory
64
65
  max_retries| 1 | maximum number of retry attempts of converge command
@@ -110,6 +111,7 @@ require_puppet_collections | true | Set if using puppet collections install (Pup
110
111
  require_puppet_omnibus | false | Set if using omnibus puppet install
111
112
  require_puppet_repo | true | Set if using a puppet install from yum or apt repo
112
113
  resolve_with_librarian_puppet | true | Use librarian_puppet to resolve modules if a Puppetfile is found
114
+ resolve_with_r10k | true | Use r10k to resolve modules if a Puppetfile is found
113
115
  retry_on_exit_code| [] | Array of exit codes to retry converge command against
114
116
  update_package_repos| true| update OS repository metadata
115
117
  wait_for_retry| 30 | number of seconds to wait before retrying converge command
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: 3.3.2
4
+ version: 3.4.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: 2018-05-31 00:00:00.000000000 Z
11
+ date: 2018-08-12 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: net-ssh
@@ -57,6 +57,7 @@ files:
57
57
  - kitchen-puppet.gemspec
58
58
  - lib/kitchen-puppet/version.rb
59
59
  - lib/kitchen/provisioner/puppet/librarian.rb
60
+ - lib/kitchen/provisioner/puppet/r10k.rb
60
61
  - lib/kitchen/provisioner/puppet_agent.rb
61
62
  - lib/kitchen/provisioner/puppet_apply.rb
62
63
  - lib/kitchen/provisioner/puppet_bolt.rb