Variables de salida frente a fuentes de datos
Las salidas de Terraform y las fuentes de datos pueden parecer similares a primera vista, pero tienen distintos propósitos en sus flujos de trabajo de infraestructura como código (IaC). Aquí hay un desglose para aclarar las diferencias:
Variables de salida de Terraform
Los resultados de Terraform exponen información sobre los recursos administrados por Terraform. Los valores de salida derivan de atributos de recursos existentes dentro de su configuración Terraform. Los resultados generalmente se utilizan en casos que implican:
- Compartir datos entre módulos o configuraciones de Terraform
- Transmitir información a sistemas externos para la administración o el monitoreo de la configuración.
- Simplificar la lógica de configuración al hacer referencia a valores dinámicos en lugar de datos codificados
Un ejemplo de este escenario es extraer la dirección IP pública de una instancia EC2 y utilizarla para configurar una regla de grupo de seguridad en otro módulo Terraform.
Fuentes de datos de Terraform
Las fuentes de datos recuperan datos de fuentes externas. Interactúa con API o complementos para obtener información de proveedores de nube, herramientas de administración de configuración u otros sistemas externos. Las fuentes de datos se utilizan en casos que involucran:
- Acceder a información sobre recursos existentes que no son administrados por Terraform
- Uso de datos externos para configurar dinámicamente los recursos de Terraform
- Integración de su IaC con otras herramientas y plataformas
Un ejemplo es usar una fuente de datos para recuperar una lista de regiones disponibles en un proveedor de nube antes de crear recursos en esas regiones.
En pocas palabras, la elección entre usar una variable de salida o una fuente de datos depende del origen de los datos que necesite:
- Si los datos se originan a partir de recursos administrados dentro de su configuración Terraform, utilice una variable de salida.
- Si los datos residen en un sistema externo o deben recuperarse dinámicamente, utilice una fuente de datos.
Mejores prácticas para usar la salida Terraform
Al usar los resultados de Terraform, debe considerar las siguientes mejores prácticas:
- Use nombres descriptivos: Elija nombres claros y concisos que reflejen los datos expuestos por la variable de salida. Evite nombres genéricos como “salida1” o “datos”. En su lugar, use nombres como "rds_instance_public_ip" o "webserver_security_group_id". Esto mejora la legibilidad y el mantenimiento de sus configuraciones.
- Use una convención de nomenclatura consistente: Mantenga una convención de nomenclatura consistente en toda su base de código Terraform. Esto podría implicar el uso de guiones o guiones bajos para la separación y mantener el esquema de nomenclatura alineado en todos los módulos y configuraciones.
- Resultados relacionados con el grupo: Agrupe los resultados relacionados de manera lógica. Por ejemplo, si tiene varias salidas relacionadas con una instancia de base de datos (dirección IP, puerto, nombre de usuario), agrupelas en un solo encabezado dentro de su archivo de configuración. Esto mejora la organización y facilita la búsqueda de información específica.
- Use comentarios: Incluya comentarios claros para explicar el propósito y el uso de cada variable de salida. Esto es particularmente útil para los resultados que podrían no ser autoexplicativos de inmediato o cuando otros módulos o equipos los utilizan.
- Evite los resultados innecesarios: Evite definir resultados para datos que no sean realmente necesarios. Las salidas excesivas pueden desordenar la salida y dificultar la identificación de la información más relevante. Evalúe si los datos pueden utilizarse directamente dentro de su configuración de Terraform o si un enfoque alternativo podría ser más eficiente.
- Evite los resultados de secretos: Si es posible, evite almacenar datos confidenciales en configuraciones Terraform por completo. Explore métodos alternativos para administrar secretos, como aprovechar HashiCorp Vault o variables de entorno.
- Use el atributo sensible Terraform: Si es inevitable usar salidas para secretos, márquelas como sensibles usando el atributo sensible dentro del bloque de salida. Esto indica al comando de salida de terraforma que suprima el valor al mostrar la salida.
Este es un ejemplo con el atributo sensible agregado:
output "db_password" {
value = aws_db_instance.example.password
sensitive = true
}
|
Conclusiones
La salida Terraform le permite cerrar la brecha entre las configuraciones estáticas y la infraestructura dinámica. Al aprovechar los resultados, puede optimizar el intercambio de datos, automatizar las tareas y simplificar la verificación.
Para liberar todo el potencial de su infraestructura, considere usar las soluciones de Pure Storage como Portworx® para permitir el almacenamiento persistente para sus implementaciones de Terraform Kubernetes, así como Pure Cloud Block Store™ para proporcionar la solución de almacenamiento ideal para sus aplicaciones basadas en la nube.