属性の優先順位 - AWS OpsWorks

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

属性の優先順位

重要

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

属性を一意に定義した場合、Chef によってその属性はノードオブジェクトに組み込まれるだけです。ただし、任意の属性ソースが任意の属性を定義できるため、同じ属性に複数の定義が存在し、値が異なる可能性があります。たとえば、組み込みの apache2 クックブックは node[:apache][:keepalive] を定義しますが、カスタム JSON またはカスタムクックブックでこの属性を定義することもできます。属性に複数の定義がある場合、後で説明する順序に従って定義が評価され、最も優先順位の高い定義がノードオブジェクトに組み込まれます。

属性は次のように定義されます。

node.type[:attribute][:sub_attribute][:...]=value

属性に複数の定義がある場合、 タイプによってどの定義が優先されるかが決まり、その定義がノードオブジェクトに組み込まれます。 AWS OpsWorks スタックは次の属性タイプを使用します。

  • default (デフォルト) - これは最も一般的なタイプであり、基本的に「この属性がまだ定義されていない場合はこの値を使用する」ことを意味します。属性のすべての定義が default タイプである場合、評価順序の最初の定義が優先され、それ以降の値は無視されます。 AWS OpsWorks スタックは、すべてのスタック設定とデプロイ属性定義を default type に設定することに注意してください。

  • normal (通常) - このタイプの属性は、評価順序で以前に定義されているすべての default または normal 属性を上書きします。たとえば、組み込みクックブックの最初の属性が default タイプであり、2 番目が normal タイプのユーザー定義属性である場合、2 番目の定義が優先されます。

  • set (セット) - これは、古いクックブックに表示される可能性のある非推奨のタイプです。このタイプは、優先順位が同じである normal に置き換えられました。

Chef は、他のすべての属性定義よりも優先される automatic タイプなど、いくつかの追加属性タイプをサポートしています。Chef の Ohai ツールによって生成された属性定義は、すべて automatic タイプであるため、事実上読み取り専用です。これは通常問題ではありません。上書きする理由はなく、 AWS OpsWorks スタックの属性とは異なるためです。ただし、カスタムクックブック属性の名前を指定するときには、Ohai 属性とは異なる名前になるように注意する必要があります。詳細については、「属性について」を参照してください。

注記

Ohai ツールは、コマンドラインから実行できる実行可能ファイルです。インスタンスの Ohai 属性のリストを取得するには、ターミナルウィンドウでインスタンスにログインし、ohai を実行します。それによって非常に長い出力が生成することに注意してください。

ノードオブジェクトにさまざまな属性定義を組み込む手順を以下に示します。

  1. カスタムスタック設定属性をスタック設定属性とデプロイ属性にマージします。

    カスタム JSON の属性は、スタックまたは特定のデプロイに対して設定できます。これらの属性は最初に評価されるため、事実上 normal タイプです。1 つ以上のスタック設定 の属性がカスタム JSON でも定義されている場合、カスタム JSON の値が優先されます。それ以外の場合、 AWS OpsWorks スタックによってカスタム JSON 属性はスタック設定に組み込まれるだけです。

  2. デプロイカスタム JSON 属性をスタック設定属性とデプロイ属性にマージします。

    カスタムのデプロイ JSON 属性も実際は normal タイプであるため、組み込みおよびカスタムのスタック設定 JSON や組み込みのデプロイ JSON より優先されます。

  3. インスタンスのノードオブジェクトにスタック設定およびデプロイ属性をマージします。

  4. インスタンスの組み込みクックブック属性をノードオブジェクトにマージします。

    組み込みクックブック属性はすべて default タイプです。1 つまたは複数の組み込みクックブック属性がスタック構成およびデプロイ属性でも定義されている場合 (通常はカスタム JSON で定義されているため)、スタック設定の定義は組み込みクックブックの定義よりも優先されます。他の組み込みクックブック属性はすべて、単にノードオブジェクトに組み込まれます。

  5. インスタンスのカスタムクックブック属性をノードオブジェクトにマージします。

    カスタムクックブック属性は、通常 normal タイプまたは default タイプです。一意の属性はノードオブジェクトに組み込まれます。カスタムクックブック属性がステップ 1~3 でも定義されている場合 (通常はカスタム JSON で定義されているため)、優先順位はカスタムクックブック属性のタイプによって異なります。

    • ステップ 1~3 で定義された属性は、カスタムクックブック default 属性よりも優先されます。

    • カスタムクックブック normal 属性は、ステップ 1~3 の定義よりも優先されます。

重要

スタック設定属性または組み込みクックブック属性を上書きするために、カスタムクックブックの default 属性を使用しないでください。カスタムクックブックの属性は最後に評価されるため、default 属性の優先順位は最も低く、何も上書きすることができません。