En el ámbito de la administración de sistemas Linux, Systemd se erige como una herramienta fundamental para gestionar servicios. En este artículo, les voy a explicar cómo es posible definir variables de entorno en los servicios de systemd para configurar tus programas.
Variables de Entorno
Los archivos de systemd se ubican en los siguientes directorios:
/etc/systemd/user/
- Aqui es donde los archivos específicos del usuario deben colocarse para que systemd los reconozca./etc/systemd/system/
- Aqui es donde los archivos para todo el sistema deben colocarse.
En lugar de
/etc/systemd
tambien pueden existir en/lib/systemd
o en/run/systemd
dependiendo de tu distribucion de linux.
En la sección [Service]
del archivo (por ejemplo, mi-servicio.service
), define las variables de entorno usando la directiva Environment=
:
[Service]
Environment="FOO=BAR"
Environment="BAZ=QUX"
Otra manera efectiva de gestionar variables es a través de archivos env. Para realizar esto, primero pon la ruta a tu archivo en el servicio.
[Service]
EnvironmentFile=/ruta/a/mi-servicio.env
Luego en mi-servicio.env
FOO=BAR
BAZ=QUX
Asegúrate de reemplazar /ruta/a/mi-servicio.env con la ruta real del archivo de entorno.
Después de haber modificado el archivo de servicio, recarga systemd para aplicar los cambios:
sudo systemctl daemon-reload
Finalmente, inicia o reinicia el servicio para incorporar las variables de entorno:
sudo systemctl start mi-servicio
Dentro del servicio, las variables de entorno se pueden acceder como variables normales. Por ejemplo, en un script de inicio:
#!/bin/bash
echo "El valor de MI_VARIABLE es: $FOO"
echo "El valor de OTRA_VARIABLE es: $BAZ"
Esto va imprimir:
El valor de MI_VARIABLE es: BAR
El valor de OTRA_VARIABLE es: QUX
Conclusión
Las variables de entorno te ofrecen un mecanismo potente para ajustar configuraciones, mejorar la seguridad y mantener la coherencia en diversos entornos. También facilita mucho el CI/CD, ya que solo hay que construir la aplicación y en la fase de despliegue solo es necesario reiniciar el servicio.