Facto personalizado para copiar o arquivo da barra de todos os clientes Puppet para o servidor Puppet principal

1

Eu sei que o Facter não tem a intenção de fazer isso, mas ficaria feliz em saber como escrever um fato personalizado para copiar arquivos de clientes Puppet para o servidor Puppet principal. Obrigado.

    
por 72616b657368 28.04.2011 / 01:46

2 respostas

1

Copiando arquivos como um fato ? Por que você gostaria de fazer isso? Você pode simplesmente ter um Exec to scp ou ftp o arquivo em outro lugar.

Se você precisar verificar o conteúdo de um arquivo, leve isso como exemplo:

# etcgroup.rb

Facter.add("etcgroup") do
        setcode do
                File.read('/etc/group')
        end
end

Você pode então usar funções regex para extrair informações de dentro dele. Observe que isso é enviado como parte da URL de uma solicitação GET, que geralmente é limitada em número de caracteres. Eu tenho LimitRequestLine 30000 no meu apache2.conf por apenas uma razão.

Se você realmente precisa realmente copiar o arquivo, pode fazer algo assim:

# etcgroup.rb

Facter.add("etcgroup") do
        setcode do
                %{ scp -i /path/to/identity /etc/group user@puppet:/path && echo ok || echo not ok}.chomp
        end
end

Ele enviará o arquivo por scp , usando uma identidade para evitar passar senhas e, em seguida, retornará ok ou not ok como fato.

    
por 03.05.2011 / 19:42
0

Acho que uma maneira melhor seria usar a auditoria com um filebucket remoto (acredito que você precise 2.6.5+ para isso).

Algo como:

filebucket { "server":
  server => "your.puppet.server";
}

file { "/etc/group":
  audit  => content;
  backup => server;
}

Isto faz com que / etc / group seja carregado para o servidor quando (a) muda ou (b) não foi visto antes. Então, no servidor, você pode usar o utilitário 'puppet filebucket' para verificar os dados que os clientes enviaram. Isso é muito melhor do que colocar isso em prática.

    
por 15.05.2011 / 06:50

Tags