

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

# 在 Windows 執行個體上執行配方
<a name="cookbooks-101-opsworks-opsworks-windows"></a>

**重要**  
 AWS OpsWorks Stacks 此服務已於 2024 年 5 月 26 日終止，並已針對新客戶和現有客戶停用。我們強烈建議客戶盡快將其工作負載遷移至其他解決方案。如果您對遷移有任何疑問，請透過 [AWS re：Post](https://repost.aws/) 或透過 [AWS Premium Support](https://aws.amazon.com/support) 聯絡 AWS 支援 團隊。

本主題基本上是[在 Linux 執行個體上執行配方](cookbooks-101-opsworks-opsworks-instance.md)的縮短版本，顯示如何在 Windows 堆疊上執行配方。建議您先參閱[在 Linux 執行個體上執行配方](cookbooks-101-opsworks-opsworks-instance.md)，因為它提供更多詳細討論，其中大部分都是與任一種作業系統有關。

如需如何在 Stacks Linux OpsWorks 執行個體上執行配方的說明，請參閱 [在 Linux 執行個體上執行配方](cookbooks-101-opsworks-opsworks-instance.md)。

**Topics**
+ [啟用 RDP 存取](#cookbooks-101-opsworks-opsworks-windows-rdp)
+ [建立和執行配方](#cookbooks-101-opsworks-opsworks-windows-run-recipe)
+ [自動執行配方](#cookbooks-101-opsworks-opsworks-windows-event)

## 啟用 RDP 存取
<a name="cookbooks-101-opsworks-opsworks-windows-rdp"></a>

開始之前，如果您尚未這麼做，則必須設定安全群組，其具有允許 RDP 存取您執行個體的傳入規則。您在建立堆疊時將會需要該群組。

當您在區域中建立第一個堆疊時， OpsWorks Stacks 會建立一組安全群組。其中包括一個名為 的物件`AWS-OpsWorks-RDP-Server`，例如 ， Stacks OpsWorks 會連接到所有 Windows 執行個體以允許 RDP 存取。不過，此安全群組預設沒有任何規則，因此您必須新增傳入規則來允許 RDP 存取您的執行個體。

**允許 RDP 存取**

1. 開啟 [Amazon EC2 主控台](https://console.aws.amazon.com/ec2/v2/)，將其設定為堆疊的區域，然後從導覽窗格中選擇**安全群組**。

1. 選擇 **AWS-OpsWorks-RDP-Server**，並選擇 **Inbound (傳入)** 標籤，然後選擇 **Edit (編輯)**。

1. 新增具有下列設定的規則：
   + **類型** – **RDP**
   + **來源** – 允許的來源 IP 地址。

     通常，您會允許來自您 IP 地址或指定 IP 地址範圍 (通常是公司的 IP 地址範圍) 的傳入 RDP 請求。

**注意**  
如稍後所述，您還必須編輯使用者許可來授權 RDP 存取一般使用者。

如需詳細資訊，請參閱[使用 RDP 登入](workinginstances-rdp.md)。

## 建立和執行配方
<a name="cookbooks-101-opsworks-opsworks-windows-run-recipe"></a>

以下簡短地彙總如何針對此範例建立堆疊。如需詳細資訊，請參閱[建立新的堆疊](workingstacks-creating.md)。

**建立堆疊**

1. 開啟 [OpsWorks Stacks 主控台](https://console.aws.amazon.com/opsworks/)，然後選擇 **Add Stack (新增堆疊)**。指定下列設定，並接受其他設定的預設值，然後選擇 **Add Stack (新增堆疊)**。
   + **名稱** – WindowsRecipeTest
   + **區域** – 美國西部 （奧勒岡）

     此範例適用於任何區域，但我們建議您使用美國西部 （奧勒岡） 進行教學課程。
   + **預設作業系統** – Microsoft Windows Server 2012 R2

1. 選擇 **Add a layer (新增 layer)**，並[新增自訂 layer](workinglayers-custom.md) 至具有下列設定的堆疊。
   + **名稱** – RecipeTest
   + **簡短名稱** – recipetest

1. [新增全年無休執行個體](workinginstances-add.md) (具有預設設定) 至 RecipeTest layer，以及[啟動它](workinginstances-starting.md)。

   OpsWorks Stacks 會自動指派給`AWS-OpsWorks-RDP-Server`此執行個體，允許授權使用者登入執行個體。

1. 選擇 **Permissions (許可)**，並選擇 **Edit (編輯)**，然後選擇 **SSH/RDP** 和 **sudo/admin**。除了 `AWS-OpsWorks-RDP-Server` 安全群組之外，一般使用者還需要有此授權，才能登入執行個體。
**注意**  
您也可以登入為管理員，但需要不同的程序。如需詳細資訊，請參閱[使用 RDP 登入](workinginstances-rdp.md)。

當執行個體啟動時，您通常需要幾分鐘的時間來建立技術指南。此範例的配方會建立資料目錄，而且基本上是[範例 3：建立目錄](cookbooks-101-basics-directories.md) (針對 Windows 所修改) 中的配方。

**注意**  
實作 Stacks Windows OpsWorks 執行個體的技術指南時，您使用的目錄結構與實作 Stacks Linux OpsWorks 執行個體的技術指南略有不同。如需詳細資訊，請參閱[技術指南儲存庫](workingcookbook-installingcustom-repo.md)。

**設定技術指南**

1. 建立並導覽至名為 `windowstest` 的目錄。

1. 使用下列內容建立 `metadata.rb` 檔案，並將它儲存至 `windowstest`。

   ```
   name "windowstest"
   version "0.1.0"
   ```

1. 在 `recipes` 內建立 `windowstest` 目錄。

1. 使用下列配方建立 `default.rb` 檔案，並將它儲存至 `recipes` 目錄。

   ```
   Chef::Log.info("******Creating a data directory.******")
   
   directory 'C:\data' do
     rights :full_control, 'instance_name\username'
     inherits false
     action :create
   end
   ```

   將 *username* 取代為您的使用者名稱。

1. 將技術指南放在儲存庫中。

   若要在 Stacks OpsWorks 執行個體上安裝技術指南，您必須將其存放在儲存庫中，並提供 Stacks OpsWorks 將技術指南下載至執行個體所需的資訊。您可以將 Windows 技術指南存放為 S3 儲存貯體或 Git 儲存庫中的封存檔。此範例使用 S3 儲存貯體，因此您必須建立 `windowstest` 目錄的 .zip 封存。如需技術指南儲存庫的詳細資訊，請參閱[技術指南儲存庫](workingcookbook-installingcustom-repo.md)。

1. [將封存上傳至 S3 儲存貯體](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html)，並[將封存設為公有](https://docs.aws.amazon.com/AmazonS3/latest/UG/EditingPermissionsonanObject.html)，然後記錄封存的 URL。您也可以使用私有封存，但在此範例中公有封存就已足夠，而且使用起來更為簡單。

   傳遞至 Amazon S3 儲存貯體的內容可能包含客戶內容。如需移除敏感資料的詳細資訊，請參閱[如何清空 S3 儲存貯體？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/empty-bucket.html)或[如何刪除 S3 儲存貯體？](https://docs.aws.amazon.com/AmazonS3/latest/userguide/delete-bucket.html)。

您現在可以安裝技術指南，並執行配方。

**執行配方**

1. [編輯堆疊以啟用自訂技術指南](workingcookbook-installingcustom-enable.md)，然後指定下列設定。
   + **儲存庫類型** – **S3 封存**
   + **儲存庫 URL** – 您先前記錄的技術指南封存 URL

   接受其他設定的預設值，然後選擇 **Save (儲存)** 以更新堆疊組態。

1. [執行更新自訂技術指南堆疊命令](workingstacks-commands.md)，以在堆疊執行個體上安裝最新版的自訂技術指南 (包括線上執行個體)。如果存在舊版的技術指南，則此命令會予以覆寫。

1. 更新自訂技術指南完成後，透過使用配方執行[**執行配方堆疊**命令](workingstacks-commands.md)**以執行設定為 的配方****windowstest::default**。此命令會啟動 Chef 執行，內含包含您配方的回合清單。

成功執行配方之後，您就可以驗證配方。

**驗證 windowstest**

1. 檢查 [Chef 日誌](troubleshoot-debug-log.md)。選擇 ****opstest1 執行個體**日誌**欄中的顯示以顯示日誌。向下捲動，您會在接近底端看到您的日誌訊息。

   ```
   ...
   [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/attributes/customize.rb in the cache.
   [2014-07-31T17:01:45+00:00] INFO: Storing updated cookbooks/opsworks_cleanup/metadata.rb in the cache.
   [2014-07-31T17:01:46+00:00] INFO: ******Creating a data directory.******
   [2014-07-31T17:01:46+00:00] INFO: Processing template[/etc/hosts] action create (opsworks_stack_state_sync::hosts line 3)
   ...
   ```

1. 選擇**執行個體**，在執行個體**的動作**欄中選擇 **rdp**，並請求具有適當過期時間的 RDP 密碼。複製 DNS 名稱、使用者名稱和密碼。您接著可以搭配使用該資訊與 RDP 用戶端 (例如 Windows 遠端桌面連線用戶端) 來登入執行個體，然後驗證 `c:\data` 已存在。如需詳細資訊，請參閱[使用 RDP 登入](workinginstances-rdp.md)。

**注意**  
如果您的配方未正常運作，請參閱[故障診斷和修復手冊](cookbooks-101-opsworks-opsworks-instance.md#cookbooks-101-opsworks-opsworks-instance-bugs)中的故障診斷秘訣；其中大部分也適用於 Windows 執行個體。如果您想要在執行個體上編輯配方來測試修正，請在 `C:\chef\cookbooks`目錄中尋找您的技術指南，其中 OpsWorks Stacks 會安裝自訂技術指南。

## 自動執行配方
<a name="cookbooks-101-opsworks-opsworks-windows-event"></a>

**Execute Recipes (執行配方)** 命令是一種輕鬆測試自訂配方的方法，這是在其中大部分範例中使用它的原因。不過，實際上您通常會在執行個體生命週期中的標準點執行配方，例如在執行個體完成開機後或部署應用程式時。 OpsWorks Stacks 透過支援每一層的一組[生命週期事件](workingcookbook-events.md)，簡化執行個體上執行的配方：設定、設定、部署、取消部署和關機。您可以將配方指派給適當的生命週期事件，讓 OpsWorks Stacks 在 layer 的執行個體上自動執行配方。

您通常會在執行個體完成開機時立即建立目錄，這對應至安裝事件。以下顯示如何使用您稍早在範例中建立的相同堆疊，在安裝時執行範例配方。您可以針對其他事件使用相同的程序。

**在安裝時自動執行配方**

1. 選擇導覽窗格中的 **Layers (Layer)**，然後選擇 RecipeTest layer 之 **Recipes (配方)** 連結旁的鉛筆圖示。

1. 將 **windowstest::default** 新增至 layer 的 **Setup (安裝)** 配方，並選擇 **\$1** 將它新增至 layer，然後選擇 **Save (儲存)** 儲存組態。

1. 選擇 **Instances (執行個體)**，並將另一個執行個體新增至 layer，然後啟動它。

   執行個體應該命名為 `recipetest2`。開機完成後， OpsWorks Stacks 會執行 `windowstest::default`。

1. 在 `recipetest2` 執行個體上線之後，請驗證 `c:\data` 已存在。

**注意**  
如果您已將配方指派給安裝、設定或部署事件，則也可以手動執行它們，方法是使用[堆疊命令](workingstacks-commands.md) (安裝和設定) 或[部署命令](workingapps-deploying.md) (部署) 來觸發事件。請注意，如果您有多個指派給事件的配方，則這些命令會執行所有配方。