Puppet 2.7 Garanta o arquivo em atualizações do cliente quando o arquivo puppet: /// for atualizado no Master

1

Eu tenho um script em Perl que abandonei todos os meus clientes Puppet Linux. Desde então, editei meu script, módulo / modulename / files / scripts / script a_script no mestre Puppet, mas os clientes não obtiveram a alteração porque têm o arquivo. Aparentemente, ele não faz checksum ou usa modtime. Qual é a melhor prática para garantir que os arquivos estejam atualizados com a versão master? Preciso escrever lógica de soma de verificação ou já existe uma funcionalidade incorporada?

O código que usei para empurrar inicialmente era:

file { '/sbin/a_script':
    ensure => present,
    mode => 744,
    owner => root,
    source => "puppet:///modulename/scripts/a_script"
}

Obviamente, excluir o arquivo e fazer com que ele seja removido é uma solução hacky, estou esperando por algo mais eloqüente.

UPDATE Puppet faz checksum e sincroniza arquivos no fantoche: /// filebucket na próxima execução, devo ter tido um erro que fez com que a declaração de arquivo não fosse executada. Quando movi a declaração para site.pp, sincronizei as alterações com os arquivos já existentes nos clientes.

    
por usedTobeaMember 11.04.2014 / 17:06

1 resposta

0

Eu sugiro que você exiba seus scripts em uma estrutura de diretórios simples, por exemplo puppet:///modulename/a_script em vez de puppet:///modulename/scripts/a_script

Mas se isso não for uma opção, isso parece um caso de uso para o recurse diretiva . Sem ela, a ação padrão parece garantir apenas que seu arquivo esteja presente, sem considerar o conteúdo.

Verifique também a Referência do tipo de arquivo de fantoches .

- Editar -

Eu pensei que você estava tentando sincronizar um diretório de scripts.

Para o seu caso, o Puppet usa como padrão replace => true em um tipo de arquivo se a soma de verificação da fonte for alterada.

Qual é a sua saída de puppet agent -t (ou puppet agent --debug -t ) nos sistemas clientes?

    
por 11.04.2014 / 17:36