翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。
属性からデータバッグへのスタック設定の移行
重要
この AWS OpsWorks Stacks サービスは 2024 年 5 月 26 日にサポート終了となり、新規および既存のお客様の両方で無効になっています。できるだけ早くワークロードを他のソリューションに移行することを強くお勧めします。移行についてご質問がある場合は、 AWS re:Post
AWS OpsWorks スタックは、さまざまなスタック設定を Chef レシピに公開します。これらのスタック設定には、次のような値が含まれます。
-
スタッククックブックのソース URL
-
レイヤーボリューム設定
-
インスタンスのホスト名
-
Elastic Load Balancing DNS名
-
アプリケーションソースの URL
-
ユーザー名
レシピからスタックの設定を参照すると、スタック設定を直接レシピでハードコードするよりも堅牢になり、エラーが起きにくくなります。このトピックでは、これらのスタック設定にアクセスする方法、および Linux 用の Chef 11.10 以前のバージョンの属性から Chef 12 Linux のデータバッグに移行する方法について説明します。
Linux 用の Chef 11.10 以前のバージョンでは、スタック設定は Chef 属性node
オブジェクトまたは Chef 検索によってアクセスします。これらの属性は、 /var/lib/aws/opsworks/chef
ディレクトリ内の一連の JSON ファイルの AWS OpsWorks スタックインスタンスに保存されます。詳細については、「スタック設定およびデプロイ属性: Linux」を参照してください。
Chef 12 Linux で、スタック設定は、Chef データバッグ/var/chef/runs/
、 ディレクトリ内の一連の JSON ファイル内の AWS OpsWorks スタックインスタンスに保存されます。run-ID
/data_bagsここで run-ID
は、インスタンスで実行される各 Chef に AWS OpsWorks スタックが割り当てる一意の ID です。スタック設定は、現在では Chef 属性として利用できないので、Chef node
オブジェクトを通じてスタック設定にアクセスすることはできません。詳細については、を参照してくださいAWS OpsWorks スタックデータバッグリファレンス
たとえば、Linux 用の Chef 11.10 以前のバージョンでは、次のレシピコードで Chef node
オブジェクトを使用して、アプリケーションの短縮名およびソース URL を表す属性を取得します。次に、Chef ログを使用してこれら 2 つの属性値を書き込みます。
Chef::Log.info ("********** The app's short name is '#{node['opsworks']['applications'].first['slug_name']}' **********") Chef::Log.info("********** The app's URL is '#{node['deploy']['simplephpapp']['scm']['repository']}' **********")
Chef 12 Linux では、次のレシピコードで aws_opsworks_app
検索インデックスを使用して、aws_opsworks_app
データバッグの最初のデータバッグ項目のコンテンツを取得します。次に、コードは、Chef ログに 2 つのメッセージを書き込みます。1 つはアプリケーションの短縮名のデータバッグコンテンツで、もう 1 つはアプリケーションのソース URL データバッグのコンテンツです。
app = search("aws_opsworks_app").first Chef::Log.info("********** The app's short name is '#{app['shortname']}' **********") Chef::Log.info("********** The app's URL is '#{app['app_source']['url']}' **********")
Linux 用 Chef 11.10 以前のバージョンからスタック設定にアクセスするレシピコードを Chef 12 Linux に移行するには、次のようにコードを変更する必要があります。
-
Chef 属性の代わりに Chef データバッグにアクセスします。
-
Chef
node
オブジェクトの代わりに Chef 検索を使用します。 -
opsworks
や などの AWS OpsWorks スタック属性名を使用する代わりにaws_opsworks_app
、 などの AWS OpsWorks スタックデータバッグ名を使用しますdeploy
。
詳細については、「AWS OpsWorks スタックデータバッグリファレンス」を参照してください。