我有一个厨师食谱,使用模板生成和xml文档。该文档在文件系统上的位置并不重要;只需要将位置传递给命令行工具,该工具将读取文件并使用它来配置应用程序。除了执行命令之外,xml文件不需要持久化。因此,在我看来,该文件应该在平台中立的临时文件目录中创建。 Windows上的C:\ Temp或大多数nix机器上的/ TMP。 Chef是否提供了创建临时文件,检测临时文件位置或以其他方式实现目标的方法?
答案 0 :(得分:12)
最好的选择:使用厨师用来存储瞬态数据的Chef::Config['file_cache_path']
。我:template "#{Chef::Config['file_cache_path']}/myfile.xml" do
评论后留下(改写),因为它仍然值得一般用于那里:
根据评论,执行资源无论如何都将使用此输入运行以确保相应地配置应用程序,文件必须仅在执行资源运行时存在,对于其他情况,请记住以下内容
厨师背后的一个关键理念是幂等,厨师可以跑100次,只在需要完成时做事。
在这种情况下,模板将生成一次,除非属性中的参数发生更改,否则永远不会更改。
在这种情况下(应该更新生成的文件),厨师会注意到它,替换它并根据其上定义的任何通知采取相应行动。