环境非常适合覆盖默认行为,数据标记非常适合从cookbook中抽取数据并使其尽可能通用。
我在每个开发阶段都有一个环境json文件:dev
,qa
,staging
,我有数据包,我可能会根据环境进行更改。在多个目录中定义这些内容对我来说似乎是多余的,特别是因为我在local mode
中使用了厨师。
有没有办法在chef环境json文件中定义自定义属性?如果是这样:我如何在食谱中访问它们?
note :我已经熟悉环境json的override_attributes
属性。我想知道自定义json,如何访问它,或者可能是更好的解决方案?
例如
{
"name": "dev",
"default_attributes": {},
"json_class": "Chef::Environment",
"my_custom_object" : {"key1":"value1", ...}
"chef_type": "environment"
}
答案 0 :(得分:1)
不,你不能这样做。 Chef对象上的模式很小(即只允许哪些顶级键)但是已修复。您将任意数据附加到环境的唯一位置是节点属性或(在技术上但可能不这样做)作为描述字符串中的编码数据。也就是说,节点属性就是你所描述的,所以我不完全确定为什么你认为那些不是解决方案(正如我提到的其他删除的答案)。我已经对如何使用节点属性有疑问我会问这个问题或者问Slack:)