如何在循环中停止资源克隆以获取厨师食谱?

时间:2014-05-22 12:39:22

标签: ruby chef chef-recipe

我有一个厨师食谱,可以循环安装包:

pkgs.each do |pkg|
  yum_package "tools" do
    package_name pkg
    action :install
  end
end

然而,这个食谱会引发以下错误:

[2014-05-22T08:26:13-04:00] WARN: Cloning resource attributes for yum_package[tools] from prior resource (CHEF-3694)
[2014-05-22T08:26:13-04:00] WARN: Previous yum_package[tools]: /var/chef/cache/cookbooks/tools/recipes/default.rb:9:in `block in from_file'

最终,this feature is going to be removed。所以,我需要找到一种方法来正确地循环一个厨师食谱而不抛出这个警告;到目前为止,我没有运气试图解决这个问题;我想知道是否有其他人有解决方案?

3 个答案:

答案 0 :(得分:9)

package_name 名称属性。就这样做:

ops_pkgs.each do |pkg|
  yum_package pkg
end

您甚至不需要阻止,因为action :install是默认操作。

答案 1 :(得分:4)

我使循环中的资源独一无二,以解决问题:

ops_pkgs.each do |pkg|
  yum_package "tools #{pkg}" do
    package_name pkg
    action :install
  end
end

答案 2 :(得分:0)

老问题我知道,但我想至少得到一些专家的意见。也许这是一个更好的解决方案,使用食谱,承认你可能希望它克隆和合并,而不是发出警告:

http://scottwb.com/blog/2014/01/24/defeating-the-infamous-chef-3694-warning/

这仅适用于该操作,但可以扩展到其他操作。