Chef:如何仅存储明确包含的食谱的属性

时间:2014-04-18 22:05:09

标签: ruby chef chef-recipe

我正在为redis修复一本食谱,有两种不同的食谱+一种默认食谱。 在默认配方中,我添加了一个PPA存储库并执行apt-get更新。 我想要做的是能够在节点上持久化,只有相应的启用配方的属性:

如果节点包含“server”配方,则存储attributes / server.rb中的默认值 如果节点包含“client”配方,则存储attributes / client.rb

中的默认值

尽管包含了食谱,但文档还不够清楚上述内容是否会发生或存储两者。

我看到人们建议的是移动仅限于配方的node.default [...]定义,并且不适合配方本身的“默认”配方。我认为这是不合逻辑的。

实现这种分离的“最佳实践”是什么?

2 个答案:

答案 0 :(得分:0)

关键引用from Chef's documentation是:"当针对某个节点运行食谱时, 所有 属性文件中包含的属性将在节点对象的上下文。" (强调我的)。您只能通过在配方中使用节点(范围)来实现您所谈论的内容。

答案 1 :(得分:0)

对于您在客户食谱中需要的东西

node[:redis][:client][:foo] = "bar"

对于服务器配方中需要的东西

node[:redis][:server][:foo] = "bar"

出于好奇,您使用哪种redis食谱?