覆寫內建屬性 - AWS OpsWorks

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

覆寫內建屬性

重要

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

注意

本主題僅適用於 Linux 堆疊。您無法在 Windows 堆疊上覆寫內建屬性。

AWS OpsWorks Stacks 會在每個執行個體上安裝一組內建食譜。許多內建技術指南都支援內建 layer,而且其屬性檔案定義各種預設系統和應用程式設定 (例如 Apache 伺服器組態設定)。將這些設定放在屬性檔案中,即可使用下列方式覆寫對應內建屬性來自訂許多組態設定:

  • 在自訂中定義屬性JSON。

    此方式的優點是簡單並具彈性。但是,您必須JSON手動輸入 custom,因此沒有可靠的方法可以管理屬性定義。

  • 實作自訂技術指南,並在 customize.rb 屬性檔案中定義屬性。

    這種方法比使用 Custom 的靈活性較低JSON,但更強大,因為您可以將自定義食譜放在源代碼控制之下。

本主題說明如何使用自訂技術指南屬性檔案覆寫內建屬性,並使用 Apache 伺服器做為範例。如需如何使用自訂覆寫屬性的詳細資訊JSON,請參閱使用自訂 JSON。如需如何覆寫屬性的一般討論,請參閱覆寫屬性

注意

偏好使用覆寫屬性來自訂組態設定,但不會一律透過屬性呈現設定。在該情況下,您通常可以覆寫內建配方用來建立組態檔案的範本,來自訂組態檔案。如需範例,請參閱覆寫內建範本

內建屬性通常代表範本檔案中安裝配方用來建立組態檔案的值。例如,其中一個 apache2 安裝配方 default.rb 使用 apache2.conf.erb 範本來建立 Apache 伺服器的主要組態檔案 httpd.conf (Amazon Linux) 或 apache2.conf (Ubuntu)。以下是範例檔案中的摘錄:

... # # MaxKeepAliveRequests: The maximum number of requests to allow # during a persistent connection. Set to 0 to allow an unlimited amount. # We recommend you leave this number high, for maximum performance. # MaxKeepAliveRequests <%= node[:apache][:keepaliverequests] %> # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout <%= node[:apache][:keepalivetimeout] %> ## ## Server-Pool Size Regulation (MPM specific) ## ...

此範例中的 KeepAliveTimeout 設定是 [:apache][:keepalivetimeout] 屬性的值。此屬性的預設值定義於 apache2 技術指南的 apache.rb 屬性檔案,如下列摘錄所示:

... # General settings default[:apache][:listen_ports] = [ '80','443' ] default[:apache][:contact] = 'ops@example.com' default[:apache][:log_level] = 'info' default[:apache][:timeout] = 120 default[:apache][:keepalive] = 'Off' default[:apache][:keepaliverequests] = 100 default[:apache][:keepalivetimeout] = 3 ...
注意

如需常用內建屬性的詳細資訊,請參閱內建技術指南屬性

若要支援覆寫內建屬性,所有內建技術指南都會包含 customize.rb 屬性檔案,而此屬性檔案透過 include_attribute 指令併入所有模組中。內建技術指南的 customize.rb 檔案未包含任何屬性定義,而且不會影響內建屬性。若要覆寫內建屬性,您可以建立與內建技術指南同名的自訂技術指南,並將自訂屬性定義放入也命名為 customize.rb 的屬性檔案中。該檔案的優先順序高於內建版本,並包含在任何相關模組中。如果您在 customize.rb 中定義任何內建屬性,則它們會覆寫對應的內建屬性。

此範例顯示如何覆寫內建 [:apache][:keepalivetimeout] 屬性,以將其值設定為 5,而非 3。您可以將類似的方式用於任何內建屬性。不過,請注意您覆寫哪些屬性。例如,opsworks 命名空間中的覆寫屬性可能會導致一些內建配方的問題。

重要

