Windows AWS OpsWorks スタックでのスタック固有の検索インデックスの使用 - AWS OpsWorks

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

Windows AWS OpsWorks スタックでのスタック固有の検索インデックスの使用

重要

この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行に関するご質問は、 AWS re:Post または AWS Premium Support を通じて AWS Support チームにお問い合わせください。

注記

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

AWS OpsWorks スタックは、 に加えて以下の検索インデックスを提供しますnode

  • aws_opsworks_stack – スタック設定。

  • aws_opsworks_layer – スタックのレイヤー設定。

  • aws_opsworks_instance – スタックのインスタンス設定。

  • aws_opsworks_app – スタックのアプリケーション設定。

  • aws_opsworks_user – スタックのユーザー設定。

  • aws_opsworks_rds_db_instance – 登録済み RDS インスタンスの接続情報。

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

注記

可能であれば node を使用して、レシピが標準の Chef 手法に従うようにすることをお勧めします。例については、Windows スタックでのノード検索インデックスの使用を参照してください。

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

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

Stack を作成する
  1. AWS OpsWorks スタックコンソールを開いて [+ Stack] を選択します。以下の設定を指定し、その他の設定はデフォルト値を受け入れて、[Add Stack] を選択します。

    • Name (名前) – IDSearch

    • リージョン – 米国西部 (オレゴン)

      この例はいずれのリージョンでも動作しますが、チュートリアルでは米国西部 (オレゴン) を使用することをお勧めします。

    • Default operating system (デフォルトのオペレーティングシステム) – Microsoft Windows Server 2012 R2

  2. [Add a layer] を選択し、以下の設定を使用してスタックにカスタムレイヤーを追加します。

    • Name (名前) – IDCheck

    • Short name (短縮名) – idcheck

  3. デフォルト設定で IDCheckレイヤーに 24/7 t2.micro インスタンスを追加し、起動します。そのインスタンスの名前は iptest1 になります。

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

  4. [Permissions]、[Edit]、[SSH/RDP]、[sudo/admin] の順に選択します。通常のユーザーは、インスタンスにログインするために、AWS-OpsWorks-RDP-Server セキュリティグループに加えて、この権限が必要です。

    注記

    管理者としてログインすることもできますが、それには別の手順が必要です。詳細については、「RDP でのログイン」を参照してください。

クックブックをセットアップするには
  1. idcheck という名前のディレクトリを作成し、そのディレクトリに移動します。

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

    name "idcheck" version "0.1.0"
  3. 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 (インスタンス属性)] を取得します。レイヤーの短縮名に整数を追加することでホスト名を作成する、デフォルトのテーマを使用する場合、このクエリによって IDCheckレイヤーのすべてのインスタンスが返されます。この例では、レイヤーのインスタンスは 1 つのみであることがわかっているため、レシピによって最初のインスタンスが windowsserver に渡されます。複数のインスタンスがある場合は、それらのインスタンスのリストを取得できます。

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

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

  4. ipaddress クックブックの .zip アーカイブを作成し、アーカイブを Amazon S3 バケットにアップロードして、アーカイブの URL を記録しておきます。クックブックリポジトリの詳細については、「クックブックリポジトリ」を参照してください。

    Amazon S3 バケットに配信されるコンテンツには、カスタマーコンテンツが含まれている場合があります。機密データの削除の詳細については、「S3 バケットを空にする方法」または「S3 バケットを削除する方法」を参照してください。

これで、クックブックをインストールし、レシピを実行できるようになりました。

クックブックをインストールし、レシピを実行するには
  1. カスタムクックブックを有効にするようにスタックを編集し、以下の設定を指定します。

    • Repository type (リポジトリタイプ) – S3 Archive (アーカイブ)

    • Repository URL (リポジトリの URL) - 前の手順で記録したクックブックアーカイブ URL

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

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

  3. カスタムクックブックの更新が終了したら、実行するレシピidcheck::default に設定してレシピの実行スタックコマンドを実行することで、レシピを実行します。このコマンドによって Chef 実行が開始され、レシピで構成される実行リストが渡されます。execute_recipes ページを開いたままにします。

レシピが正常に実行された後、最新の execute_recipes イベントの Chef ログを調べることで、その結果を確認できます。[Running command execute_recipes page] (コマンド execute_recipes 実行ページ) で、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 ...