属性からデータバッグへのスタック設定の移行 - 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 アプリケーションの移行 を参照してください。

AWS OpsWorks スタックでは、Chef レシピに対して各種スタック設定を公開します。これらのスタック設定には、次のような値が含まれます。

  • スタッククックブックのソース URL

  • レイヤーボリューム設定

  • インスタンスのホスト名

  • Elastic Load Balancing DNS名

  • アプリケーションソースの URL

  • ユーザー名

レシピからスタックの設定を参照すると、スタック設定を直接レシピでハードコードするよりも堅牢になり、エラーが起きにくくなります。このトピックでは、これらのスタック設定にアクセスする方法、および Linux 用の Chef 11.10 以前のバージョンの属性から Chef 12 Linux のデータバッグに移行する方法について説明します。

Linux 用の Chef 11.10 以前のバージョンでは、スタック設定は Chef 属性として利用でき、Chef node オブジェクトまたは Chef 検索によってアクセスします。これらの属性には AWS OpsWorks ディレクトリで一連の JSON ファイルの /var/lib/aws/opsworks/chef スタックインスタンス上に保存されます。詳細については、「スタック設定およびデプロイ属性: Linux」を参照してください。

Chef 12 Linux で、スタック設定は、Chef データバッグとして使用でき、Chef 検索を通じてのみアクセスされます。データバッグは、/var/chef/runs/run-ID/data_bags ディレクトリの一連の JSON ファイルの AWS OpsWorks スタックインスタンスに保存されます。ここで、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 検索を使用します。

  • AWS OpsWorks、aws_opsworks_app などの AWS OpsWorks スタック属性名を使用する代わりに opsworks などの deploy スタックデータバッグ名を使用します。

詳細については、「AWS OpsWorks スタックのデータバッグのリファレンス」を参照してください。