【问题标题】:Chef cookbook dependency and recipe inclusion厨师食谱依赖性和食谱包含
【发布时间】:2014-11-26 01:31:48
【问题描述】:

我们有一个社区食谱 (A),其中包含在属性 (att = A::inc) 中指定的食谱到默认食谱中,因此食谱的用户可以通过覆盖食谱属性来更改食谱。

我们有一个食谱 (B),它依赖于社区食谱,它覆盖了社区食谱中的属性。如果我们覆盖存储包含在默认食谱 (att = B::inc) 中的食谱名称的属性,该属性将被覆盖,但由于社区食谱 (A) 不依赖于我们的食谱 ( B) 这是预期的,我们不想更改社区食谱 (A) 的元数据。

为了克服这个问题,我们有第三本食谱 (C),它依赖于社区食谱 (A) 和我们的浣熊书 (B),它对属性值 att = B::inc 进行了重写它的默认配方。这允许配方 B::inc 包含在社区食谱 A 中。如果这种方法有任何问题,请告诉我。

【问题讨论】:

  • 您使用的是哪个社区食谱?
  • Dave,请参考kafka-cookbook,您可以在我的enhancement 中阅读有关该方法的详细信息。

标签: chef-infra chef-recipe


【解决方案1】:

这可以正常工作,但您不需要第三本食谱。您可以在食谱 B 中创建一个无操作的食谱。然后将该配方添加到节点的运行列表中。这将导致说明书 B 加载到节点上。您也可以在该配方中设置节点属性,而不是直接在节点的属性中。然后,通过将所述食谱放入您的运行列表中,您就可以完成两者。所以,要么:

# recipe B::dummy.rb
# do nothing

# recipe B::useme.rb
node['some']['attribute'] = 'B::dothis.rb'

【讨论】:

  • 谢谢 Tejay。这是否意味着通过在运行列表中包含食谱 B 中的任何食谱,该食谱在食谱 A 中的任何食谱之前设置属性,该方法就可以正常工作?
  • 应该,而且顺序实际上并不重要。所有食谱中的属性文件在任何食谱中的食谱之前执行。
猜你喜欢
  • 1970-01-01
  • 2019-01-29
  • 2021-11-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多