

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

# Windows OpsWorks スタックでのスタック固有の検索インデックスの使用
<a name="cookbooks-101-opsworks-opsworks-stack-config-search-opsworks"></a>

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

**注記**  
この例では、「[Windows インスタンスでのレシピの実行](cookbooks-101-opsworks-opsworks-windows.md)」の例を実行済みであることを前提としています。実行済みでない場合は、最初にその例を実行する必要があります。特に、インスタンスへの RDP アクセスを有効にする方法について説明しています。

OpsWorks スタックには、 に加えて次の検索インデックスが用意されています`node`。
+ `aws_opsworks_stack` – スタック設定。
+ `aws_opsworks_layer` – スタックのレイヤー設定。
+ `aws_opsworks_instance` – スタックのインスタンス設定。
+ `aws_opsworks_app` – スタックのアプリケーション設定。
+ `aws_opsworks_user` – スタックのユーザー設定。
+ `aws_opsworks_rds_db_instance` – 登録済み RDS インスタンスの接続情報。

これらのインデックスには標準の Chef 属性が含まれていますが、主に OpsWorks スタック固有の属性を取得することを目的としています。例えば、`aws_opsworks_instance` には、`status` など、インスタンスのステータスを渡す `online` 属性が含まれます。

**注記**  
可能であれば `node` を使用して、レシピが標準の Chef 手法に従うようにすることをお勧めします。例については、[Windows スタックでのノード検索インデックスの使用](cookbooks-101-opsworks-opsworks-stack-config-search-node.md)を参照してください。

この例では、 スタックインデックスを使用して OpsWorks OpsWorks スタック固有の属性の値を取得する方法を示します。この例は、1 つのインスタンスが属するカスタムレイヤーから成る Windows スタックに基づいています。Chef 検索を使用してインスタンスの OpsWorks スタック ID を取得し、結果を Chef ログに配置します。

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

**Stack を作成する**

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

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

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

1. デフォルト設定で IDCheckレイヤーに [24/7 t2.micro インスタンスを追加](workinginstances-add.md)し、[起動](workinginstances-starting.md)します。そのインスタンスの名前は iptest1 になります。

   OpsWorks スタックは、このインスタンスに自動的に `AWS-OpsWorks-RDP-Server`を割り当てます。 [RDP アクセスの有効化](cookbooks-101-opsworks-opsworks-windows.md#cookbooks-101-opsworks-opsworks-windows-rdp) は、許可されたユーザーがインスタンスにログインできるようにするインバウンドルールをこのセキュリティグループに追加する方法について説明します。

1. [**Permissions**]、[**Edit**]、[**SSH/RDP**]、[**sudo/admin**] の順に選択します。通常のユーザーは、インスタンスにログインするために、`AWS-OpsWorks-RDP-Server` セキュリティグループに加えて、この権限が必要です。
**注記**  
管理者としてログインすることもできますが、それには別の手順が必要です。詳細については、「[RDP でのログイン](workinginstances-rdp.md)」を参照してください。

**クックブックをセットアップするには**

1. `idcheck` という名前のディレクトリを作成し、そのディレクトリに移動します。

1. 以下の内容で `metadata.rb` ファイルを作成し、`opstest` に保存します。

   ```
   name "idcheck"
   version "0.1.0"
   ```

1. `recipes` 内に `idcheck` ディレクトリを作成し、以下のレシピを保存した `default.rb` ファイルをそのディレクトリに追加します。

   ```
   windowsserver = search(:aws_opsworks_instance, "hostname:idcheck*").first
   Chef::Log.info("**********The public IP address is: '#{windowsserver[:instance_id]}'**********")
   ```

   このレシピでは、`aws_opsworks_instance` 検索インデックスを持つChef検索を使用して、スタック内のホスト名が `idcheck` で始まる各インスタンスの [[instance attributes](data-bag-json-instance.md) (インスタンス属性)] を取得します。レイヤーの短縮名に整数を追加することでホスト名を作成する、デフォルトのテーマを使用する場合、このクエリによって IDCheckレイヤーのすべてのインスタンスが返されます。この例では、レイヤーのインスタンスは 1 つのみであることがわかっているため、レシピによって最初のインスタンスが `windowsserver` に渡されます。複数のインスタンスがある場合は、それらのインスタンスのリストを取得できます。

   レシピでは、スタックにこのホスト名のインスタンスが 1 つしかないことがわかっているため、最初の結果が正しくなります。スタックに複数のインスタンスがある場合は、他の属性で検索すると、複数の結果が返されることがあります。インスタンスの属性のリストについては、「[インスタンスデータバッグ (aws\$1opsworks\$1instance)](data-bag-json-instance.md)」を参照してください。

   インスタンス属性は基本的にハッシュテーブルであり、インスタンスの OpsWorks スタック ID は `instance_id` 属性に割り当てられるため、ID を と参照できます`windowsserver[:instance_id]`。レシピによって、対応する文字列がメッセージに挿入され、Chef ログに追加されます。

1. `ipaddress` クックブックの `.zip` アーカイブを作成し、[アーカイブを Amazon S3 バケットにアップロード](https://docs.aws.amazon.com/AmazonS3/latest/UG/UploadingObjectsintoAmazonS3.html)して、アーカイブの URL を記録しておきます。クックブックリポジトリの詳細については、「[クックブックリポジトリ](workingcookbook-installingcustom-repo.md)」を参照してください。

   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. カスタムクックブックの更新が終了したら、**実行するレシピ** を **idcheck::default** に設定して[**レシピの実行**スタックコマンド](workingstacks-commands.md)を実行することで、レシピを実行します。このコマンドによって Chef 実行が開始され、レシピで構成される実行リストが渡されます。execute\$1recipes ページを開いたままにします。

レシピが正常に実行された後、最新の execute\$1recipes イベントの [Chef ログ](troubleshoot-debug-log.md)を調べることで、その結果を確認できます。[**Running command execute\$1recipes page**] (コマンド execute\$1recipes 実行ページ) で、iptest1 インスタンスの [**Log**] (ログ) 列の [**show**] (表示) を選択すると、ログが表示されます。下にスクロールすると、末尾近くに以下のようなログメッセージが見つかります。

```
...
[2015-05-13T20:03:47+00:00] INFO: Storing updated cookbooks/nodesearch/recipes/default.rb in the cache.
[2015-05-13T20:03:47+00:00] INFO: Storing updated cookbooks/nodesearch/metadata.rb in the cache.
[2015-05-13T20:03:47+00:00] INFO: **********The instance ID is: 'i-8703b570'**********
[2015-05-13T20:03:47+00:00] INFO: Chef Run complete in 0.312518 seconds 
...
```