配方编译错误 - 厨师

时间:2017-07-06 05:43:28

标签: chef chef-recipe

我的食谱中有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

我仍然收到错误。这个街区可能出现什么问题?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

是否进行了一些编辑:

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