puppet: force o reinício do serviço após a modificação do arquivo de configuração

20

Como posso garantir que, se uma nova versão do arquivo de configuração for baixada via fantoche do repositório principal para um dos servidores gerenciados, o serviço relevante será reiniciado.

cenário típico - digamos que haja nova munin ou configuração do apache. O cliente de marionetes descobre, sobrescreve arquivos locais ... e ... - como garantir que o serviço seja reiniciado / recarregado?

muito obrigado!

    
por pQd 13.07.2009 / 23:23

4 respostas

22

Uma alternativa para notificar é se inscrever:

file { "/etc/sshd_config":
    source => "....",
}

service { sshd:
    ensure => running,
    subscribe => File["/etc/sshd_config"],
}

A diferença é que o relacionamento é descrito do outro lado. Por exemplo, você pode fazer o apache assinar o /etc/apache/httpd.conf, mas você faria um arquivo vhost notificar o apache, já que sua classe apache não saberá sobre cada vhost que você possui.

Uma situação similar com duas extremidades se aplica para exigir e antes. É apenas uma questão que faz mais sentido na situação particular.

Como Chad mencionou, se você encontrar um fantoche tentando iniciar seu serviço constantemente, será necessário adicionar um parâmetro padrão, que é uma regex para ser aplicada à lista de processos. Por padrão, o fantoche fará uma parada e começará a reiniciar um serviço. Se você adicionar "hasrestart = > true", ele usará o comando especificado no parâmetro "restart" para reiniciar o serviço.

    
por 14.07.2009 / 00:58
23

parece que encontrei algo:

file { "/etc/sshd_config":
    source => "....",
    notify => Service[sshd]
}

service { sshd:
    ensure => running
}

veremos como isso funcionará. de qualquer maneira, seus pensamentos sobre o assunto são bem-vindos.

    
por 13.07.2009 / 23:35
2

(Eu sei que essa é uma pergunta muito antiga, mas pensei em colocar meus dois centavos com uma maneira (na minha opinião) muito mais fácil de fazer)

Sinta-se à vontade para usar também a notação de setas:

file { "/etc/sshd_config":
  source => "....",
} ~>
service { sshd:
  ensure => running
}

ou

File['/etc/sshd_config'] ~> Service['sshd']
    
por 18.06.2015 / 23:05
1

Isso funciona para o Solaris 10:)

class sun_cron_root {
    file { "/var/spool/cron/crontabs/root" :
            source => "puppet:///files/cron/sun/sun_cron_root"
            }

    service {
            "cron":
            provider => "smf",
            ensure => running,
            enable => true,
            hasrestart => true,
            subscribe => File["/var/spool/cron/crontabs/root"]
            }

}
    
por 22.06.2011 / 18:23