Eu criei um módulo de relatório no Puppet que resolveu esse caso de uso específico. O repórter tenta ler o último relatório yaml e depois adiciona coisas extras ao post.
def process
payload = { :host => self.host, :status => self.status, :kind => self.kind }
# if facts file found, read it and add facts to payload:
if File.exists?("#{Puppet[:vardir]}/yaml/facts/#{self.host}.yaml")
new_facts = {}
node_facts = YAML.load_file("#{Puppet[:vardir]}/yaml/facts/#{self.host}.yaml")
node_facts.values.each do |key, value|
new_facts = new_facts.merge({key => value})
end
payload = payload.merge(new_facts)
end
response = HTTParty.post(URL, :body => payload )
Puppet.err "Response code: #{response.code} - #{response.body}" unless response.code == 200
end
Se você quiser saber mais sobre como escrever relatórios de marionetes personalizados, verifique Quando o Puppet relata a parte 2