diff --git a/agentless-catalog-executor.gemspec b/agentless-catalog-executor.gemspec index e564e2c..186f40f 100644 --- a/agentless-catalog-executor.gemspec +++ b/agentless-catalog-executor.gemspec @@ -28,7 +28,7 @@ Gem::Specification.new do |spec| spec.add_dependency "hocon", ">= 1.2.5" spec.add_dependency "json-schema", ">= 2.8.0" spec.add_dependency "puma", ">= 3.12.0" - spec.add_dependency "puppet", ">= 6.23", "< 8.0.0" + spec.add_dependency "puppet", ">= 6.23.0", "< 8.0.0" spec.add_dependency "rack", ">= 2.0.5" spec.add_dependency "rails-auth", ">= 2.1.4" spec.add_dependency "sinatra", ">= 2.0.4" diff --git a/lib/ace/transport_app.rb b/lib/ace/transport_app.rb index 814f724..c301791 100644 --- a/lib/ace/transport_app.rb +++ b/lib/ace/transport_app.rb @@ -221,6 +221,12 @@ def self.trusted_facts(certname) validate_schema(@schemas["run_task"], body) inventory = Bolt::Inventory.empty + local_data = { 'name' => 'localhost', + 'config' => { 'transport' => 'local', + 'local' => { 'interpreters' => { + 'rb' => ['/opt/puppetlabs/puppet/bin/ruby', '-r', 'bolt'] + } } } } + local_target = Bolt::Target.from_hash(local_data, inventory) target_data = { 'name' => body['target']['host'] || body['target']['name'] || 'remote', 'config' => { @@ -228,7 +234,7 @@ def self.trusted_facts(certname) 'remote' => body['target'] } } - target = [Bolt::Target.from_hash(target_data, inventory)] + target = [Bolt::Target.from_hash(target_data, local_target.inventory)] rescue ACE::Error => e return [400, error_result(e).to_json] rescue JSON::ParserError => e @@ -250,9 +256,8 @@ def self.trusted_facts(certname) task = Bolt::Task::PuppetServer.new(task_data['name'], task_data['metadata'], task_data['files'], @file_cache) parameters = body['parameters'] || {} - - # Since this will only be on one node we can just return the first result results = @executor.run_task(target, task, parameters) + # Since this will only be on one node we can just return the first result result = results.first # Unwrap _sensitive output (orchestrator will handle obfuscating it from the result) if result.value.is_a?(Hash) && result.value.key?('_sensitive')