本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
覆寫內建屬性
重要
所以此 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請聯絡 AWS Support 團隊上 AWS Re: 郵寄
注意
本主題僅適用於 Linux 堆疊。您無法在 Windows 堆疊上覆寫內建屬性。
AWS OpsWorks Stacks 會在每個執行個體上安裝一組內建食譜。許多內建技術指南都支援內建 layer,而且其屬性檔案定義各種預設系統和應用程式設定 (例如 Apache 伺服器組態設定)。將這些設定放在屬性檔案中,即可使用下列方式覆寫對應內建屬性來自訂許多組態設定:
-
在自訂中定義屬性JSON。
此方式的優點是簡單並具彈性。但是,您必須JSON手動輸入 custom,因此沒有可靠的方法可以管理屬性定義。
-
實作自訂技術指南,並在
customize.rb
屬性檔案中定義屬性。這種方法比使用 Custom 的靈活性較低JSON,但更強大,因為您可以將自定義食譜放在源代碼控制之下。
本主題說明如何使用自訂技術指南屬性檔案覆寫內建屬性,並使用 Apache 伺服器做為範例。如需如何使用自訂覆寫屬性的詳細資訊JSON,請參閱使用自訂 JSON。如需如何覆寫屬性的一般討論,請參閱覆寫屬性。
注意
偏好使用覆寫屬性來自訂組態設定,但不會一律透過屬性呈現設定。在該情況下,您通常可以覆寫內建配方用來建立組態檔案的範本,來自訂組態檔案。如需範例,請參閱覆寫內建範本。
內建屬性通常代表範本檔案中安裝配方用來建立組態檔案的值。例如,其中一個 apache2
安裝配方 default.rb
apache2.conf.erb
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 值。
若要開始,請建立自訂技術指南。
建立技術指南
-
在
opsworks_cookbooks
目錄內,建立並導覽至名為apache2
的技術指南目錄。若要覆寫內建屬性,自訂技術指南必須與內建技術指南同名,在此範例中為
apache2
。 -
在
apache2
目錄中,建立attributes
目錄。 -
將名為
customize.rb
的檔案新增至attributes
目錄,並使用它來定義您想要覆寫的內建技術指南屬性。在此範例中,檔案應該包含下列項目:normal[:apache][:keepalivetimeout] = 5
重要
若要覆寫內建屬性,自訂屬性必須是
normal
類型或以上類型,並且具有與對應內建屬性完全相同的節點名稱。normal
類型確保自訂屬性的優先順序高於內建屬性,即所有default
類型。如需詳細資訊,請參閱屬性優先順序。 -
建立
opsworks_cookbooks
命名的.zip
存檔,opsworks_cookbooks.zip
並將存檔上傳到 Amazon Simple Storage Service (Amazon S3) 儲存貯體。為求簡化,請將檔案設為公有。記錄以URL供日後使用。您也可以將食譜存放在私有 Amazon S3 存檔或其他存放庫類型中。如需詳細資訊,請參閱技術指南儲存庫。傳遞至 Amazon S3 儲存貯體的內容可能包含客戶內容。如需移除敏感資料的詳細資訊,請參閱如何清空 S3 儲存貯體?或如何刪除 S3 儲存貯體?。
若要使用自訂屬性,請建立堆疊,並安裝技術指南。
使用自訂屬性
-
開啟 AWS OpsWorks [堆疊] 主控台
,然後選擇 [新增堆疊]。 -
指定下列標準設定。
-
名稱 — 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
目錄中。 -
-
選擇 [新增圖層],然後將具有預設設定的 Java 應用程式伺服器層新增至堆疊。
-
新增全年無休執行個體 (具有預設設定) 至 layer,然後啟動執行個體。
在此範例中,t2.micro 執行個體就已足夠。
-
執行個體上線後,請使用連線至執行個體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 ...