

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

# Chef の検索での属性値の取得
<a name="cookbooks-101-opsworks-opsworks-stack-config-search"></a>

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

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

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

実際には、 OpsWorks スタックインスタンスのノードオブジェクトに[スタック設定とデプロイ属性](workingcookbook-json.md)が含まれているため、検索をローカルに保存されているデータに制限することは通常は重要ではありません。通常、レシピが Chef サーバーから取得し、同じ名前を使用するデータの大部分が含まれているわけではないため、通常は スタックインスタンスで Chef OpsWorks サーバー用に記述された検索コードを変更せずに使用できます。詳細については、「[Chef の検索の使用](workingcookbook-chef11-10.md#workingcookbook-chef11-10-search)」を参照してください。

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

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

  特定の属性値のクエリを実行したり、ワイルドカードを使用して属性値の範囲のクエリを実行したりできます。
+ 結果として、クエリに一致するオブジェクトのリストが返されます。各オブジェクトは、複数の関連属性が保存されているハッシュテーブルです。

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

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

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

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

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

**Topics**
+ [Linux スタックでの検索の使用](cookbooks-101-opsworks-opsworks-stack-config-search-linux.md)
+ [Windows スタックでの検索の使用](cookbooks-101-opsworks-opsworks-stack-config-search-windows.md)