Chef の検索での属性値の取得 - AWS OpsWorks

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

Chef の検索での属性値の取得

重要

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

注記

このアプローチは Windows スタックと Chef 11.10 Linux スタックに使用できます。

スタック設定およびデプロイ属性値をノードオブジェクトから直接取得する操作は複雑になる場合があり、Windows スタックでは使用できません。別のアプローチは、Chef の検索を使用して目的の属性のクエリを実行することです。Chef サーバーに精通している場合は、Chef 検索が AWS OpsWorks スタックと少し異なる動作をしていることがわかります。 AWS OpsWorks スタックはローカルモードで Chef-client を使用するため、Chef 検索は Chef-zero と呼ばれるローカルバージョンの Chef サーバーに依存し、検索はリモートサーバーではなくインスタンスのノードオブジェクトにローカルに保存されているデータで動作します。

実際には、検索をローカルに保存されたデータに制限しても、 AWS OpsWorks スタックインスタンスのノードオブジェクトにスタック設定とデプロイ属性 が含まれているため、通常は問題ありません。通常、レシピが Chef サーバーから取得し、同じ名前を使用するデータの大部分が含まれているため、通常は AWS OpsWorks Stacks インスタンスで Chef サーバー用に記述された検索コードを変更せずに使用できます。詳細については、「Chef の検索の使用」を参照してください。

以下に示しているのは、検索クエリの基本構造です。

result = search(:search_index, "key:pattern")
  • 検索インデックスでは、クエリが適用される属性と、返されるオブジェクトのタイプを指定します。

  • キーでは、属性名を指定します。

  • パターンでは、取得する属性の値を指定します。

    特定の属性値のクエリを実行したり、ワイルドカードを使用して属性値の範囲のクエリを実行したりできます。

  • 結果として、クエリに一致するオブジェクトのリストが返されます。各オブジェクトは、複数の関連属性が保存されているハッシュテーブルです。

    例えば、node の検索インデックスを使用した場合、クエリによってインスタンスオブジェクトのリストが返され、各オブジェクトはクエリに一致した各インスタンスに対応しています。各オブジェクトは、インスタンスの設定 (ホスト名や IP アドレスなど) を定義する属性のセットが保存されているハッシュテーブルです。

たとえば、以下のクエリでは node 検索インデックスを使用しています。これは、スタックのインスタンス (Chef の用語ではノード) に適用される標準の Chef インデックスです。そのクエリでは myhost のホスト名とインスタンスが検索されます。

result = search(:node, "hostname:myhost")

検索によって、ホスト名が myhost であるインスタンスオブジェクトのリストが返されます。たとえば、最初のインスタンスのオペレーティングシステムが必要な場合、クエリは result[0][:os] で表すことになります。クエリで複数のオブジェクトが返される場合は、それらのオブジェクトのリストを取得して、必要な情報を得ることができます。

レシピで検索を使用する方法の詳細は、使用しているのが Linux スタックか Windows スタックかによって異なります。以下のトピックでは、両方のスタックタイプの例を示しています。