厨师 - 从ruby_block调用提供程序

时间:2015-02-17 23:18:33

标签: chef

我知道厨师的编译时间和运行时行为之间的区别,但仍然无法解决一般问题。 这就是我想要做的事情:

  • 使用git提供程序克隆某些内容(在运行时提供运行)
  • 从克隆目录中查看一些文件并生成一些json文件(编译时)
  • 对于文件夹中的每个json文件:(编译时)
    • 使用json文件中的参数运行提供程序x(运行时)

理想情况下,为了解决这个问题,如果我可以将其设为100%运行时代码会更好。 我可以将编译时代码放在 ruby​​_block 中以使其成为run_time 但是我不能在我的红宝石块中调用任何提供者。

我该如何处理这个问题?


更新

我尝试过一个简单的代码,证明Tensibai的建议有效:

我的食谱:

batch 'git_emulation' do
  code "echo hi>C:\\temp\\x.txt"
  action :nothing
end.run_action(:run)

::Dir["C:/temp/*"].each do |path|
  app_go "test" do
    path path
    action :test
  end
end

我的app_go提供商:

action :test do
  Chef::Log.info("path = #{@new_resource.path}")
end

打印

  
    

path = C:\ temp \ x.txt

  

表示批处理提供程序在编译时运行。 但是,当使用git时,我收到一个错误:

  STDERR:' git'不被视为内部或外部命令,

因为" include_recipe"不是在运行时运行。 有什么想法吗?

0 个答案:

没有答案