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!