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": {
"symlink_before_migrate": {
"config/application.yml": "config/application.yml"
}
}
}
}
Note that the symlink_before_migrate
attributes are necessary so that OpsWorks automatically symlinks the shared file when setting up release directories or deploying a new version.
At the moment, only Unicorn/Nginx-style Rails apps are supported.
The opsworks_custom_env::configure
recipe should be added as a custom recipe to the Setup, Configure, and Deploy events.
A deploy is not necessary to update custom application environment values. Instead, update the Stack's custom JSON, then choose to Run Command > execute recipes and enter opsworks_custom_env::update
into the Recipes to execute field. Executing this recipe will write an updated application.yml
file and restart the unicorn workers.