Sha256: cd1f136e98c6dcc9d05ee003d90e15192b9c7f3d235b51828c3fc538373cb575

Contents?: true

Size: 1.71 KB

Versions: 3

Compression:

Stored size: 1.71 KB

Contents

#! /opt/puppetlabs/puppet/bin/ruby
# frozen_string_literal: true

require 'json'
require 'puppet'
require 'puppet/configurer'
require 'tempfile'

args = JSON.parse(STDIN.read)

Puppet.initialize_settings([])
run_mode = Puppet::Util::RunMode[:user]
Puppet.settings.initialize_app_defaults(Puppet::Settings.app_defaults_for_run_mode(run_mode))

Puppet::ApplicationSupport.push_application_context(run_mode, :local)

# Avoid extraneous output
Puppet[:summarize] = false

# Don't interfere with the normal agent
Puppet[:report] = false
Puppet[:graph] = false

# Get a unique temporary path, but ensure the file doesn't exist or Puppet will report 'State got corrupted'
statefile = Tempfile.new('puppet-state')
Puppet[:statefile] = statefile.path
statefile.close!

# Make sure to apply the catalog
Puppet[:use_cached_catalog] = false
Puppet[:noop] = args['_noop'] || false
Puppet[:strict_environment_mode] = false

# The whole catalog
Puppet[:tags] = nil
Puppet[:skip_tags] = nil

# And nothing but the catalog
Puppet[:prerun_command] = nil
Puppet[:postrun_command] = nil

env = Puppet.lookup(:environments).get('production')

report = if Puppet::Util::Package.versioncmp(Puppet.version, '5.0.0') > 0
           Puppet::Transaction::Report.new
         else
           Puppet::Transaction::Report.new('apply')
         end

Puppet.override(current_environment: env, loaders: Puppet::Pops::Loaders.new(env)) do
  catalog = Puppet::Resource::Catalog.from_data_hash(args['catalog']).to_ral
  catalog.environment = env.name.to_s
  catalog.environment_instance = env

  configurer = Puppet::Configurer.new
  configurer.run(catalog: catalog, report: report, pluginsync: false)
end

puts JSON.pretty_generate(report.to_data_hash)

exit report.exit_status != 1

Version data entries

3 entries across 3 versions & 1 rubygems

Version Path
bolt-0.21.4 libexec/apply_catalog.rb
bolt-0.21.3 libexec/apply_catalog.rb
bolt-0.21.2 libexec/apply_catalog.rb