請不要修改內建屬性檔案的複本本身來覆寫內建屬性。例如,您「可以」apache.rb 的複本放入您自訂技術指南的 apache2/attributes 資料夾,並修改它的一些設定。不過,此檔案的優先順序高於內建版本,而內建配方現在會使用您的 apache.rb 版本。If AWS OpsWorks 堆棧以後修改了內置apache.rb文件,除非您手動更新版本,否則配方將不會獲得新值。透過使用customize.rb,您只會覆寫指定的屬性;內建配方會繼續自動取得您尚未覆寫之每個屬性的 up-to-date 值。

若要開始,請建立自訂技術指南。

建立技術指南
  1. opsworks_cookbooks 目錄內,建立並導覽至名為 apache2 的技術指南目錄。

    若要覆寫內建屬性,自訂技術指南必須與內建技術指南同名,在此範例中為 apache2

  2. apache2 目錄中,建立 attributes 目錄。

  3. 將名為 customize.rb 的檔案新增至 attributes 目錄,並使用它來定義您想要覆寫的內建技術指南屬性。在此範例中,檔案應該包含下列項目:

    normal[:apache][:keepalivetimeout] = 5
    重要

    若要覆寫內建屬性,自訂屬性必須是 normal 類型或以上類型,並且具有與對應內建屬性完全相同的節點名稱。normal 類型確保自訂屬性的優先順序高於內建屬性,即所有 default 類型。如需詳細資訊,請參閱屬性優先順序

  4. 建立opsworks_cookbooks命名的.zip存檔,opsworks_cookbooks.zip並將存檔上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。為求簡化,請將檔案設為公有。記錄以URL供日後使用。您也可以將食譜存放在私有 Amazon S3 存檔或其他存放庫類型中。如需詳細資訊,請參閱技術指南儲存庫

    傳遞至 Amazon S3 儲存貯體的內容可能包含客戶內容。如需移除敏感資料的詳細資訊,請參閱如何清空 S3 儲存貯體?如何刪除 S3 儲存貯體?

若要使用自訂屬性,請建立堆疊,並安裝技術指南。

使用自訂屬性
  1. 開啟 AWS OpsWorks [堆疊] 主控台,然後選擇 [新增堆疊]。

  2. 指定下列標準設定。

    • 名稱 — ApacheConfig

    • 地區 — 美國西部 (奧勒岡)

      您可以將堆疊放在任何區域,但我們建議您使用美國西部 (奧勒岡) 進行教學課程。

    • 預設SSH金鑰 — EC2 key pair

      如果您需要建立 EC2 key pair,請參閱 Amazon EC2 金鑰配對。請注意,key pair 必須屬於與堆疊相同的AWS區域。

    選擇 Advanced>> (進階>>),並將 Use custom Chef cookbooks (使用自訂 Chef 技術指南) 設定為 Yes (是),然後指定下列設定。

    • 存儲庫類型-HTTP 存檔

    • 存儲庫 URL-您之前記錄URL的食譜存檔

    接受其他設定的預設值,然後選擇 Add Stack (新增堆疊) 來建立堆疊。

    注意

    此範例使用預設作業系統:Amazon Linux。如果您想要,可以使用 Ubuntu。唯一的差異是,在 Ubuntu 系統上,內建安裝配方會產生具有相同設定且名為 apache2.conf 的組態檔案,並將它放入 /etc/apache2 目錄中。

  3. 選擇 [新增圖層],然後將具有預設設定的 Java 應用程式伺服器層新增至堆疊。

  4. 新增全年無休執行個體 (具有預設設定) 至 layer,然後啟動執行個體。

    在此範例中,t2.micro 執行個體就已足夠。

  5. 執行個體上線後,請使用連線至執行個體SSH。httpd.conf 檔案位在 /etc/httpd/conf 目錄中。如果您檢查檔案,則應該會看到您的自訂 KeepAliveTimeout 設定。這些設定的其餘部分將會有內建 apache.rb 檔案中的預設值。httpd.conf 的相關部分應該看起來與下列類似:

    ... # # KeepAliveTimeout: Number of seconds to wait for the next request from the # same client on the same connection. # KeepAliveTimeout 5 ...