Повар: как получить временную метку при * конвергенции *, а не * времени компиляции
Пожалуйста, рассмотрите этот код в конце моего deploy_to_tomcat
рецепт:
unless Chef::Config[:solo]
chat_message "Deployed #{artifact_name} `#{Time.new.strftime("%Y-%m-%d %H:%M")}`"
end
Он отправляет сообщение в чат: Развернуто my-web-app 2016-11-03 12:31
Тем не менее, я заметил метку времени от Time.new
Это немного не так - похоже, это временная метка, когда рецепт был скомпилирован, а не когда ресурсы покрывались и запускались пару минут спустя.
Так что я попробовал это, но это не сработало undefined
когда сообщение было опубликовано в чате)
timeNow = "undefined"
ruby_block "set-time-now" do
block do
timeNow = Time.new.strftime("%Y-%m-%d %H:%M:%S")
end
end
unless Chef::Config[:solo]
chat_message "Deployed #{artifact_name} `#{timeNow}`"
end
Есть ли более простой способ, чтобы моя метка времени отражала фактическое время (а не когда рецепт начался)?
2 ответа
Не уверен, что вы пытаетесь решить, но вы можете использовать узел для хранения метки времени.
node.normal[:cookbook_name][:deployment_time] = "undefined"
ruby_block "set-time-now" do
block do
node.normal[:cookbook_name][:deployment_time] = Time.new.strftime("%Y-%m-%d %H:%M:%S")
end
end
unless Chef::Config[:solo]
chat_message "Deployed #{artifact_name} #{node[:cookbook_name][:deployment_time]}"
end
То, что вы хотите, это ленивый оценщик, как это (дать или взять, что я не знаю, как ваш chat_message
ресурс написан):
unless Chef::Config[:solo]
chat_message "deployed" do
message lazy { "Deployed #{artifact_name} `#{Time.new.strftime("%Y-%m-%d %H:%M")}`" }
end
end
Это задержит оценку строки сообщения до времени конвергенции.