chefe-cliente atrasado até o final da receita

1

Eu tenho uma receita parecida com a seguinte:

service "xyz" do
  :action nothing
end

file "xyz.conf" do
   ...
   notfies :restart, "service[xyz]", delayed
end

file "xyz.props" do
   ...
   notfies :restart, "service[xyz]", delayed
end

Como você pode ver, a notificação atrasada é uma boa maneira de garantir que a reinicialização só seja acionada uma vez e somente quando houver alterações, mas meu problema é que as notificações atrasadas são acionadas no final da execução chef-client. que precisam que o serviço seja reiniciado, existe uma maneira de fazer uma reinicialização no final da receita?

Atualmente, estou analisando a possibilidade de examinar run_context.delayed_notification_collection para ver se um serviço está sendo notificado e usá-lo em um guarda.

então no final da receita eu posso fazer:

service "xyz" do
  action :restart
  only_if notification_for("service_restart")
end

Alguém tem ideias melhores?

    
por pu239ppy 26.02.2016 / 03:30

1 resposta

0

Eu acabei usando o node.run_state para definir um sinalizador para reiniciar. Meus recursos que modificaram a configuração notificariam um bloco ruby que basicamente configurava um sinalizador como node.run_state [: SVC_restart] = true. E, no final, o serviço seria criado com: ação restart e um guarda para verificar se esse sinalizador existe e está definido.

    
por 08.03.2016 / 04:55

Tags