0

我知道我们可以在哪里定义厨师属性、属性类型以及它们的优先级。我只想了解它们是如何在内部存储的。

假设我声明了一个属性

default[:app][:install] = "/etc/app"

1)它是如何在内部存储的?它是在节点对象中的树结构(heirarchy)中使用,还是作为哈希图或节点对象中的变量列表?

2)另外,在大多数食谱中,我看到属性是在 2 或 3 级中声明的,我不明白这是标准还是最佳实践?对于必须声明属性的方式是否有任何指导方针?是否与它的内部存储有关。我不能将属性声明为

 default[:appinstall]= "/etc/app"

并在我的食谱中按以下方式访问它?

  node[:appinstall]
4

1 回答 1

2

只有四个混搭(Hash 的子类,它执行字符串与符号键修复)。当您通过它访问合并视图时,node['foo']它使用一个Chef::Node::Attribute对象并行遍历所有四个,直到找到一个叶值。

您所展示的内容对于设置和使用属性是正确的,尽管字符串键优于符号。通常,您还应该使用食谱名称来限定您的属性,例如:

default['mycookbook']['appinstall'] = '/etc/app'

这将减少与其他食谱发生冲突的机会。

于 2014-09-12T22:06:32.193 回答