本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
屬性優先順序
重要
所以此 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請聯絡 AWS Support 團隊上 AWS Re: 郵寄
若屬性的定義是唯一的,Chef 會直接將其併入節點物件。但是,任何屬性來源都可以定義任何屬性,因此相同的屬性可能會有值不同的多個定義。例如,內置apache2
食譜定義node[:apache][:keepalive]
,但您也可以在自定義JSON或自定義食譜中定義該屬性。若屬性具有多個定義,他們會按照稍後說明的順序進行評估,並且節點物件會接收到具有最高優先順序的定義。
一個屬性定義如下:
node.
type
[:attribute
][:sub_attribute
][:...
]=value
若屬性具有多個定義,類型會決定哪個定義具有優先順序,並且該定義會併入節點物件中。 AWS OpsWorks 堆棧使用以下屬性類型:
-
default-這是最常見的類型,它基本上意味著「如果尚未定義屬性,請使用此值」。若所有屬性的定義皆為
default
類型,評估順序中的第一個定義便具有優先順序,其餘值則會遭到忽略。請注意 AWS OpsWorks 堆棧將所有堆棧配置和部署屬性定義設置為default
類型。 -
normal — 具有此類型的屬性會取代先前在評估順序中定義的任何
default
或normal
屬性。例如,若第一個屬性是來自內建的技術指南,並且具有default
類型,而第二個則是具有normal
類型的使用者定義屬性,則第二個定義便具有優先順序。 -
set-這是一個不推薦使用的類型,您可能會在舊的食譜中看到。它已由具有相同優先順序的
normal
取代。
Chef 支援數種額外的屬性類型,包含優先順序高於任何其他屬性定義的 automatic
類型。由 Chef 的 Ohai 工具產生的屬性定義全部皆為 automatic
類型,因此他們基本上等同於唯讀。這通常不是問題,因為沒有理由覆蓋它們,它們與之不同 AWS OpsWorks 堆棧的屬性。不過,建議您小心地為自訂技術指南屬性命名,使其與 Ohai 屬性相異。如需詳細資訊,請參閱關於屬性
注意
Ohai 工具為您可以從命令列執行的可執行檔。若要列出執行個體的 Ohai 屬性,請登入執行個體並在終端機視窗中執行 ohai
。請注意,它會產生非常長的輸出。
以下為將各種屬性定義併入節點物件的步驟:
-
將任何自訂堆疊組態屬性併入堆疊組態和部署屬性。
可以為堆疊或特定部署設定自訂JSON屬性。他們會位於評估的第一優先順序,基本上等同於
normal
類型。如果在 Custom 中也定義了一個或多個堆疊組態屬性JSON,則自訂JSON值優先。否則 AWS OpsWorks 堆棧只是將自定義JSON屬性合併到堆棧配置中。 -
將任何部署自訂JSON屬性合併到堆疊組態和部署屬性中。
部署自訂JSON屬性也是有效的
normal
類型,因此它們優先於內建和自訂堆疊組態JSON和內建部署JSON。 -
將堆疊組態和部署屬性合併成執行個體的節點物件。
-
將執行個體的內建技術指南屬性合併成節點物件。
內建技術指南屬性全部皆為
default
類型。如果堆疊組態和部署屬性中也定義了一或多個內建食譜屬性 (通常是因為您使用自JSON訂定義),堆疊組態定義的優先順序會高於內建的食譜定義。所有其他內建技術指南屬性也會直接併入節點物件。 -
將執行個體的自訂技術指南屬性合併成節點物件。
自訂技術指南屬性通常不是
normal
就是default
類型。唯一屬性會併入節點物件。如果在步驟 1-3 中也定義了任何自訂食譜屬性 (通常是因為您使用自訂定義JSON),則優先順序取決於自訂食譜屬性的類型:-
步驟 1-3 中定義的屬性優先於自訂食譜
default
屬性。 -
自訂文字簿
normal
屬性的優先順序高於步驟 1-3 中的定義。
-
重要
請勿使用自訂技術指南的 default
屬性覆寫堆疊組態或內建技術指南屬性。由於自訂技術指南屬性會在最後評估,default
屬性具有最低的優先順序,因此無法覆寫任何內容。