屬性優先順序 - AWS OpsWorks

本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。

屬性優先順序

重要

所以此 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請聯絡 AWS Support 團隊上 AWS Re: 郵寄或透過 AWS 高級 Support

若屬性的定義是唯一的,Chef 會直接將其併入節點物件。但是,任何屬性來源都可以定義任何屬性,因此相同的屬性可能會有值不同的多個定義。例如,內置apache2食譜定義node[:apache][:keepalive],但您也可以在自定義JSON或自定義食譜中定義該屬性。若屬性具有多個定義,他們會按照稍後說明的順序進行評估,並且節點物件會接收到具有最高優先順序的定義。

一個屬性定義如下:

node.type[:attribute][:sub_attribute][:...]=value

若屬性具有多個定義,類型會決定哪個定義具有優先順序,並且該定義會併入節點物件中。 AWS OpsWorks 堆棧使用以下屬性類型:

  • default-這是最常見的類型,它基本上意味著「如果尚未定義屬性,請使用此值」。若所有屬性的定義皆為 default 類型,評估順序中的第一個定義便具有優先順序,其餘值則會遭到忽略。請注意 AWS OpsWorks 堆棧將所有堆棧配置和部署屬性定義設置為default類型。

  • normal — 具有此類型的屬性會取代先前在評估順序中定義的任何defaultnormal屬性。例如,若第一個屬性是來自內建的技術指南,並且具有 default 類型,而第二個則是具有 normal 類型的使用者定義屬性,則第二個定義便具有優先順序。

  • set-這是一個不推薦使用的類型,您可能會在舊的食譜中看到。它已由具有相同優先順序的 normal 取代。

Chef 支援數種額外的屬性類型,包含優先順序高於任何其他屬性定義的 automatic 類型。由 Chef 的 Ohai 工具產生的屬性定義全部皆為 automatic 類型,因此他們基本上等同於唯讀。這通常不是問題,因為沒有理由覆蓋它們,它們與之不同 AWS OpsWorks 堆棧的屬性。不過,建議您小心地為自訂技術指南屬性命名,使其與 Ohai 屬性相異。如需詳細資訊,請參閱關於屬性

注意

Ohai 工具為您可以從命令列執行的可執行檔。若要列出執行個體的 Ohai 屬性,請登入執行個體並在終端機視窗中執行 ohai。請注意,它會產生非常長的輸出。

以下為將各種屬性定義併入節點物件的步驟:

  1. 將任何自訂堆疊組態屬性併入堆疊組態和部署屬性。

    可以為堆疊或特定部署設定自訂JSON屬性。他們會位於評估的第一優先順序,基本上等同於 normal 類型。如果在 Custom 中也定義了一個或多個堆疊組態屬性JSON,則自訂JSON值優先。否則 AWS OpsWorks 堆棧只是將自定義JSON屬性合併到堆棧配置中。

  2. 將任何部署自訂JSON屬性合併到堆疊組態和部署屬性中。

    部署自訂JSON屬性也是有效的normal類型,因此它們優先於內建和自訂堆疊組態JSON和內建部署JSON。

  3. 將堆疊組態和部署屬性合併成執行個體的節點物件。

  4. 將執行個體的內建技術指南屬性合併成節點物件。

    內建技術指南屬性全部皆為 default 類型。如果堆疊組態和部署屬性中也定義了一或多個內建食譜屬性 (通常是因為您使用自JSON訂定義),堆疊組態定義的優先順序會高於內建的食譜定義。所有其他內建技術指南屬性也會直接併入節點物件。

  5. 將執行個體的自訂技術指南屬性合併成節點物件。

    自訂技術指南屬性通常不是 normal 就是 default 類型。唯一屬性會併入節點物件。如果在步驟 1-3 中也定義了任何自訂食譜屬性 (通常是因為您使用自訂定義JSON),則優先順序取決於自訂食譜屬性的類型:

    • 步驟 1-3 中定義的屬性優先於自訂食譜default屬性。

    • 自訂文字簿normal屬性的優先順序高於步驟 1-3 中的定義。

重要

請勿使用自訂技術指南的 default 屬性覆寫堆疊組態或內建技術指南屬性。由於自訂技術指南屬性會在最後評估,default 屬性具有最低的優先順序,因此無法覆寫任何內容。