步驟 2.3:實作自訂技術指南 - AWS OpsWorks

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

步驟 2.3:實作自訂技術指南

重要

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

儘管堆疊基本上是執行個體的容器,但您無法直接將執行個體新增到堆疊。您將會新增一或多個 layer,每一個代表相關執行個體的群組,然後將執行個體新增至這些 layer。

圖層基本上是一個藍圖 AWS OpsWorks 堆疊用來建立一組具有相同組態的 Amazon EC2 執行個體。執行個體從基礎版本的作業系統開始,且執行個體的 layer 會在執行個體上執行各種任務來實作該藍圖,這些任務可能包括:

  • 建立目錄和檔案

  • 管理使用者

  • 安裝並設定軟體

  • 啟動或停止伺服器

  • 部署應用程式程式碼以及相關檔案。

圖層通過運行 Chef 食譜-簡稱食譜在實例上執行任務。配方是一個 Ruby 應用程序,它使用 Chef 的特定領域語言(DSL)來描述實例的最終狀態。同 AWS OpsWorks 堆疊中,每個方案通常會指派給圖層的其中一個生命週期事件:設定、組態、部署、取消部署和關閉。在執行個體上發生生命週期事件時, AWS OpsWorks 堆疊會執行事件的配方,以執行適當的工作。例如,設定事件在執行個體啟動完成後發生。 AWS OpsWorks Stack 接著會執行安裝程式方法,這些方法通常會執行安裝和設定伺服器軟體,以及啟動相關服務等工作。

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層。後續主題將說明如何實作配方。

開始使用
  1. 在您的工作站中方便的位置上,建立名為 iis-cookbook 的目錄。

  2. 將具有下列內容的 metadata.rb 檔案新增至 iis-cookbook

    name "iis-cookbook" version "0.1.0"

    此範例使用最少量的 metadata.rb。如需如何使用此檔案的詳細資訊,請參閱 metadata.rb

  3. recipes 目錄新增至 iis-cookbook

    此目錄 (必須命名為 recipes) 包含技術指南的配方。

一般而言,技術指南可以包含各種其他目錄。例如,如果配方使用範本來建立組態檔案,範本通常會位於 templates\default 目錄中。此範例的技術指南完全由配方所組成,所以不需要其他目錄。此外,此範例僅使用單一技術指南,但您可以使用所需數量的技術指南;針對複雜的專案,通常使用多個技術指南會更適當。例如,針對設定和部署任務,您可以使用個別的技術指南。如需更多技術指南範例,請參閱 技術指南和配方

實施安裝和啟動的配方 IIS

IIS是 Windows 功能,這是您可以在 Windows 服務器上安裝的一組可選系統組件之一。您可以使用下列其IIS中一種方式安裝配方:

注意

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-ifguard 屬性,可確保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 封存
  1. 建立 iis-cookbook 目錄的 .zip 存檔。

    AWS OpsWorks 堆棧還支持.tgz(gzip 壓縮焦油)歸檔的 Windows 堆棧。

  2. 將存檔上傳到美國西部 (加利佛尼亞北部) 區域的 S3 儲存貯體,並將檔案設為公開。您也可以使用私有 S3 封存,但在這個範例中公有封存已足夠,且使用起來更簡單。

    1. 登入 AWS Management Console 並在打開 Amazon S3 控制台https://console.aws.amazon.com/s3/

    2. 如果您在中還沒有值區,請選擇「建立值區」us-west-1,然後在美國西部 (加利佛尼亞北部) 區域建立值區域。

    3. 在儲存貯體清單中,選擇您要上傳檔案的儲存貯體名稱,然後選擇 Upload (上傳)

    4. 選擇 Add Files (新增檔案)

    5. 選取要上傳的存檔,然後選擇 Open (開啟)

    6. Upload - Select Files and Folders (上傳 - 選取檔案與資料夾) 對話方塊的底部,選擇 Set Details (設定詳細資訊)

    7. Set Details (設定詳細資訊) 對話方塊中,選擇 Set Permissions (設定許可)

    8. Set Permissions (設定許可) 對話方塊中,選擇 Make everything public (公開所有項目)

    9. Set Permissions (設定許可) 對話方塊中,選擇 Start Upload (開始上傳)。上傳完成時,iis-cookbook.zip 檔案會出現在您的儲存貯體中。

    10. 選擇儲存貯體,然後選擇儲存貯體的 Properties (屬性) 標籤。在「連」旁,記錄封存檔案以URL供日後使用。

    如需將檔案上傳到 Amazon S3 儲存貯體的詳細資訊,請參閱如何將檔案和資料夾上傳到 S3 儲存貯體?Amazon S3 控制台用戶指南中。

重要

到目前為止,逐步解說只花費了您一點時間; AWS OpsWorks 堆棧服務本身是免費的。不過,您必須為使用的任何AWS資源付費,例如 Amazon S3 儲存。一旦您上傳封存,即會開始產生費用。如需詳細資訊,請參閱AWS定價

為堆疊啟用自訂技術指南。
  1. 在 AWS OpsWorks 「疊」主控台,在導覽窗格中選擇「堆疊」,然後選擇右上角的「堆疊設定」。

  2. Settings (設定) 頁面的右上角,選擇 Edit (編輯)

  3. Settings (設定) 頁面上,將 Use custom Chef cookbooks (使用自訂 Chef 技術指南) 設定為 Yes (是) 然後輸入下列資訊:

    • 存放庫類型 — S3 存檔

    • 儲存庫 URL — 您之前錄製的食譜封存檔案URL的 S3。

  4. 選擇 Save (儲存) 來更新堆疊組態。

AWS OpsWorks Stacks 會在所有新執行個體上安裝您的自訂食譜。請注意 AWS OpsWorks 堆疊不會自動在線上執行個體上安裝或更新自訂食譜。您可以手動執行此作業,如下所述。