平台中立的方式在Chef Recipe中创建临时文件

Ken*_*nic 11 chef-infra chef-recipe

我有一个厨师食谱,使用模板生成和xml文档.该文档在文件系统上的位置并不重要; 只需要将位置传递给命令行工具,该工具将读取文件并使用它来配置应用程序.除了执行命令之外,xml文件不需要持久化.因此,在我看来,该文件应该在平台中立的临时文件目录中创建.Windows上的C:\ Temp或大多数nix机器上的/ TMP.Chef是否提供了创建临时文件,检测临时文件位置或以其他方式实现目标的方法?

Ten*_*bai 13

最好的选择:使用Chef::Config['file_cache_path']厨师用来存储瞬态数据的东西.即:template "#{Chef::Config['file_cache_path']}/myfile.xml" do

评论后留下(改写),因为它仍然值得在一般用途:

根据评论,执行资源无论如何都将使用此输入运行以确保相应地配置应用程序,该文件必须仅在执行资源运行时存在,对于其他情况,请记住以下内容.

厨师背后的一个关键理念是幂等,厨师可以跑100次,只在需要完成时才做.

在这种情况下,模板将生成一次,并且除非属性中的参数更改,否则永远不会更改.

在这种情况下(生成的文件应该更新),厨师会注意到它,替换它并相应地采取任何通知.