厨师:如何在*收敛*而不是*编译*时间获得时间戳
chef: how to get a timestamp at *convergence* rather than *compile* time
请考虑我的 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
的时间戳有点过时 - 它似乎是食谱 编译 时的时间戳,而不是资源 时的时间戳=25=]覆盖和运行,几分钟后。
所以我尝试了这个,但它没有用(消息发布到聊天时 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
有没有更简单的方法让我的时间戳反映实际时间(而不是食谱开始的时间)?
不确定你试图解决什么问题,但你可以使用节点来存储时间戳。
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
这将延迟对消息字符串的评估,直到收敛时间。
请考虑我的 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
的时间戳有点过时 - 它似乎是食谱 编译 时的时间戳,而不是资源 时的时间戳=25=]覆盖和运行,几分钟后。
所以我尝试了这个,但它没有用(消息发布到聊天时 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
有没有更简单的方法让我的时间戳反映实际时间(而不是食谱开始的时间)?
不确定你试图解决什么问题,但你可以使用节点来存储时间戳。
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
这将延迟对消息字符串的评估,直到收敛时间。