Назад | Перейти на главную страницу

Как мне сделать факты о марионеточных публикациях после запуска?

Я использую простую марионеточную настройку для большого количества серверов. 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.