Chef 11.4 スタック用のレシピの実装 - AWS OpsWorks

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

Chef 11.4 スタック用のレシピの実装

重要

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

重要

カスタムクックブックまたはコミュニティクックブックに組み込みクックブックの名前を再使用しないでください。組込クックブックと同じ名前のカスタムクックブックは失敗する可能性があります。Chef 11.10、11.4、および 0.9 スタックで使用できる組み込みクックブックの完全なリストについては、「」の「opsworks-cookbooks」リポジトリ GitHubを参照してください。

Chef 11.4 スタックの大きな制限は、レシピで Chef の検索やデータバッグを使用できないことです。ただし、 AWS OpsWorks スタックは、次のような検索で取得する情報の多くを含むスタック設定とデプロイ属性を各インスタンスにインストールします。

  • ホストまたはアプリケーション名など、コンソールからのユーザー定義のデータ。

  • によって生成されたスタック設定データ AWS OpsWorks スタックのレイヤー、アプリケーション、インスタンスなどのスタックサービス、および IP アドレスなどの各インスタンスに関する詳細。

  • ユーザーから提供されたデータを含み、データバッグとほぼ同じ目的を果たせるカスタムJSON属性。

AWS OpsWorks スタックは、イベントの Chef 実行を開始する前に、各ライフサイクルイベントの各インスタンスにスタック設定とデプロイ属性の最新バージョンをインストールします。データは、標準の node[:attribute][:child_attribute][...] 構文を通じてレシピに使用できます。たとえば、スタック設定およびデプロイ属性にはスタック名 node[:opsworks][:stack][:name] が含まれています。

組み込みのレシピの 1 つに含まれる次のコードは、スタック名を取得し、その名前を使用して設定ファイルを作成します。

template '/etc/ganglia/gmetad.conf' do source 'gmetad.conf.erb' mode '0644' variables :stack_name => node[:opsworks][:stack][:name] notifies :restart, "service[gmetad]" end

スタック設定およびデプロイ属性の値の多くには、複数の属性が含まれています。必要な情報を取得するために、これらの属性を反復処理する必要があります。以下の例は、便宜JSON上オブジェクトとして表されるスタック設定属性とデプロイ属性からの抜粋を示しています。これには、最上位属性 deploy が含まれています。この最上位属性には、スタックの各アプリケーションの属性が含まれており、アプリケーションの短縮名が付いています。

{ ... "deploy": { "app1_shortname": { "document_root": "app1_root", "deploy_to": "deploy_directory", "application_type": "php", ... }, "app2_shortname": { "document_root": "app2_root", ... } }, ... }

各アプリケーション属性には、アプリケーションの特性を示す一連の属性が含まれています。例えば、deploy_to 属性は、アプリケーションのデプロイディレクトリを表します。次のコードは、アプリケーションの各デプロイディレクトリのユーザー、グループ、およびパスを設定します。

node[:deploy].each do |application, deploy| opsworks_deploy_dir do user deploy[:user] group deploy[:group] path deploy[:deploy_to] end ... end

スタック設定およびデプロイ属性の詳細については、「カスタマイズ AWS OpsWorks スタック」を参照してください。デプロイディレクトリの詳細については、「Deploy レシピ」を参照してください。

Chef 11.4 スタックはデータバッグをサポートしていませんが、カスタム JSONを指定することで、スタック設定とデプロイ属性に任意のデータを追加できます。レシピは、標準的な Chef のノード構文を使用して、データにアクセスできます。詳細については、「カスタム の使用 JSON」を参照してください。

暗号化されたデータバッグの機能が必要な場合、選択肢の 1 つとして、プライベート Amazon S3 バケットなどの安全な場所に機密性の高い属性を保存する方法があります。その後、レシピはすべての にインストールされている AWS Ruby SDKを使用できます。 AWS OpsWorks スタックインスタンス — バケットからデータをダウンロードします。

注記

各 AWS OpsWorks スタックインスタンスにはインスタンスプロファイルがあります。関連付けられたIAMロールは、インスタンスで実行されているアプリケーションでアクセスできるAWSリソースを指定します。レシピで Amazon S3 バケットにアクセスするためには、ロールのポリシーに次のようなステートメントを含めて、指定されたバケットからファイルを取得するアクセス許可を付与する必要があります。

"Action": ["s3:GetObject"], "Effect": "Allow", "Resource": "arn:aws:s3:::amzn-s3-demo-bucket/*",

インスタンスプロファイルの詳細については、「EC2 インスタンスで実行されるアプリケーションのアクセス許可の指定」を参照してください。