Linux スタックでの検索の使用 - AWS OpsWorks

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

Linux スタックでの検索の使用

重要

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

この例は、1 つの PHP アプリケーションサーバーが属する Linux スタックに基づいています。Chef の検索を使用してサーバーのパブリック IP アドレスを取得し、アドレスを /tmp ディレクトリのファイルに保存します。基本的には「属性値の直接取得 」と同じ情報をノードオブジェクトから取得しますが、コードは大幅に簡素になり、スタック設定およびデプロイ属性の構造の詳細に依存しません。

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

注記

AWS OpsWorks スタックインスタンスでカスタムレシピを実行したことがない場合は、まずこのLinux インスタンスでのレシピの実行例を実行する必要があります。

Stack を作成する
  1. AWS OpsWorks スタックコンソールを開いて [Add Stack] をクリックします。

  2. 次の設定を指定し、その他の設定はデフォルト値を受け入れて、[Add Stack] をクリックします。

    • Name (名前) – SearchJSON

    • Default SSH key (デフォルト SSH キー) - Amazon EC2 キーペア

    Amazon EC2 キーペアの作成が必要な場合は、「Amazon EC2 Key Pairs」(Amazon EC2 キーペア) を参照してください。キーペアがインスタンスと同じ AWS リージョンに属している必要があることに注意してください。この例では、米国西部 (オレゴン) リージョンを使用します。

  3. [Add a layer] (レイヤーの追加) をクリックし、デフォルト設定でスタックに [add a PHP App Server layer] (PHP アプリケーションサーバーレイヤー) を追加します。

  4. デフォルト設定でレイヤーに 24/7 インスタンスを追加し、起動します。

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

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

    name "searchjson" version "0.1.0"
  3. recipes 内に searchjson ディレクトリを作成します。

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

    phpserver = search(:node, "layers:php-app").first Chef::Log.info("**********The public IP address is: '#{phpserver[:ip]}'**********") file "/tmp/ip_addresses" do content "#{phpserver[:ip]}" mode 0644 action :create end

    Linux スタックの場合、node 検索インデックスがサポートされています。レシピによって、このインデックスが使用されて、php-app レイヤーのインスタンスのリストが取得されます。レイヤーのインスタンスは 1 つのみであることがわかっているため、レシピによって最初のインスタンスが phpserver に渡されます。レイヤーに複数のインスタンスがある場合は、それらのインスタンスのリストを取得して、必要な情報を得ることができます。リストの各オブジェクトは、インスタンスの属性のセットが保存されているハッシュテーブルです。ip 属性をインスタンスのパブリック IP アドレスに設定しているため、以降のレシピコードではそのアドレスを phpserver[:ip] として参照できます。

    Chef ログへのメッセージの追加後、レシピによって file リソースが使用されて、ip_addresses という名前のファイルが作成されます。content 属性は phpserver[:ip] の文字列表現で設定します。Chef によって ip_addresses が作成されるとき、その文字列がファイルに追加されます。

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

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

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

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

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

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

    その他の設定にはデフォルト値を使用し、[Save] をクリックしてスタック設定を更新します。

  2. カスタムレイヤー設定を編集し、レイヤーの Setup イベントに を割り当てsearchjson::defaultます。 AWS OpsWorks スタックは、インスタンスの起動後、または Setup イベントを明示的にトリガーした場合にレシピを実行します。

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

  4. Setup スタックコマンドを実行してレシピを実行します。このコマンドによってインスタンスの Setup イベントがトリガーされ、searchjson::default が実行されます。[Running command setup page] を開いたままにしておきます。

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

searchjson を検証するには
  1. 最初のステップは、最新の Setup イベントの Chef ログを調べることです。[Running command setup page] (コマンドセットアップを実行ページ) で、php-app1 インスタンスの [Log] (ログ) 列の [show] (表示) をクリックすると、ログが表示されます。下にスクロールすると、中央近くに次のようなログメッセージが表示されます。

    ... [2014-09-05T17:08:41+00:00] WARN: Previous bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] WARN: Current bash[logdir_existence_and_restart_apache2]: ... [2014-09-05T17:08:41+00:00] INFO: **********The public IP address is: '192.0.2.0'********** [2014-09-05T17:08:41+00:00] INFO: Processing directory[/etc/sysctl.d] action create (opsworks_initial_setup::sysctl line 1) ...
  2. SSH を使用してインスタンスにログインし/tmp の内容を一覧表示します。この一覧には、IP アドレスが含まれている ip_addresses という名前のファイルがあるはずです。