是否可以配置跨配方訪問的屬性?如果是,如何?我爲每個配方配置了屬性,但是我想消除重複的重複。跨配方訪問屬性
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