

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

# Chef デプロイフックの使用
<a name="workingcookbook-extend-hooks"></a>

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

必要なタスクを実行するカスタムレシピを実装し、適切なレイヤーの 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 デプロイフックは標準のノード構文を使用して、レシピのようなノードオブジェクトにアクセスできます。また、デプロイフックは、指定した任意の[アプリケーション環境変数](workingapps-creating.md#workingapps-creating-environment)の値にアクセスできます。ただし、`new_resource.environment["VARIABLE_NAME"] ` を使用して、`ENV["VARIABLE_NAME"]` ではなく変数の値にアクセスする必要があります。