Utilice el ENV Luke! (tambi茅n conocido como: simular el ENV en OpsWorks usando Chef y Dotenv)

OpsWorks es un software impresionante, pero a veces carece de la zona de confort que tanto amamos a los desarrolladores.
Una caracter铆stica que realmente extra帽o es la capacidad de configurar mi aplicaci贸n usando variables ENV.
No conozco ninguna forma f谩cil (es decir, como Heroku) para crear variables de entorno en OpsWorks que la aplicaci贸n pueda consumir.

Afortunadamente, OpsWorks se basa en Chef y se puede personalizar de la forma que desee.
Tenga cuidado, no siempre es un camino f谩cil, se requieren conocimientos b谩sicos de Chef, la interfaz es bastante complicada, pero al final hace el trabajo.

隆Entonces dec铆amos medio ambiente !
Sabemos que el entorno no es compatible con OpsWorks, por lo que lo que realmente necesitamos es simularlo de alguna manera.
Una soluci贸n com煤n entre los desarrolladores de Rails es la gema Dotenv que carga el archivo .enven la ra铆z de tu aplicaci贸n y crea las claves correspondientes en el ENVobjeto.

Asumir茅 que ya ha creado una pila en OpsWorks con una capa de aplicaci贸n Rails.

Lado de rieles

Agregue la gema Dotenv a su Gemfile

gem 'dotenv-rails'

ejecutar paquete

$ bundle

tan pronto como sea posible, cargue el entorno a trav茅s de Dotenv

# application.rb
require
File.expand_path('../boot', __FILE__)
require
'dotenv'
Dotenv.load

enviar el nuevo c贸digo a Github

Lado de OpsWorks

Desde el panel de Stack, haga clic en stack settings, seleccione s铆 para , elija Git como tipo de repositorio e ins茅rtelo como URL del repositorio. Si desea utilizar un repositorio privado, tambi茅n debe ingresar la clave privada SSH. Elija su rama ( en este caso) y agregue el siguiente JSON en el cuadro Use custom Chef cookbookshttps://github.com/mikamai/opsworks-dotenv

masterCustom JSON

{
"deploy":{
"your_app_name":{
"symlink_before_migrate":{
".env" : ".env"
},
"app_env": {
"YOUR_ENV_KEY": "KEY_VALUE",
"ANOTHER_ENV_KEY": "SECOND_VALUE"
}
}
}
}

No olvide la symlink_before_migrateclave, le dice a Chef que vincule el archivo creado en la carpeta de implementaci贸n compartida a la carpeta de implementaci贸n actual, para que la aplicaci贸n Rails pueda recogerlo. Para recuperar el valor, vaya a la p谩gina Aplicaciones en la consola de AWS, haga clic en el nombre de la aplicaci贸n que desea configurar y, desde all铆, copie la propiedad de la aplicaci贸n. .env

your_app_nameshort name

El 煤ltimo paso es indicarle a Chef que ejecute su receta en cada implementaci贸n.
Haga clic en el enlace de recetas en la secci贸n de la capa Rails

Capas de OpsWorks

Agregue la receta personalizada y haga clic en el 铆cono m谩s (el nombre de la receta es exacto rails::dotenv)

Recetas personalizadas

Debe tener un aspecto como este

Recetas personalizadas agregadas

Haga clic en guardar en la esquina inferior derecha y actualice sus libros de cocina personalizados haciendo clic en Stacky luego. Run command

Actualizar libros de cocina personalizados

Este paso debe realizarse cada vez que se agrega o actualiza una receta en el libro de cocina personalizado.

Ahora puede implementar su aplicaci贸n y disfrutar de su nuevo ENV brillante.

TL; DR : agregue Dotenvgema, clone https://github.com/mikamai/opsworks-dotenv, agr茅guelo como libro de cocina de chef personalizado,
ejecute la rails::dotenv receta en cada implementaci贸n, 隆sea feliz!