Я использую простую марионеточную настройку для большого количества серверов. Puppet получает информацию из CMDB с помощью классификаторов внешних узлов. Это прекрасно работает.
После каждого запуска мастер Puppet отправляет статус выполнения в CMDB с помощью настраиваемого модуля отчетов. Это тоже отлично работает.
Я бы хотел, чтобы Puppet публиковал факты для узла после каждого запуска в CMDB. При этом CMDB может автоматически обновлять такие вещи, как память, MAC-адрес и т. Д.
Вопрос в том; Как я могу этого добиться?
Механизм отчетов предоставляет только статус и некоторые показатели.
Не так-то просто написать собственный модуль storeconfig (по крайней мере, я не смог найти никакой информации по этому поводу).
Спасибо за любую помощь.
Я создал модуль отчетов в Puppet, который решил этот конкретный вариант использования. Репортер пытается прочитать последний отчет yaml, а затем добавляет в сообщение дополнительные материалы.
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
Есть ли у вас жесткое требование, чтобы он был в единой CMDB, или ваша цель - сделать его доступным для запросов? PuppetDB уже предоставляет API для поиска фактов:
http://docs.puppetlabs.com/puppetdb/latest/api/query/v2/facts.html
Строго говоря, сама Puppet не знает, какова ценность фактов в конце цикла - только в начало пробега. Я не уверен, каков ваш финал, но поскольку Puppet сам по себе никоим образом не привязан к ценности ваших фактов, лучшим решением, вероятно, будет использование MCollective, а не Puppet для агрегирования сведений о ваших узлах и их сохранения с помощью настраиваемый плагин регистрации, который отправляет обратно в вашу CMDB.