En este post, quiero compartir cómo desarrollé un módulo de Terraform para desplegar un servidor PostgreSQL flexible en Azure, integrando la gestión de secretos con Azure Key Vault. Este módulo permite implementar de manera eficiente y repetible un servidor PostgreSQL, almacenando de forma segura las credenciales en Key Vault y configurando reglas de firewall para acceso seguro.
Recursos de Azure utilizados
El módulo desplegará los siguientes recursos de Azure:
Azure Key Vault: Servicio para gestionar y mantener de manera segura secretos, claves y certificados.
Servidor PostgreSQL Flexible: Servicio de base de datos PostgreSQL administrado por Azure.
Reglas de Firewall para PostgreSQL: Configuraciones para controlar el acceso a la base de datos.
Este módulo es ideal para aquellos que desean implementar un servidor PostgreSQL seguro y bien configurado en Azure, aprovechando las capacidades de Azure Key Vault para la gestión de credenciales.
Contenido de main.tf
El archivo main.tf es el corazón del módulo, donde se definen los recursos principales que vamos a crear.
Configuración del Proveedor de Azure
Primero, configuramos el proveedor de Azure, que es esencial para gestionar cualquier recurso en Azure con Terraform.
Generación de una Contraseña Aleatoria
Utilizamos el recurso random_password para generar una contraseña segura y aleatoria para el administrador del servidor PostgreSQL. Esto garantiza que la contraseña cumpla con los requisitos de seguridad al incluir caracteres especiales, mayúsculas y minúsculas.
Almacenamiento de Credenciales en Azure Key Vault
Para garantizar la seguridad de las credenciales del servidor PostgreSQL, almacenamos el nombre de usuario y la contraseña en Azure Key Vault. Este enfoque permite una gestión segura y centralizada de las credenciales.
Configuración de las Reglas de Firewall
Configuramos las reglas de firewall para permitir el acceso público al servidor PostgreSQL, definiendo las direcciones IP de inicio y fin que tienen permitido conectarse.
Despliegue del Servidor PostgreSQL Flexible
Finalmente, definimos el recurso para desplegar el servidor PostgreSQL flexible. Aquí especificamos parámetros importantes como el nombre, la ubicación, la versión de PostgreSQL, el SKU, las etiquetas, la zona de disponibilidad, el almacenamiento, la retención de backups y las credenciales del administrador.
Contenido de data.tf
En este archivo, obtenemos el ID del Key Vault existente para utilizarlo en el almacenamiento de secretos.
Contenido de outputs.tf
Este archivo define las salidas que nos interesan del módulo, como el ID y el nombre del servidor PostgreSQL, y el ID del Key Vault.
Contenido de variables.tf
Definimos las variables necesarias para nuestro módulo, asegurando flexibilidad y reutilización en diferentes entornos y configuraciones.
Fichero de configuración terraform.tfvars
Ejemplo de configuración para utilizar este módulo:
Conclusión
Este módulo de Terraform facilita la gestión de recursos en Azure, asegurando una configuración coherente y repetible. Al utilizar variables y condicionales, podemos adaptarlo a diferentes entornos y necesidades específicas. Este módulo es especialmente útil para aquellos que desean implementar un servidor PostgreSQL seguro en Azure, integrando la gestión de secretos con Azure Key Vault. ¡Espero que este post te haya proporcionado una visión clara de cómo desarrollar un módulo de Terraform para Azure! ¡Gracias por leer!