カスタムクックブック属性を使用した AWS OpsWorks スタック属性の上書き - AWS OpsWorks

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

カスタムクックブック属性を使用した AWS OpsWorks スタック属性の上書き

重要

AWS OpsWorks Stacks は新規顧客を受け付けなくなりました。既存のお客様は、2024 年 5 月 26 日までは、通常どおり OpsWorks コンソール、API、CLI、および CloudFormation リソースを使用できます。その時点で廃止されます。この移行に備えて、できるだけ早くスタックを AWS Systems Manager に移行することをおすすめします。詳細については、「AWS OpsWorks Stacks サポート終了に関する FAQ」および「AWS Systems Manager アプリケーションマネージャへの AWS OpsWorks Stacks アプリケーションの移行」を参照してください。

注記

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

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

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

AWS OpsWorks スタック属性定義を上書きするには
  1. クックブックとレシピ」の説明に従ってクックブックリポジトリをセットアップします。

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

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

  4. 上書きする組み込みクックブックの属性ごとに、優先する値に設定された属性定義をファイルに追加します。属性は normal タイプ以上で、対応する AWS OpsWorks スタック属性とまったく同じノード名である必要があります。ノード名を含む AWS OpsWorks スタック属性の詳細なリストについては、「スタック設定およびデプロイ属性: Linux」および「組み込みクックブックの属性」を参照してください。属性および属性ファイルの詳細については、「属性ファイルについて」を参照してください。

    重要

    AWS OpsWorks スタック属性を上書きするには、属性が normal タイプである必要があります。default タイプは優先されません。例えば、customize.rb ファイルに default[:apache][:keepalivetimeout] = 5 という属性定義がある場合、組み込みの apache.rb 属性ファイル内の対応する属性が最初に評価され、優先されます。詳細については、「属性の上書き」を参照してください。

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

  6. スタックのカスタムクックブックを有効にし、AWS OpsWorks スタックでスタックにインスタンスにクックブックをダウンロードするために必要な情報を提供します。詳細については、「カスタムクックブックのインストール」を参照してください。

注記

この手順の詳細なウォークスルーについては、「組み込み属性の上書き」を参照してください。

これで、以降のライフサイクルイベント、デプロイコマンド、およびスタックコマンドで使用されるノードオブジェクトには、AWS OpsWorks スタックの値の代わりに、指定した属性定義が含まれます。

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

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

関連する組み込みの属性ファイルのコピーを変更することによって、AWS OpsWorks スタック属性を上書きしないでください。例えば、apache.rbapache2/attributes フォルダにコピーし、その設定の一部を変更すると、基本的に組み込みファイル内のすべての属性が上書きされます。レシピでは、コピーの属性定義が使用され、組み込みファイルは無視されます。AWS OpsWorks スタックによって後で組み込みの属性ファイルが変更された場合、手動でコピーを更新しない限り、レシピでは変更内容にアクセスできません。

このような状況を回避するために、組み込みのすべてのクックブックには空の customize.rb 属性ファイルが含まれています。このファイルは、include_attribute ディレクティブを介してすべてのモジュールで必要です。customize.rb のコピーで属性を上書きすることによって、その特定の属性にのみ変更を反映できます。レシピは組み込みの属性ファイルから他の属性値を取得し、上書きしなかった属性の現在の値を自動的に取得します。

このアプローチでは、クックブックリポジトリ内の属性の数を少数に抑えることができます。これにより、メンテナンスのオーバーヘッドが削減され、将来のアップグレードの管理が容易になります。