本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
Overriding (覆寫) AWS OpsWorks 使用自定義食譜屬性堆棧屬性
重要
所以此 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請聯絡 AWS Support 團隊上 AWS Re: 郵寄
注意
對於視窗堆疊, AWS OpsWorks Stack 使用單獨的 Chef 運行來處理內置食譜和自定義食譜 這表示您無法使用本節討論的技術覆寫 Windows 堆疊的內建屬性。
自定義JSON是一種方便的覆蓋方式 AWS OpsWorks 堆棧配置和內置食譜屬性,但它有一些限制。特別是,您必須為每次使用JSON手動輸入 custom,因此您沒有可靠的方法來管理定義。較佳的方法通常是使用自訂技術指南屬性檔案覆寫內建的屬性。這樣做可讓您將定義置放在來源控制之下。
使用自訂屬性檔案取代的程序 AWS OpsWorks 堆疊定義很簡單。
覆寫的步驟 AWS OpsWorks 堆疊屬性定義
-
設定技術指南儲存庫,如技術指南和配方中所述。
-
使用與內建技術指南相同的名稱建立技術指南,其中包含您希望覆寫的屬性。例如,若要覆寫 Apache 屬性,技術指南的名稱應為 apache2。
-
將一個
attributes
資料夾新增至技術指南,並在該資料夾中新增一個名為customize.rb
的檔案。 -
針對每一個內建技術指南中您希望覆寫的屬性,將屬性定義新增至檔案,並設為您喜好的值。該屬性必須是
normal
類型或更高的類型,並具有完全相同的節點名稱對應 AWS OpsWorks 堆棧屬性。有關詳細列表 AWS OpsWorks 堆疊屬性,包括節點名稱,請參閱堆疊組態及部署屬性:Linux和內建技術指南屬性。如需屬性和屬性檔案的詳細資訊,請參閱關於屬性檔案。 重要
您的屬性必須是要覆蓋的
normal
類型 AWS OpsWorks 堆疊屬性;default
類型沒有優先順序。例如,若您的customize.rb
檔案包含default[:apache][:keepalivetimeout] = 5
屬性定義,內建apache.rb
屬性檔案中的對應屬性會先受到評估,並取得優先順序。如需詳細資訊,請參閱覆寫屬性。 -
為每本內建食譜重複步驟 2 — 4,其中包含您要覆寫的屬性。
-
為您的堆疊啟用自訂食譜,並提供所需的資訊 AWS OpsWorks 堆疊以將您的食譜下載到堆疊的執行個體。如需詳細資訊,請參閱安裝自訂技術指南。
注意
如需此程序的完整演練,請參閱覆寫內建屬性。
後續生命週期事件、部署命令和堆疊命令所使用的節點物件現在將包含您的屬性定義,而不是 AWS OpsWorks 堆疊值。
例如,若要覆寫keepalivetimeout
中討論的內建 Apache logrotate schedule
和 如何指定自訂 JSON 設定,請將 apache2
技術指南新增至您的儲存庫,然後將 customize.rb
檔案新增至技術指南的 attributes
資料夾,並帶有以下內容。
normal[:apache][:keepalivetimeout] = 5 normal[:apache][:logrotate][:schedule] = 'weekly'
重要
你不應該覆蓋 AWS OpsWorks 通過修改相關聯的內置屬性文件的副本來堆棧屬性。假設您將 apache.rb
複製到您的 apache2/attributes
資料夾並修改其部分設定,您基本上便已覆寫內建檔案中的每個屬性。配方會使用您複本中的屬性定義,並忽略內建檔案。If AWS OpsWorks 堆棧以後修改了內置屬性文件,除非您手動更新副本,否則配方將無法訪問更改。
為避免這種情況,所有內建的技術指南都包含一個空白的 customize.rb
屬性檔案,為所有透過 include_attribute
指示詞之模組的必要項目。透過覆寫您 customize.rb
複本中的屬性,您只會影響那些特定的屬性。配方會從內建屬性檔案取得任何其他的屬性值,並自動取得任何您未覆寫之屬性的目前值。
這種方法可協助您將您技術指南儲存庫中的屬性維持在較小的數目,減少您的維護額外負荷,並使未來的升級更容易管理。