class Kitchen::Provisioner::Puppet::R10K

Puppet module resolver that uses R10K and a Puppetfile to calculate # dependencies.

Attributes

logger[R]
path[R]
puppetfile[R]

Public Class Methods

load!(logger = Kitchen.logger) click to toggle source
# File lib/kitchen/provisioner/puppet/r10k.rb, line 37
def self.load!(logger = Kitchen.logger)
  load_r10k!(logger)
end
load_r10k!(logger) click to toggle source
# File lib/kitchen/provisioner/puppet/r10k.rb, line 56
def self.load_r10k!(logger)
  require 'r10k/puppetfile'

  version = ::R10K::VERSION
  logger.debug("R10K #{version} library loaded")
rescue LoadError => e
  logger.fatal("The `r10k' gem is missing and must be installed" \
    ' or cannot be properly activated. Run' \
    ' `gem install r10k` or add the following to your' \
    " Gemfile if you are using Bundler: `gem 'r10k'`.")
  raise UserError,
        "Could not load or activate R10K (#{e.message})"
end
new(puppetfile, path, logger = Kitchen.logger) click to toggle source
# File lib/kitchen/provisioner/puppet/r10k.rb, line 31
def initialize(puppetfile, path, logger = Kitchen.logger)
  @puppetfile = puppetfile
  @path = path
  @logger = logger
end

Public Instance Methods

resolve() click to toggle source
# File lib/kitchen/provisioner/puppet/r10k.rb, line 41
def resolve
  version = ::R10K::VERSION
  info("Resolving module dependencies with R10K-Puppet #{version}...")
  debug("Using Puppetfile from #{puppetfile}")

  ::R10K::Git::Cache.settings[:cache_root] = '.r10k/git'
  ::R10K::Forge::ModuleRelease.settings[:cache_root] = '.r10k/cache'

  pf = ::R10K::Puppetfile.new(nil, path, puppetfile)
  pf.load
  pf.modules.map(&:sync)
end