como posso garantir que, se uma nova versão do arquivo de configuração for baixada via fantoche do repositório mestre para um dos servidores gerenciados, o serviço relevante será reiniciado.
cenário típico - digamos que haja uma nova configuração do munin ou do apache. o cliente fantoche descobre, sobrescreve os arquivos locais... e... - como garantir que o serviço seja reiniciado/recarregado?
muito obrigado!
Responder1
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 /etc/apache/httpd.conf, mas faria um arquivo vhost notificar o apache, já que sua classe apache não saberá sobre todos os vhost que você possui.
Uma situação dual semelhante se aplica a require e before. É apenas uma questão de saber o que faz mais sentido na situação específica.
Como Chad mencionou, se você encontrar o Puppet constantemente tentando iniciar seu serviço, será necessário adicionar um parâmetro padrão, que é um regex a ser aplicado à lista de processos. Por padrão, o fantoche irá parar 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.
Responder2
parece que encontrei algo:
file { "/etc/sshd_config":
source => "....",
notify => Service[sshd]
}
service { sshd:
ensure => running
}
veremos como isso funcionará. de qualquer forma, seus pensamentos sobre o assunto são bem-vindos.
Responder3
(Eu sei que esta é uma pergunta muito antiga, mas pensei em investir meus dois centavos em uma maneira (na minha opinião) muito mais fácil de fazer isso)
Sinta-se à vontade para usar a notação de seta também:
file { "/etc/sshd_config":
source => "....",
} ~>
service { sshd:
ensure => running
}
ou
File['/etc/sshd_config'] ~> Service['sshd']
Responder4
Existem várias notações equivalentes:
Notificar:
file { '/etc/sshd_config':
notify => Service[sshd],
}
service { sshd:
ensure => running
}
Se inscrever:
file { '/etc/sshd_config':
...
}
service { sshd:
ensure => running,
subscribe => File['/etc/sshd_config'],
}
Notação de seta:
File['/etc/sshd_config'] ~> Service['sshd']
Declarações de encadeamento
file { '/etc/sshd_config':
...
}
~> service { sshd:
ensure => running,
}
Se você quiser acionar reload
em vez de restart
, ajuste a declaração de serviço:
service { sshd:
ensure => running,
restart => 'pkill -HUP sshd', # if service support such reload
}