请在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
的时间戳有点过了 - 这似乎是配方编译时的时间戳,而不是资源覆盖的时间戳几分钟后,他们跑了。
所以我试过这个,但它没有用(当消息发布到聊天时,timeNow仍然是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
是否有更简单的方法让我的时间戳反映实际时间(而非配方开始时)?
答案 0 :(得分:2)
你想要的是这样一个懒惰的评估者(给予或接受我不知道你的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
这将延迟评估消息字符串,直到收敛时间。
答案 1 :(得分:1)
不确定您尝试解决的问题,但您可以使用节点存储时间戳。
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