本文為英文版的機器翻譯版本,如內容有任何歧義或不一致之處,概以英文版為準。
步驟 2.3:實作自訂技術指南
重要
所以此 AWS OpsWorks Stacks 服務於 2024 年 5 月 26 日終止使用壽命,並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載移轉至其他解決方案。如果您對移轉有任何疑問,請聯絡 AWS Support 團隊上 AWS Re: 郵寄
儘管堆疊基本上是執行個體的容器,但您無法直接將執行個體新增到堆疊。您將會新增一或多個 layer,每一個代表相關執行個體的群組,然後將執行個體新增至這些 layer。
圖層基本上是一個藍圖 AWS OpsWorks 堆疊用來建立一組具有相同組態的 Amazon EC2 執行個體。執行個體從基礎版本的作業系統開始,且執行個體的 layer 會在執行個體上執行各種任務來實作該藍圖,這些任務可能包括:
-
建立目錄和檔案
-
管理使用者
-
安裝並設定軟體
-
啟動或停止伺服器
-
部署應用程式程式碼以及相關檔案。
圖層通過運行 Chef 食譜-簡稱食譜
AWS OpsWorks Stacks 為每個圖層提供了一組執行標準任務的內置配方。您可以實作自訂配方來執行額外任務,並將其指派到 layer 的生命週期事件,以擴展 layer 的功能。Windows 堆疊支援自訂 layer,這些 layer 具有一組僅執行幾項基本任務的最少量配方。若要將功能新增至您的 Windows 執行個體,您必須實作自訂配方來安裝軟體、部署應用程式等等。本主題說明如何建立簡單的自訂層以支援IIS執行個體。
技術指南和配方的快速簡介
配方定義執行個體預期狀態的一或多個 layer 面:應包含哪些目錄、應安裝哪些軟體套件、應部署哪些應用程式等等。配方封裝在「技術指南」中,而技術指南可以包含一或多個相關配方,再加上相關檔案 (例如建立組態檔案的範本)。
本主題是食譜的一個非常基本的介紹,足以向您展示如何實現食譜以支持簡單的自定義IIS層。如需技術指南一般簡介的詳細資訊,請參閱 技術指南和配方。如需詳細的實作技術指南教學介紹,包括某些 Windows 特定主題,請參閱技術指南 101。
廚師食譜技術上是 Ruby 應用程序,但大多數(如果不是全部)代碼都在廚師中DSL。主要DSL由一組資源組成,您可以使用這些資源以宣告方式指定執行個體狀態的某個層面。例如,directory
資源C:\data
目錄,此目錄屬於指定使用者,且不會從父目錄繼承權限。
directory 'C:\data' do rights :full_control, 'WORKGROUP\
username
' inherits false action :create end
當 Chef 執行配方時,會透過將資料傳遞給相關聯的「提供者」(這是處理修改執行個體狀態詳細資訊的 Ruby 物件) 來執行每項資源。在此範例中,供應者會使用指定組態來建立新目錄。
自定義IIS層的自定義食譜必須執行以下任務:
-
安裝IIS功能並啟動服務。
您通常會在完成啟動執行個體後的安裝期間執行此任務。
-
將應用程式部署到執行個體,這是本範例的簡單HTML頁面。
您通常會在設定期間執行此任務。不過,應用程式通常需要定期更新,所以您也需要在執行個體處於上線狀態時部署更新。
您可以使用單一配方來執行所有這些任務。但是,首選方法是將單獨的配方用於設定和部署任務。這樣一來,您無需執行設定程式碼,也可隨時部署應用程式更新。以下說明如何設定食譜以支援自訂IIS層。後續主題將說明如何實作配方。
開始使用
-
在您的工作站中方便的位置上,建立名為
iis-cookbook
的目錄。 -
將具有下列內容的
metadata.rb
檔案新增至iis-cookbook
。name "iis-cookbook" version "0.1.0"
此範例使用最少量的
metadata.rb
。如需如何使用此檔案的詳細資訊,請參閱 metadata.rb。 -
將
recipes
目錄新增至iis-cookbook
。此目錄 (必須命名為
recipes
) 包含技術指南的配方。
一般而言,技術指南可以包含各種其他目錄。例如,如果配方使用範本來建立組態檔案,範本通常會位於 templates\default
目錄中。此範例的技術指南完全由配方所組成,所以不需要其他目錄。此外,此範例僅使用單一技術指南,但您可以使用所需數量的技術指南;針對複雜的專案,通常使用多個技術指南會更適當。例如,針對設定和部署任務,您可以使用個別的技術指南。如需更多技術指南範例,請參閱 技術指南和配方。
實施安裝和啟動的配方 IIS
IIS是 Windows 功能,這是您可以在 Windows 服務器上安裝的一組可選系統組件之一。您可以使用下列其IIS中一種方式安裝配方:
-
透過使用
powershell_script
資源,來執行 Install-WindowsFeature
cmdlet。 -
透過使用 Chef Windows 技術指南
的 windows_feature
資源。windows
食譜包含一組資源,其提供者使用部署映射服務和管理(DISM)在 Windows 實例上執行各種任務,包括功能安裝。
注意
powershell_script
位於 Windows 配方的最有用資源之間。您可以透過執行指令 PowerShell 碼或指令程式,在執行個體上執行各種工作。尤其適用於不受 Chef 資源支援的任務。
此範例會執行 PowerShell 指令碼來安裝並啟動 Web 伺服器 (IIS)。下文將介紹 windows
技術指南。如需如何使用windows_feature
安裝的範例IIS,請參閱安裝視窗功能:IIS。
將下列內容和名為 install.rb
的配方新增至技術指南的 recipes
目錄。
powershell_script 'Install IIS' do code 'Install-WindowsFeature Web-Server' not_if "(Get-WindowsFeature -Name Web-Server).Installed" end service 'w3svc' do action [:start, :enable] end
此配方包含兩種資源。
- powershell_script
-
powershell_script
執行指定的指 PowerShell令碼或指令程式。此範例具有下列屬性設定:-
code
— 要執行的 PowerShell 指令程式。此範例會執行安裝 Web 伺服器 (IIS) 的
Install-WindowsFeature
指令程式。一般而言,code
屬性可以具有任意數目的行,因此您可以執行所需數量的 cmdlet。 -
not-if
— guard 屬性,可確保IIS只有在尚未安裝配方時才會安裝。 您通常會希望配方是「等冪」,因此配方不會浪費時間重複執行相同的任務。
每個資源都有一個動作,指定提供者要採取的動作。此範例沒有明確的動作,因此提供者會採取預設
:run
動作,執行指定的指 PowerShell 令碼。如需詳細資訊,請參閱運行一個視窗 PowerShell腳本。 -
- 服務
-
在這種情況下,
service
管理服務,即 Web IIS 服務器服務(W3SVC)。此範例使用預設屬性並指定兩個動作 :enable
,:start
以及 (啟用) IIS。
注意
如果您想要安裝使用套件安裝程式的軟體,例如MSI,您可以使用windows_package
資源。如需詳細資訊,請參閱安裝套件。
啟用自訂技術指南
AWS OpsWorks 堆疊會在每個執行個體上從本機快取執行方法。若要執行您的自訂配方,您必須執行下列作業:
-
將技術指南存放在遠端儲存庫中。
AWS OpsWorks Stacks 會從這個儲存庫下載食譜到每個執行個體的本機快取。
-
編輯堆疊以啟用自訂技術指南。
自訂食譜預設為停用,因此您必須為堆疊啟用自訂食譜,並提供儲存庫URL和相關資訊。
AWS OpsWorks 堆疊支援自訂食譜的 S3 存檔和 Git 儲存庫;此範例使用 S3 存檔。如需詳細資訊,請參閱技術指南儲存庫。
使用 S3 封存
-
建立
iis-cookbook
目錄的.zip
存檔。AWS OpsWorks 堆棧還支持
.tgz
(gzip 壓縮焦油)歸檔的 Windows 堆棧。 -
將存檔上傳到美國西部 (加利佛尼亞北部) 區域的 S3 儲存貯體,並將檔案設為公開。您也可以使用私有 S3 封存,但在這個範例中公有封存已足夠,且使用起來更簡單。
登入 AWS Management Console 並在打開 Amazon S3 控制台https://console.aws.amazon.com/s3/
。 -
如果您在中還沒有值區,請選擇「建立值區」
us-west-1
,然後在美國西部 (加利佛尼亞北部) 區域建立值區域。 -
在儲存貯體清單中,選擇您要上傳檔案的儲存貯體名稱,然後選擇 Upload (上傳)。
-
選擇 Add Files (新增檔案)。
-
選取要上傳的存檔,然後選擇 Open (開啟)。
-
在 Upload - Select Files and Folders (上傳 - 選取檔案與資料夾) 對話方塊的底部,選擇 Set Details (設定詳細資訊)。
-
在 Set Details (設定詳細資訊) 對話方塊中,選擇 Set Permissions (設定許可)。
-
在 Set Permissions (設定許可) 對話方塊中,選擇 Make everything public (公開所有項目)。
-
在 Set Permissions (設定許可) 對話方塊中,選擇 Start Upload (開始上傳)。上傳完成時,
iis-cookbook.zip
檔案會出現在您的儲存貯體中。 -
選擇儲存貯體,然後選擇儲存貯體的 Properties (屬性) 標籤。在「連結」旁,記錄封存檔案以URL供日後使用。
如需將檔案上傳到 Amazon S3 儲存貯體的詳細資訊,請參閱如何將檔案和資料夾上傳到 S3 儲存貯體? 在 Amazon S3 控制台用戶指南中。
重要
到目前為止,逐步解說只花費了您一點時間; AWS OpsWorks 堆棧服務本身是免費的。不過,您必須為使用的任何AWS資源付費,例如 Amazon S3 儲存。一旦您上傳封存,即會開始產生費用。如需詳細資訊,請參閱AWS定價
為堆疊啟用自訂技術指南。
-
在 AWS OpsWorks 「堆疊」主控台,在導覽窗格中選擇「堆疊」,然後選擇右上角的「堆疊設定」。
-
在 Settings (設定) 頁面的右上角,選擇 Edit (編輯)。
-
在 Settings (設定) 頁面上,將 Use custom Chef cookbooks (使用自訂 Chef 技術指南) 設定為 Yes (是) 然後輸入下列資訊:
-
存放庫類型 — S3 存檔。
-
儲存庫 URL — 您之前錄製的食譜封存檔案URL的 S3。
-
-
選擇 Save (儲存) 來更新堆疊組態。
AWS OpsWorks Stacks 會在所有新執行個體上安裝您的自訂食譜。請注意 AWS OpsWorks 堆疊不會自動在線上執行個體上安裝或更新自訂食譜。您可以手動執行此作業,如下所述。