运行后如何制作傀儡邮政事实?

我正在使用一个简单的木偶安装大量的服务器。 Puppet使用外部节点分类器从CMDB获取信息。 这完美的作品。

每次运行后,Puppet主机都会使用自定义报告模块将运行状态发布到CMDB。 这也很好。

我想让Puppet在每次运行CMDB之后发布一个节点的事实。 这样做,CMDB可以自动更新内存,MAC地址等内容

问题是; 我怎样才能做到这一点?

报告机制仅提供状态和一些指标。

编写一个自定义的storeconfig模块并不是那么容易(或者至less我找不到任何关于这个的信息)。

谢谢你的帮助。

你有一个硬要求在单一的CMDB,或者只是为了让它可查询的目标吗? PuppetDB已经为事实查询提供了一个API:

http://docs.puppetlabs.com/puppetdb/latest/api/query/v2/facts.html

严格来说,木偶本身并不知道事实的价值在运行结束时是什么 – 只是在运行开始时。 我不确定你的结局是什么,但是由于Puppet本身并不以任何方式与你的事实的价值联系在一起,所以更好的解决scheme可能是使用MCollective而不是Puppet来聚合节点的细节,并使用自定义注册插件发回您的CMDB。

我在Puppet中创build了一个解决这个特殊用例的报告模块。 记者试图阅读最新的yaml报告,然后添加额外的东西的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 

如果您想了解更多关于编写自定义Puppet报告的信息,请查看Puppet何时报告第2部分