class Kafo::ExecutionEnvironment

Public Class Methods

new(config, logger = KafoConfigure.logger) click to toggle source
# File lib/kafo/execution_environment.rb, line 9
def initialize(config, logger = KafoConfigure.logger)
  @config = config
  @logger = logger
end

Public Instance Methods

configure_puppet(settings = {}) click to toggle source
# File lib/kafo/execution_environment.rb, line 37
def configure_puppet(settings = {})
  @logger.debug("Configuring Puppet in #{directory}")

  @logger.debug("Writing facts to #{factpath}")
  FactWriter.write_facts(facts, factpath)

  hiera_config = configure_hiera

  settings = {
    'environmentpath' => environmentpath,
    'factpath'        => factpath,
    'hiera_config'    => hiera_config,
    'reports'         => 'store',
    'reportdir'       => reportdir,
  }.merge(settings)

  PuppetConfigurer.new(puppet_conf, settings)
end
directory() click to toggle source
# File lib/kafo/execution_environment.rb, line 14
def directory
  @directory ||= begin
    directory = Dir.mktmpdir('kafo_installation')
    @logger.debug("Creating execution environment in #{directory}")
    directory
  end
end
reportdir() click to toggle source
# File lib/kafo/execution_environment.rb, line 22
def reportdir
  @reportdir ||= File.join(directory, 'reports')
end
reports() click to toggle source
# File lib/kafo/execution_environment.rb, line 26
def reports
  # Reports are stored in $reportdir/$certname/$report
  Dir.glob(File.join(reportdir, '*', '*.*')).sort_by { |path| File.mtime(path) }
end
store_answers() click to toggle source
# File lib/kafo/execution_environment.rb, line 31
def store_answers
  answer_data = HieraConfigurer.generate_data(@config.modules, @config.app[:order])
  @logger.debug("Writing temporary answers to #{answer_file}")
  File.open(answer_file, 'w') { |f| f.write(YAML.dump(answer_data)) }
end

Private Instance Methods

answer_file() click to toggle source
# File lib/kafo/execution_environment.rb, line 66
def answer_file
  File.join(directory, 'answers.yaml')
end
configure_hiera() click to toggle source
# File lib/kafo/execution_environment.rb, line 74
def configure_hiera
  if @config.app[:hiera_config]
    File.realpath(@config.app[:hiera_config])
  else
    config_path = File.join(directory, 'hiera.yaml')
    @logger.debug("Writing default hiera config to #{config_path}")
    HieraConfigurer.write_default_config(config_path)
  end
end
environmentpath() click to toggle source
# File lib/kafo/execution_environment.rb, line 58
def environmentpath
  File.join(directory, 'environments')
end
factpath() click to toggle source
# File lib/kafo/execution_environment.rb, line 62
def factpath
  File.join(directory, 'facts')
end
facts() click to toggle source
# File lib/kafo/execution_environment.rb, line 84
def facts
  {
    'scenario' => {
      'id' => @config.scenario_id,
      'name' => @config.app[:name],
      'answer_file' => answer_file,
      'custom' => @config.app[:facts],
    },
  }
end
puppet_conf() click to toggle source
# File lib/kafo/execution_environment.rb, line 70
def puppet_conf
  File.join(directory, 'puppet.conf')
end