

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# Windows インスタンスでのレシピの実行
<a name="cookbooks-101-opsworks-opsworks-windows"></a>

**重要**  
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、[AWS re:Post](https://repost.aws/) または[AWS プレミアムサポート](https://aws.amazon.com/support)を通じて AWS サポート チームにお問い合わせください。

このトピックでは、基本的に「[Linux インスタンスでのレシピの実行](cookbooks-101-opsworks-opsworks-instance.md)」の簡略版であり、Windows スタックでレシピを実行する方法を示しています。最初に「[Linux インスタンスでのレシピの実行](cookbooks-101-opsworks-opsworks-instance.md)」を参照することをお勧めします。より詳細に説明されており、内容の大部分がいずれかのタイプのオペレーティングシステムに関連しているためです。

 OpsWorks Stacks Linux インスタンスでレシピを実行する方法については、「」を参照してください[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 スタックは一連のセキュリティグループを作成します。これには、 のような名前のものが含まれます。これは`AWS-OpsWorks-RDP-Server`、RDP アクセスを許可するために OpsWorks スタックがすべての Windows インスタンスにアタッチします。ただし、デフォルトでは、このセキュリティグループにはルールが存在しないため、インスタンスへの RDP アクセスを許可するインバウンドルールを追加する必要があります。

**RDP アクセスを許可するには**

1. [Amazon EC2 console](https://console.aws.amazon.com/ec2/v2/) (Amazon EC2 コンソール) を開き、スタックのリージョンに設定して、ナビゲーションペインから **[Security Groups]** (セキュリティーグループ) を選択します。

1. [**AWS-OpsWorks-RDP-Server**]、[**Inbound**]、[**Edit**] の順に選択します。

1. 以下の設定でルールを追加します。
   + **Type** (タイプ) - **RDP**
   + **Source** (ソース) – 許可される送信元 IP アドレス。

     通常は、自身の IP アドレスまたは指定した IP アドレス範囲（社内の IP アドレス範囲が一般的）へのインバウンド RDP リクエストを許可します。

**注記**  
後で説明するように、通常のユーザーに対して RDP アクセスを許可するようにユーザーアクセス権限を編集する必要があります。

詳細については、「[RDP でのログイン](workinginstances-rdp.md)」を参照してください。

## レシピの作成と実行
<a name="cookbooks-101-opsworks-opsworks-windows-run-recipe"></a>

以下に、この例のスタックを作成する方法を簡単に示します。詳細については、「[新しいスタックを作成する](workingstacks-creating.md)」を参照してください。

**Stack を作成する**

1. [OpsWorks スタックコンソール](https://console.aws.amazon.com/opsworks/)を開いて [**Add Stack**] を選択します。以下の設定を指定し、その他の設定はデフォルト値を受け入れて、[**Add Stack**] を選択します。
   + **Name** (名前) – WindowsRecipeTest
   + **リージョン** – 米国西部 (オレゴン)

     この例はいずれのリージョンでも動作しますが、チュートリアルでは米国西部 (オレゴン) を使用することをお勧めします。
   + **Default operating system** (デフォルトのオペレーティングシステム) – Microsoft Windows Server 2012 R2

1. [**Add a layer**] を選択し、以下の設定を使用してスタックに[カスタムレイヤーを追加](workinglayers-custom.md)します。
   + **Name** (名前) – RecipeTest
   + **Short name** (短縮名) – recipetest

1. デフォルト設定で RecipeTestレイヤーに [24/7 インスタンスを追加](workinginstances-add.md)し、[起動](workinginstances-starting.md)します。

   OpsWorks スタックは、このインスタンスに自動的に `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 用に修正しています。

**注記**  
 OpsWorks スタックの Windows インスタンスにクックブックを実装する場合、スタックの 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. リポジトリへのクックブックの保存

    OpsWorks スタックインスタンスにクックブックをインストールするには、そのクックブックをリポジトリに保存し、インスタンスにクックブックをダウンロードするために必要な情報を OpsWorks スタックに提供する必要があります。S3 バケットまたは Git リポジトリにアーカイブファイルとして Windows のクックブックを保存できます。この例では、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)し、以下の設定を指定します。
   + **Repository type** (リポジトリタイプ) – **S3 Archive** (アーカイブ)
   + **Repository URL** (リポジトリの URL) - 前の手順で記録したクックブックアーカイブ URL

   その他の設定ではデフォルト値を受け入れ、[**Save**] を選択してスタック設定を更新します。

1. [[Update Custom Cookbooks] スタックコマンドを実行](workingstacks-commands.md)します。カスタムクックブックの最新バージョンがスタックのインスタンス（オンラインインスタンスを含む）にインストールされます。以前のバージョンのクックブックがある場合は、このコマンドによって上書きされます。

1. カスタムクックブックの更新が終了したら、**実行するレシピ** を **windowstest::default** に設定して[**レシピの実行**スタックコマンド](workingstacks-commands.md)を実行することで、レシピを実行します。このコマンドによって Chef 実行が開始され、レシピで構成される実行リストが渡されます。

レシピが正常に実行された後で、それを検証できます。

**windowstest を検証するには**

1. [Chef ログ](troubleshoot-debug-log.md)を調べます。opstest1 インスタンスの **[Log]** (ログ) 列で **[show]** (表示) を選択すると、ログが表示されます。下へスクロールすると、下部にログメッセージが表示されます。

   ```
   ...
   [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. **Instances** (インスタンス) を選択し、インスタンスの **Actions** (アクション) 列で **[rdp]** を選択し、適切な有効期限を持つ RDP パスワードを要求します。DNS 名、ユーザー名、パスワードをコピーします。Windows Remote Desktop Connection クライアントなどの RDP クライアントでその情報を使用して、インスタンスにログインし、`c:\data` があることを確認できます。詳細については、「[RDP でのログイン](workinginstances-rdp.md)」を参照してください。

**注記**  
レシピが正しく実行されない場合、トラブルシューティングのヒントについては「[レシピのトラブルシューティングと修正](cookbooks-101-opsworks-opsworks-instance.md#cookbooks-101-opsworks-opsworks-instance-bugs)」を参照してください。それらのヒントのほとんどは Windows インスタンスにも当てはまります。インスタンスでレシピを編集して修正をテストする場合は、 OpsWorks スタックがカスタムクックブックをインストールする `C:\chef\cookbooks` ディレクトリでクックブックを探します。

## レシピの自動実行
<a name="cookbooks-101-opsworks-opsworks-windows-event"></a>

[**Execute Recipes**] コマンドは、カスタムレシピをテストするための便利な方法であるため、ここでの例のほとんどで使用しています。ただし、実際には、インスタンスの起動完了後やアプリケーションのデプロイ時など、インスタンスのライフサイクルの標準ポイントでレシピを実行します。 OpsWorks スタックは、各レイヤーの一連の[ライフサイクルイベント](workingcookbook-events.md)、セットアップ、設定、デプロイ、デプロイ解除、シャットダウンをサポートすることで、インスタンスでのレシピの実行を簡素化します。適切なライフサイクルイベントにレシピを割り当てることで、 OpsWorks スタックでレイヤーのインスタンスでレシピを自動的に実行させることができます。

通常は、インスタンスの起動が完了したら (Setup イベント)、すぐにディレクトリを作成します。以下に示しているのは、前の例で作成した同じスタックを使用して、セットアップ時にサンプルレシピを実行する方法です。他のイベントにも同じ手順を使用できます。

**セットアップ時にレシピを自動的に実行するには**

1. ナビゲーションペインで [**Layer**] を選択し、RecipeTestレイヤーの [**Recipes**] リンクの横にある鉛筆のアイコンを選択します。

1. **windowstest::default** をレイヤーの **Setup** (セットアップ) レシピに追加します。次に、**[\$1]** を選択してレイヤーに追加し、**[Save]** (保存) を選択して設定を保存します。

1. [**Instances**] を選択し、レイヤーに別のインスタンスを追加して、そのインスタンスを起動します。

   インスタンスの名前を `recipetest2` に変更する必要があります。起動が完了すると、 OpsWorks スタックは を実行します`windowstest::default`。

1. `recipetest2` インスタンスがオンラインになった後、`c:\data` があることを確認します。

**注記**  
Setup、Configure、または Deploy イベントにレシピを割り当てた場合は、[スタックコマンド](workingstacks-commands.md) (Setup および Configure) または[デプロイコマンド](workingapps-deploying.md) (Deploy) を使用してイベントをトリガーすることで、それらのレシピを手動で実行することもできます。イベントに複数のレシピが割り当てられている場合、これらのコマンドによってそれらのレシピがすべて実行されます。