Como faço um fantoche postar fatos depois de correr?

4

Estou usando uma configuração simples de fantoches para um grande número de servidores. O Puppet obtém informações de um CMDB usando classificadores de nós externos. Isso funciona perfeitamente.

Após cada execução, o mestre de marionetes publica o status da execução no CMDB usando um módulo de relatório personalizado. Isso também funciona muito bem.

O que eu gostaria é que o Puppet publique os fatos de um nó após cada execução no CMDB.  Fazendo isso, o CMDB pode atualizar automaticamente coisas como memória, endereço MAC, etc.

A questão é; Como posso conseguir isso?

O mecanismo de relatório fornece apenas status e algumas métricas.

Não é tão fácil escrever um módulo storeconfig personalizado (ou pelo menos não consegui encontrar nenhuma informação sobre isso).

Obrigado por qualquer ajuda.

    
por magnusa 13.06.2013 / 08:37

2 respostas

3

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

    
por 17.06.2013 / 14:07
2

Você tem um requisito difícil de tê-lo no único CMDB ou o objetivo é apenas consultá-lo? O PuppetDB já fornece uma API para pesquisa de fatos:

link

Estritamente falando, o próprio Puppet não sabe qual é o valor dos fatos no final da corrida - apenas no início da corrida. Não sei qual é o seu final de jogo, mas como o Puppet não está vinculado ao valor de seus fatos de alguma forma, uma solução melhor é provavelmente usar o MCollective em vez do Puppet para agregar detalhes sobre seus nós e armazená-los usando um plug-in de registro personalizado que é enviado de volta ao seu CMDB.

    
por 13.06.2013 / 15:06

Tags