使用自定義食譜屬性覆蓋 AWS OpsWorks 堆棧屬性 - AWS OpsWorks

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

使用自定義食譜屬性覆蓋 AWS OpsWorks 堆棧屬性

重要

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

注意

對於 Windows 堆疊, AWS OpsWorks 堆疊會使用不同的 Chef 執行來執行內建配方和自訂配方。這表示您無法使用本節討論的技術覆寫 Windows 堆疊的內建屬性。

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

使用自訂屬性檔案覆寫 AWS OpsWorks Stack 定義的程序非常簡單。

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

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

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

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

    重要

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

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

  6. 為堆疊啟用自訂食譜,並提供 Stacks 將食譜下載至 AWS OpsWorks 堆疊執行個體所需的資訊。如需詳細資訊,請參閱 安裝自訂技術指南

注意

如需此程序的完整演練,請參閱覆寫內建屬性

後續生命週期事件、部署命令和堆疊命令所使用的節點物件現在將包含您的屬性定義,而不是 AWS OpsWorks Stacks 值。

例如,若要覆寫keepalivetimeout 中討論的內建 Apache logrotate schedule如何指定自訂 JSON 設定,請將 apache2 技術指南新增至您的儲存庫,然後將 customize.rb 檔案新增至技術指南的 attributes 資料夾,並帶有以下內容。

normal[:apache][:keepalivetimeout] = 5 normal[:apache][:logrotate][:schedule] = 'weekly'
重要

您不應該藉由修改相關聯內建屬性檔案的副本來覆寫 AWS OpsWorks Stacks 屬性。假設您將 apache.rb 複製到您的 apache2/attributes 資料夾並修改其部分設定,您基本上便已覆寫內建檔案中的每個屬性。配方會使用您複本中的屬性定義,並忽略內建檔案。若 AWS OpsWorks Stacks 稍後修改了內建屬性檔案,配方將無法存取變更,除非您手動更新您的複本。

為避免這種情況,所有內建的技術指南都包含一個空白的 customize.rb 屬性檔案,為所有透過 include_attribute 指示詞之模組的必要項目。透過覆寫您 customize.rb 複本中的屬性,您只會影響那些特定的屬性。配方會從內建屬性檔案取得任何其他的屬性值,並自動取得任何您未覆寫之屬性的目前值。

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