

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

# Windows スタックでのノード検索インデックスの使用
<a name="cookbooks-101-opsworks-opsworks-stack-config-search-node"></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 アクセスを有効にする方法について説明しています。

1 つのインスタンスが属するカスタムレイヤーから成る Windows スタックに基づいています。Chef の検索で `node` 検索インデックスを使用してサーバーのパブリック IP アドレスを取得し、アドレスを `C:\tmp` ディレクトリのファイルに保存します。以下に、この例のスタックを作成する方法を簡単に示します。詳細については、「[新しいスタックを作成する](workingstacks-creating.md)」を参照してください。

**Stack を作成する**

1. [OpsWorks スタックコンソール](https://console.aws.amazon.com/opsworks/)を開いて [**Add Stack**] を選択します。

1. 以下の設定を指定し、その他の設定はデフォルト値を受け入れて、[**Add Stack**] を選択します。
   + **Name** (名前) – NodeSearch
   + **Region** (リージョン) – 米国西部 (オレゴン)

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

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

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

   OpsWorks スタックは、このインスタンスに自動的に `AWS-OpsWorks-RDP-Server`を割り当てます。これにより、承認されたユーザーはインスタンスにログインできます。

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

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

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

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

   ```
   name "nodesearch"
   version "0.1.0"
   ```

1. `recipes` 内に `nodesearch` ディレクトリを作成します。

1. 次のレシピで `default.rb` ファイルを作成し、`recipes` ディレクトリに保存します。

   ```
   directory 'C:\tmp' do
     rights :full_control, 'Everyone'
     recursive true
     action :create
   end
   
   windowsserver = search(:node, "hostname:iptest*").first
   Chef::Log.info("**********The public IP address is: '#{windowsserver[:ipaddress]}'**********")
   
   file 'C:\tmp\addresses.txt' do
     content "#{windowsserver[:ipaddress]}"
     rights :full_control, 'Everyone'
     action :create
   end
   ```

   このレシピでは、以下のような処理を実行します。

   1. ディレクトリリソースを使用して、ファイルの `C:\tmp` ディレクトリを作成します。

      このリソースの詳細については、「[例 3: ディレクトリの作成](cookbooks-101-basics-directories.md)」を参照してください。

   1. Chef の検索で `node` 検索インデックスを使用して、ノード (インスタンス) と `iptest` で始まるホスト名のリストを取得します。

      レイヤーの短縮名に整数を追加することでホスト名を作成する、デフォルトのテーマを使用する場合、このクエリによって IPTestレイヤーのすべてのインスタンスが返されます。この例では、レイヤーのインスタンスは 1 つのみであることがわかっているため、レシピによって最初のインスタンスが `windowsserver` に渡されます。複数のインスタンスがある場合は、それらのインスタンスのリストを取得できます。

   1. IP アドレスを含むメッセージをこの実行のために Chef のログに追加します。

      `windowsserver` オブジェクトはハッシュテーブルであるため、その `ipaddress` 属性がインスタンスのパブリック IP アドレスに設定されているため、以降のレシピコードでそのアドレスを `windowsserver[:ipaddress]` として参照できます。レシピによって、対応する文字列がメッセージに挿入され、Chef ログに追加されます。

   1. `file` のリソースを使用して、その IP アドレスを含むファイルを `C:\tmp\addresses.txt` という名前で作成します。

      リソースの `content` 属性には、ファイルに追加する内容 (この場合はパブリック IP アドレス) を指定します。

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

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

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

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

   ```
   ...
   [2015-05-13T18:55:47+00:00] INFO: Storing updated cookbooks/nodesearch/recipes/default.rb in the cache.
   [2015-05-13T18:55:47+00:00] INFO: Storing updated cookbooks/nodesearch/metadata.rb in the cache.
   [2015-05-13T18:55:47+00:00] INFO: **********The public IP address is: '192.0.0.1'**********
   [2015-05-13T18:55:47+00:00] INFO: Processing directory[C:\tmp] action create (nodesearch::default line 1)
   [2015-05-13T18:55:47+00:00] INFO: Processing file[C:\tmp\addresses.txt] action create (nodesearch::default line 10) 
   ...
   ```

1. [RDP を使用してインスタンスにログイン](workinginstances-rdp.md)し、`C:\tmp\addresses.txt` の内容を調べます。