Categorías

Última actualización 09 de marzo de 2020

Una sola aplicación siempre se ejecuta en varios entornos, incluido al menos en su máquina de desarrollo y en producción en Heroku. Una aplicación de código abierto puede implementarse en cientos de entornos diferentes.

Aunque todos estos entornos pueden ejecutar el mismo código, generalmente tienen configuraciones específicas del entorno. Por ejemplo, los entornos de preparación y producción de una aplicación pueden usar diferentes buckets de Amazon S3, lo que significa que también necesitan credenciales diferentes para esos buckets.

La configuración específica del entorno de una aplicación debe almacenarse en variables de entorno (no en el código fuente de la aplicación). Esto le permite modificar la configuración de cada entorno de forma aislada y evita que las credenciales seguras se almacenen en el control de versiones. Obtenga más información sobre cómo almacenar la configuración en el entorno.

En un host tradicional o cuando se trabaja localmente, a menudo se establecen variables de entorno en el archivo .bashrc. En Heroku, se usan vars de configuración.

Administrar var de configuración

Cada vez que establezca o elimine una var de configuración mediante cualquier método, se reinicia la aplicación y se crea una nueva versión.

Los valores var de configuración son persistentes: permanecen en su lugar en las implementaciones y reinicios de aplicaciones. A menos que necesite cambiar un valor, solo necesita configurarlo una vez.

Usando la CLI de Heroku

Los comandos heroku config de la CLI de Heroku facilitan la administración de las var de configuración de su aplicación.

Ver valores de var de configuración actuales

$ heroku configGITHUB_USERNAME: joesmithOTHER_VAR: production$ heroku config:get GITHUB_USERNAMEjoesmith

Establecer un var de configuración

$ heroku config:set GITHUB_USERNAME=joesmithAdding config vars and restarting myapp... done, v12GITHUB_USERNAME: joesmith

Eliminar un var de configuración

$ heroku config:unset GITHUB_USERNAMEUnsetting GITHUB_USERNAME and restarting myapp... done, v13

Mediante el Panel de control de Heroku

También puede editar var de configuración desde la pestaña Settings de su aplicación en el Panel de control de Heroku:

Var de configuración en el panel de control

Mediante la API de la plataforma

Puede administrar las var de configuración de su aplicación mediante programación con la API de la plataforma Heroku mediante un simple cliente HTTPS REST y estructuras de datos JSON. Necesita un token de acceso Heroku válido que represente a un usuario con los permisos adecuados en la aplicación.

Acceder a los valores var de configuración desde el código

Los var de configuración se exponen al código de la aplicación como variables de entorno. Por ejemplo, en Nodo.js puedes acceder al var de configuración DATABASE_URL de tu app con process.env.DATABASE_URL.

Ejemplos

Agregue algunas var de configuración para sus claves de cuenta S3:

$ cd myapp$ heroku config:set S3_KEY=8N029N81 S3_SECRET=9s83109d3+583493190Setting config vars and restarting myapp... done, v14S3_KEY: 8N029N81S3_SECRET: 9s83109d3+583493190

Configure su código para leer los var en tiempo de ejecución. Por ejemplo, en Ruby puede acceder a las variables de entorno utilizando el patrón ENV, por lo que ahora puede escribir un inicializador como este:

AWS::S3::Base.establish_connection!( :access_key_id => ENV, :secret_access_key => ENV)

En Nodo.js, use process.env para acceder a variables de entorno:

const aws = require('aws-sdk');let s3 = new aws.S3({ accessKeyId: process.env.S3_KEY, secretAccessKey: process.env.S3_SECRET});

En Java, puede acceder a él a través de llamadas a System.getenv('key'), de la siguiente manera:

S3Handler = new S3Handler(System.getenv("S3_KEY"), System.getenv("S3_SECRET"))

En Python, usando la biblioteca boto:

from boto.s3.connection import S3Connections3 = S3Connection(os.environ, os.environ)

Ahora, al implementar en Heroku, la aplicación utilizará las teclas establecidas en la configuración.

Políticas var de configuración

  • Las claves var de configuración deben usar solo caracteres alfanuméricos y el carácter de subrayado (_) para garantizar que sean accesibles desde todos los lenguajes de programación. Las claves var de configuración no deben incluir el carácter de guion.
  • Los datos var de configuración (la combinación de todas las claves y valores) no pueden exceder los 32 kb para cada aplicación.
  • Las claves var de configuración no deben comenzar con un doble guion bajo (__).
  • La clave de configuración de var no debe comenzar con HEROKU_ a menos que esté establecida por la propia plataforma Heroku.

Complementos y var de configuración

Si aprovisiona un complemento para su aplicación, generalmente agrega uno o más var de configuración a la aplicación. Los valores de estas var de configuración pueden ser actualizados por el proveedor de complementos en cualquier momento.

Consulte Los valores de complementos pueden cambiar para obtener más información sobre los complementos y cómo utilizan las var de configuración.

Configuración local

Use la herramienta de línea de comandos local de Heroku para ejecutar su aplicación localmente.

Modos de producción y desarrollo

Muchos lenguajes y marcos admiten un modo de desarrollo. Por lo general, esto permite una mayor depuración, así como la recarga dinámica o la recompilación de archivos de origen modificados.

Por ejemplo, en un entorno Ruby, puede establecer un var de configuración RACK_ENV a development para habilitar dicho modo.

Es importante comprender y realizar un seguimiento de estas var de configuración en una aplicación Heroku de producción. Si bien un modo de desarrollo suele ser excelente para el desarrollo, no lo es tanto para la producción, ya que puede degradar el rendimiento.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.