食谱编译错误 - 厨师

Recipe compile error - Chef

我的食谱中有 2 个食谱,即 - Get.rbPost.rb

Get.rb 创建一个文件 app.conf,最终在 Post.rb.

中打开

所以 Post.rb 取决于 Get.rb,因此在我的 运行 列表中,我首先放置了 Get.rb,然后是 Post.rb

当我 运行 chef-client 时,我收到配方编译错误,因为文件 app.conf 不存在。

看起来厨师同时编写了两个食谱。 解决这个问题的方法是什么?

编辑: 我已经走到这一步了:

ruby_block 'run' do 
     action :nothing 
     file = ::File.read('/etc/test.conf') 
     data = JSON.parse(file) unless file.nil? 
     puts data 
     only_if { File.exist?('/etc/test.conf') } 
end

我仍然收到错误。这个区块可能有什么问题?

查看 https://coderanger.net/two-pass/ 以获得完整解释,但基本上您想使用惰性帮助程序重新编写代码或创建自定义资源。

是否经过一些编辑:

ruby_block 'run' do 
   action :run
   block do 
      file = ::File.read('/etc/test.conf') 
      data = JSON.parse(file) unless file.nil? 
      puts data 
   end
   only_if { File.exist?('/etc/test.conf') } 
end