Usar .env en Intellij IDEA
Cuando desarrollamos aplicaciones que corren ya sea un una maquina virtual, en con container en docker o en un gestor de contenedores como kubernetes es muy usual acceder a ciertos parámetros por medio de variables de sistema.
Usar estas variables de sistema son la forma más sencilla de externalizar parámetros sin recurrir a un especie de config server, delegando la tarea a quienes se encargan de gestionar nuestra aplicación, ya sea kubernetes con sus secretos, o que lo maneje la nube que se encarga de levantar sus lambdas, functions, etc.
En un entorno Local (.env
)
Una forma sencilla de lograr esto es mediante los archivos .env
, ya se está volviendo un estándar en muchos entornos, y existen herramientas para manejarlos, ya sea desde el propio ide (IDEA, VSCode, etc) o através de las herramientas de compilación (SBT, npm, mvn, etc). Esto porque declarar estas variables en tu entorno local te puede generar mucha basura, y puede afectar a otras aplicaciones, con la desventaja de que si creas las variables de forma local no puedes compartirlas.
Aquí nos vamos a centrar en Intellij IDEA, ya que existe un plugin muy cencillo de usar, EnvFile (https://plugins.jetbrains.com/plugin/7861-envfile).
Forma de uso
solo tienes que instalar el plugin y crear un archivo .env con las variables que necesites, ejemplo:
AZURE_PERSONAL_ACCESS_TOKEN=ea7vfei22laskueuperao3aa5uqai7s...
ACR=acr.azure.com
USER=demo01
Luego solo te toca editar la tarea (Run/Debug Configurations)
Y con eso queda listo para correr la aplicación.
Ventajas
- No modificar tu codigo para detectar estos archivos, ni ningun otro malabar dentro de tu código
- No tener que declarar variables globales que afecten a otras aplicaciones.
- Compartir este archivos entre tus compañeros, claro este archivo nunca se debe de versionar, ya que pueden contener valores sensibles.
- Poder tener un archivo con valores para pruebas unitarias.
- Extenderlo y poder tener un archivo por entorno.
Claro todo esto aplica cuando te veas en la necesidad de usar estas variables de sistema.
Espero que esto les sea útil, de igual forma espero darme un tiempo y subir otro mostrando como hacerlo desde SBT, la herramienta de compilación de scala que se puede usar tanto para microservicios como para bigdata.
Nota: Tambien recomiendo usar este plugin “.env file support” (https://plugins.jetbrains.com/plugin/9525--env-files-support) ya que nos permite editar estos archivos con resaltado de sintaxis.