Chef デプロイフックの使用 - AWS OpsWorks

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

Chef デプロイフックの使用

重要

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

必要なタスクを実行するカスタムレシピを実装し、適切なレイヤーの Deploy イベントに割り当てることで、デプロイをカスタマイズできます。特に他の目的でクックブックを実装する必要がない場合は、Chef デプロイメントフックを使用してカスタマイズコードを実行する、別のシンプルなアプローチがあります。さらに、組み込みレシピによってデプロイメントが実行された後に、カスタム Deploy レシピを実行します。デプロイフックを使用すると、デプロイメントの途中に(たとえば、アプリケーションのコードがリポジトリからチェックアウトされた後、Apache が再起動される前に)操作することが可能になります。

Chef では、次の 4 つのステージでアプリケーションをデプロイします。

  • Checkout (チェックアウト) - リポジトリからファイルをダウンロードします。

  • Migrate (移行) - 必要に応じて移行を実行します。

  • Symlink (シンボリックリンク) - シンボリックリンクを作成します。

  • Restart (再起動) — アプリケーションを再起動します。

Chef デプロイフックを使用すると、各ステージの完了後にユーザーが提供する Ruby アプリケーションを必要に応じて実行することで、デプロイメントを簡単にカスタマイズできます。デプロイフックを使用するには、1 つ以上の Ruby アプリケーションを実装し、アプリケーションの /deploy ディレクトリに配置します。(アプリケーションに /deploy ディレクトリがない場合は、APP_ROOT レベルに 1 つ作成します)。アプリケーションには、いつ実行するかを示す次のいずれかの名前を指定する必要があります。

  • before_migrate.rb – チェックアウトステージの完了後、移行ステージの前に実行します。

  • before_symlink.rb – 移行ステージの完了後、シンボリックリンクステージの前に実行します。

  • before_restart.rb – シンボリックリンクステージの完了後、再起動ステージの前に実行します。

  • after_restart.rb – 再起動ステージの完了後に実行します。

Chef デプロイフックは標準のノード構文を使用して、レシピのようなノードオブジェクトにアクセスできます。また、デプロイフックは、指定した任意のアプリケーション環境変数の値にアクセスできます。ただし、new_resource.environment["VARIABLE_NAME"] を使用して、ENV["VARIABLE_NAME"] ではなく変数の値にアクセスする必要があります。