如何在Chef中创建角色和环境替代?

时间:2019-01-31 05:08:55

标签: ruby chef

我的情况如下(请记住,我不是厨师专家,而且我对我们的实施/环境没有完全的控制权):

  • 我创建了一个名为foo的共享食谱/食谱
  • 该配方使用属性node[:foo][:bar]
  • 我们使用特定于项目的 roles 文件来设置特定于项目的非环境特定属性
  • 我们使用特定于环境的文件(例如integration.rbregression.rb等)来覆盖特定于环境的值。

我的问题是我在多个角色中都使用了foo这个食谱。但是我需要覆盖每个项目环境的bar值。 因此,我必须投影ProjectAProjectB。我想要以下内容:

  • ProjectA中担任角色integration时,我希望node[:foo][:bar]成为bob
  • ProjectA中担任角色regression时,我希望node[:foo][:bar]成为jane
  • ProjectB中担任角色integration时,我希望node[:foo][:bar]成为john
  • ProjectB中担任角色regression时,我希望node[:foo][:bar]成为smith

我尝试在ProjectA:bar中定义一个integration值,然后在override_attributes()角色的ProjectA中使用它来设置foo:bar,但出现错误{ {1}}默认'`,请执行以下操作:

undefined local variable or method

如何进行设置,以便可以在多个角色中使用同一配方,但可以基于环境替代该配方的值?

0 个答案:

没有答案