是否可以配置跨配方访问的属性?如果是,如何?我为每个配方配置了属性,但是我想消除重复的重复。跨配方访问属性
Q
跨配方访问属性
3
A
回答
4
Chef工作的方式是,在融合开始时,Chef迭代所有具有将在节点上运行的食谱的食谱(直接在运行列表上或通过include_recipe
引用)。对于每一本食谱,厨师然后将在中读取存储在attributes
文件夹中的属性文件的所有,并将该属性添加到node
散列。
这里要注意的重要一点是,这些属性与您正在执行的食谱无关,所有食谱都会看到加载属性的相同视图。
您的描述有些含糊,但从我可以收集的信息中可以看出,您有一本食谱和几个食谱,并且您正在创建相应的属性文件。在每个属性文件中,您将重新定义相同的属性(例如default['myapp']['foo'] = "blah"
)。
由于我在开始时描述的过程,这不是必需的。在收敛时间,Chef将读取所有属性文件,而不管您正在运行的是什么配方。这意味着要加载的第二个(或第三个或第四个等)属性文件将简单地覆盖由先前加载的属性文件设置的node['myapp']['foo']
属性。
在这种情况下,通用模式是有一个default.rb
属性文件,它定义了所有配方将使用的所有常用属性。如果需要,您可以将配方/组件特定的属性移动到它们自己的属性文件中。
在这种情况下要注意的一件事是厨师按字母顺序加载属性文件。如果您的食谱特定属性文件(例如client.rb
)引用default.rb
中定义的属性之一,那么您将需要使用include_attribute
指令以便让厨师在您的client.rb
之前加载default.rb
,否则default.rb
的所有属性仍然会无。
相关问题
- 1. 跨视图访问属性
- 2. 访问属性:方法
- 3. 跨线程分配属性
- 4. 访问属性
- 5. 访问属性
- 6. 访问属性
- 7. 访问属性
- 8. 访问属性
- 9. 访问属性
- 10. 访问属性
- 11. 访问属性
- 12. 访问属性
- 13. 访问属性
- 14. 访问属性
- 15. 访问属性
- 16. 访问属性
- 17. 访问属性
- 18. 属性访问
- 19. 访问属性
- 20. 访问属性
- 21. 访问属性
- 22. 访问属性
- 23. C++跨类访问方法
- 24. 访问哈希属性相同的方式,访问对象属性
- 25. 如何访问ruby_block中的节点属性和配方变量
- 26. 访问Groovy属性或方法
- 27. Flex ArrayCollection - 访问对象方法/属性?
- 28. 使用nghandsontable访问handsontable方法/属性
- 29. NSObject无法访问属性和方法
- 30. 访问包裹方法属性
烹饪书之间共享属性如何? – sixty4bit