Overriding (覆寫) AWS OpsWorks 使用自定義食譜屬性堆棧屬性 - AWS OpsWorks

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

Overriding (覆寫) AWS OpsWorks 使用自定義食譜屬性堆棧屬性

重要

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

注意

對於視窗堆疊, AWS OpsWorks Stack 使用單獨的 Chef 運行來處理內置食譜和自定義食譜 這表示您無法使用本節討論的技術覆寫 Windows 堆疊的內建屬性。

自定義JSON是一種方便的覆蓋方式 AWS OpsWorks 堆棧配置和內置食譜屬性,但它有一些限制。特別是,您必須為每次使用JSON手動輸入 custom,因此您沒有可靠的方法來管理定義。較佳的方法通常是使用自訂技術指南屬性檔案覆寫內建的屬性。這樣做可讓您將定義置放在來源控制之下。

使用自訂屬性檔案取代的程序 AWS OpsWorks 堆疊定義很簡單。

覆寫的步驟 AWS OpsWorks 堆疊屬性定義
  1. 設定技術指南儲存庫,如技術指南和配方中所述。

  2. 使用與內建技術指南相同的名稱建立技術指南,其中包含您希望覆寫的屬性。例如,若要覆寫 Apache 屬性,技術指南的名稱應為 apache2。

  3. 將一個 attributes 資料夾新增至技術指南,並在該資料夾中新增一個名為 customize.rb 的檔案。

  4. 針對每一個內建技術指南中您希望覆寫的屬性,將屬性定義新增至檔案,並設為您喜好的值。該屬性必須是normal類型或更高的類型,並具有完全相同的節點名稱對應 AWS OpsWorks 堆棧屬性。有關詳細列表 AWS OpsWorks 堆疊屬性,包括節點名稱,請參閱堆疊組態及部署屬性:Linux內建技術指南屬性。如需屬性和屬性檔案的詳細資訊,請參閱關於屬性檔案

    重要

    您的屬性必須是要覆蓋的normal類型 AWS OpsWorks 堆疊屬性;default類型沒有優先順序。例如,若您的 customize.rb 檔案包含 default[:apache][:keepalivetimeout] = 5 屬性定義,內建 apache.rb 屬性檔案中的對應屬性會先受到評估,並取得優先順序。如需詳細資訊,請參閱覆寫屬性

  5. 為每本內建食譜重複步驟 2 — 4,其中包含您要覆寫的屬性。

  6. 為您的堆疊啟用自訂食譜,並提供所需的資訊 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 複本中的屬性,您只會影響那些特定的屬性。配方會從內建屬性檔案取得任何其他的屬性值,並自動取得任何您未覆寫之屬性的目前值。

這種方法可協助您將您技術指南儲存庫中的屬性維持在較小的數目,減少您的維護額外負荷,並使未來的升級更容易管理。