Puppet: Como pular a reinicialização durante a atualização do pacote até a configuração ser substituída?

5

Estou tentando fazer com que o Puppet atualize nossos servidores Varnish 3 para o Varnish 4, uma atualização importante que requer um arquivo de configuração atualizado ou não será iniciado. Isso está no Ubuntu 12.04.

O módulo Varnish é essencialmente construído com estas classes e dependências:

Class['varnish::repo']
-> Class['varnish::install']
-> Class['varnish::tools']
-> Class['varnish::config']
~> Class['varnish::service']

Atualizei o URL do Apt-repo em varnish::repo , defini ensure=>latest em varnish::install e forneci um arquivo de configuração atualizado para varnish::config . Até aí tudo bem.

Quando o Puppet executa essas dependências, a execução falha no estágio varnish::install porque o Apt tenta reiniciar o daemon do Varnish imediatamente após atualizá-lo, não dando ao Puppet a chance de substituir o arquivo de configuração. A falha na classe varnish::install leva a uma cadeia de dependência quebrada e faz com que as classes restantes também falhem. O resultado é uma instalação quebrada do Varnish que precisa de recuperação manual.

Como você lida com isso?

Eu pensei em usar policy-rc.d , que essencialmente diz ao Apt para não executar paradas automáticas e inícios de serviços. Eu tentei criar o arquivo antes da atualização e removê-lo depois.

file {'/usr/sbin/policy-rc.d':
    ensure  => $ensure,
    content => "#!/bin/sh\nexit 101",
    owner   => 'root',
    group   => 'root',
    mode    => '0755',
}

É claro que criar e remoção é um problema porque o Puppet vê isso como um recurso duplicado.

Por que eu quero remover a política novamente, depois de instalá-la, você pergunta? Porque usamos unattended-upgrades para realizar pequenas atualizações de segurança e eu quero permitir reinicializações automáticas de serviço nesses casos, mas não neste caso. Além disso, o policy-rc.d afeta os serviços all , não apenas o Varnish.

Talvez eu esteja pensando errado, mas posso de alguma forma dizer ao Puppet ou ao Apt para esperar com a reinicialização até que o arquivo de configuração também seja substituído?

    
por Martijn Heemels 11.12.2014 / 15:43

1 resposta

2

Por que não substituir o arquivo de configuração antes de instalar a atualização? Se carregar na reinicialização, não usará o arquivo de configuração "errado" até que a atualização seja reiniciada. . .

    
por 11.12.2014 / 18:28