Skip to content

This chef cookbook writes custom app configuration values from the OpsWorks stack's custom JSON to a config/application.yml file for each app. The figaro gem can help load those values directly into the application's ENV.

License

Notifications You must be signed in to change notification settings

pitchtarget/opsworks_custom_env

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

opsworks_custom_env

This cookbook allows Rails apps on Amazon OpsWorks to separate their configuration from their code. In keeping with Heroku's twelve-factor app, the configuration is made available to the app's environment.

To accomplish this, the cookbook maintains a config/application.yml file in each respective app's deploy directory. E.g.:

---
FOO: "http://www.yahoo.com"
BAR: "1001"

Your application can then load its settings directly from this file, or use Figaro to automatically make these settings available in the app's ENV (recommended).

Configuration values are specified in the stack's custom JSON. Example:

{
  "custom_env": {
    "my_app": {
      "FOO": "http://www.yahoo.com",
      "BAR": "1001"
    }
  },
  
  "deploy": {
    "my_app": {
      "deploy_to": "/srv/www/my_app",
      "symlink_before_migrate": {
        "config/application.yml": "config/application.yml"
      }
    }
  }
}

Note that the symlink_before_migrate attribute is necessary so that OpsWorks automatically symlinks the shared file when setting up release directories or deploying a new version. The deploy_to attribute is usually provided by OpsWorks, but re-including it in the custom JSON allows the recipe to be run outside of OpsWorks events.

Caveats

At the moment, only Unicorn/Nginx-style Rails apps are supported.

Opsworks Set-Up

  • Add custom_env, deploy_to, and symlink_before_migrate attributes to the stack's custom JSON as in the example above.
  • Associate the opsworks_custom_env::configure custom recipe with the Deploy event in your rails app's layer.

A deploy isn't necessary if you just want to update the custom configuration. Instead, update the stack's custom JSON, then choose to Run Command > execute recipes and enter opsworks_custom_env::configure into the Recipes to execute field. Executing the recipe will write an updated application.yml file and restart unicorn workers.

Copyright and License

(c) 2013 Joey Aghion, Artsy. See LICENSE for details.

About

This chef cookbook writes custom app configuration values from the OpsWorks stack's custom JSON to a config/application.yml file for each app. The figaro gem can help load those values directly into the application's ENV.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Ruby 100.0%