AWS OpsWorks
User Guide (API Version 2013-02-18)
« PreviousNext »
View the PDF for this guide.Go to the AWS Discussion Forum for this product.Go to the Kindle Store to download this guide in Kindle format.Did this page help you?  Yes | No |  Tell us about it...

Using Chef Deployment Hooks

You can customize deployment by implementing a recipe to perform the required customization and assign it to the appropriate layer's Deploy event. An alternative and sometimes simpler approach—especially if you don't need to implement a cookbook for other purposes—is to use Chef deployment hooks to run your customization code. In addition, custom Deploy recipes run after the deployment has already been performed by the built-in recipes. Deployment hooks allow you to interact during a deployment, for example, after the app's code is checked out of the repository but before Apache is restarted.

Chef deploys apps in four stages:

  • Checkout–Downloads the files from the repository

  • Migrate–Runs a migration, as required

  • Symlink–Creates symlinks

  • Restart–Restarts the application

Chef deployment hooks provide a simple way to customize a deployment by optionally running a user-supplied Ruby application after each stage completes. To use deployment hooks, implement one or more Ruby applications and place them in your app's /deploy directory. The application must have one of the following names, which determines when it runs.

  • before_migrate.rb runs after the Checkout stage is complete but before Migrate.

  • before_symlink.rb runs after the Migrate stage is complete but before Symlink.

  • before_restart.rb runs after the Symlink stage is complete but before Restart.

  • after_restart.rb runs after the Restart stage is complete.

Chef deployment hooks can access the node object just like recipes. For more information on how to use deployment hooks and what information a hook can access, see Deploy Phases.