

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

# カスタムクックブック属性を使用した OpsWorks スタック属性の上書き
<a name="workingcookbook-cookbook-attributes"></a>

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

**注記**  
Windows スタックの場合、 OpsWorks スタックは組み込みレシピとカスタムレシピに別々の Chef 実行を使用します。つまり、このセクションで説明している手法を使用して、Windows スタック用の組み込み属性を上書きすることはできません。

カスタム JSON OpsWorks は、スタックスタック設定と組み込みクックブック属性を上書きする便利な方法ですが、いくつかの制限があります。特に、使用するたびに、カスタム JSON を手動で入力する必要があるため、定義を管理するための確実な方法がありません。よりよい方法として、カスタムクックブック属性ファイルを使用して組み込みの属性を上書きする方法があります。これによって、定義をソース管理の下に置くことができます。

カスタム属性ファイルを使用して OpsWorks スタック定義を上書きする手順は簡単です。

**OpsWorks スタック属性定義を上書きするには**

1. 「[クックブックとレシピ](workingcookbook.md)」の説明に従ってクックブックリポジトリをセットアップします。

1. 上書きする属性を含む組み込みクックブックと同じ名前でクックブックを作成します。たとえば、Apache の属性を上書きするには、カスタムクックブックの名前を apache2 にする必要があります。

1. クックブックに `attributes` フォルダを追加し、そのフォルダに `customize.rb` という名前のファイルを追加します。

1. 上書きする組み込みクックブックの属性ごとに、優先する値に設定された属性定義をファイルに追加します。属性は `normal` タイプ以上で、対応する OpsWorks Stacks 属性とまったく同じノード名である必要があります。ノード名を含む OpsWorks スタック属性の詳細なリストについては、[スタック設定およびデプロイ属性: Linux](attributes-json-linux.md)「」および「」を参照してください[組み込みクックブックの属性](attributes-recipes.md)。属性および属性ファイルの詳細については、「[属性ファイルについて](http://docs.chef.io/attributes.html)」を参照してください。
**重要**  
スタック属性を上書きするには、属性が OpsWorks `normal`型である必要があります。`default`型が優先されません。例えば、`customize.rb` ファイルに `default[:apache][:keepalivetimeout] = 5` という属性定義がある場合、組み込みの `apache.rb` 属性ファイル内の対応する属性が最初に評価され、優先されます。詳細については、「[属性の上書き](workingcookbook-attributes.md)」を参照してください。

1. 上書きする属性を持つ組み込みクックブックごとに、ステップ 2～4 を繰り返します。

1. スタックのカスタムクックブックを有効にし、 OpsWorks スタックがクックブックをスタックのインスタンスにダウンロードするために必要な情報を提供します。詳細については、「[カスタムクックブックのインストール](workingcookbook-installingcustom-enable.md)」を参照してください。

**注記**  
この手順の詳細なウォークスルーについては、「[組み込み属性の上書き](cookbooks-101-opsworks-attributes.md)」を参照してください。

後続のライフサイクルイベント、デプロイコマンド、スタックコマンドで使用されるノードオブジェクトに、 OpsWorks スタック値ではなく属性定義が含まれるようになりました。

たとえば、「`keepalivetimeout`」で説明した、組み込みの の `logrotate schedule` および [カスタム JSON を指定する方法](workingcookbook-json-override.md#workingcookbook-json-override-specify) の設定を上書きするには、`apache2`apache クックブックをリポジトリに追加し、次のような内容の `customize.rb` ファイルをクックブックの `attributes` フォルダに追加します。

```
normal[:apache][:keepalivetimeout] = 5
normal[:apache][:logrotate][:schedule] = 'weekly'
```

**重要**  
関連する組み込み属性ファイルのコピーを変更して、 OpsWorks スタック属性を上書きしないでください。例えば、`apache.rb` を `apache2/attributes` フォルダにコピーし、その設定の一部を変更すると、基本的に組み込みファイル内のすべての属性が上書きされます。レシピでは、コピーの属性定義が使用され、組み込みファイルは無視されます。 OpsWorks スタックによって後で組み込みの属性ファイルが変更された場合、手動でコピーを更新しない限り、レシピでは変更内容にアクセスできません。  
このような状況を回避するために、組み込みのすべてのクックブックには空の `customize.rb` 属性ファイルが含まれています。このファイルは、`include_attribute` ディレクティブを介してすべてのモジュールで必要です。`customize.rb` のコピーで属性を上書きすることによって、その特定の属性にのみ変更を反映できます。レシピは組み込みの属性ファイルから他の属性値を取得し、上書きしなかった属性の現在の値を自動的に取得します。  
このアプローチでは、クックブックリポジトリ内の属性の数を少数に抑えることができます。これにより、メンテナンスのオーバーヘッドが削減され、将来のアップグレードの管理が容易になります。