Variables de salida frente a fuentes de datos
Las salidas Terraform y las fuentes de datos pueden parecer similares a primera vista, pero sirven para distintos fines en sus flujos de trabajo de infraestructura como código (IaC). Aquí tiene un desglose para aclarar las diferencias:
Variables de salida Terraform
Los resultados de Terraform exponen información sobre los recursos gestionados por Terraform. Los valores de salida se derivan de atributos de recursos existentes dentro de su configuración Terraform. Los resultados suelen usarse en casos que implican:
- Compartir datos entre módulos o configuraciones de Terraform
- Traspaso de información a sistemas externos para la gestión o la supervisión de la configuración
- Simplificar la lógica de configuración haciendo referencia a los valores dinámicos en lugar de a los datos codificados
Un ejemplo de tal escenario es extraer la dirección IP pública de una instancia EC2 y usarla para configurar una regla de grupo de seguridad en otro módulo Terraform.
Fuentes de datos Terraform
Las fuentes de datos recuperan datos de fuentes externas. Interactúa con API o complementos para obtener información de proveedores de la nube, herramientas de gestión de la configuración u otros sistemas externos. Las fuentes de datos se utilizan en casos que implican:
- Acceso a información sobre recursos existentes que no son gestionados por Terraform
- Uso de datos externos para configurar dinámicamente los recursos de Terraform
- Integrar su IaC con otras herramientas y plataformas
Un ejemplo es el uso de 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 necesita:
- Si los datos se originan a partir de recursos administrados dentro de su configuración Terraform, use una variable de salida.
- Si los datos residen en un sistema externo o es necesario recuperarlos dinámicamente, use una fuente de datos.
Mejores prácticas para usar la salida Terraform
Cuando utilice los resultados de Terraform, debe tener en cuenta las siguientes buenas prácticas:
- Utilice 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 lugar de ello, use nombres como "rds_instance_public_ip" o "webserver_security_group_id". Esto mejora la legibilidad y el mantenimiento de sus configuraciones.
- Utilice una convención de nomenclatura coherente: Mantenga una convención de nomenclatura homogénea en toda su base de código Terraform. Esto puede implicar el uso de guiones bajos o guiones para la separación y mantener el esquema de nomenclatura alineado en todos los módulos y configuraciones.
- Resultados relacionados con el grupo: Agrupe lógicamente los resultados relacionados. Por ejemplo, si tiene varias salidas relacionadas con una instancia de base de datos (dirección IP, puerto, nombre de usuario), clasifíquelas 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.
- Utilice comentarios: Incluya comentarios claros para explicar el propósito y el uso de cada variable de salida. Esto es especialmente útil para los resultados que pueden no ser autoexplicativos inmediatamente o cuando los utilizan otros módulos o equipos.
- Evite los resultados innecesarios: Evite definir resultados para datos que no sean realmente necesarios. Los resultados excesivos pueden abarrotar los resultados y dificultar la identificación de la información más relevante. Evalúe si los datos pueden usarse directamente dentro de su configuración Terraform o si un enfoque alternativo puede ser más eficiente.
- Evite los resultados de los secretos: Si es posible, evite almacenar datos confidenciales en configuraciones Terraform por completo. Explore métodos alternativos para gestionar los secretos, como el uso de HashiCorp Vault o las variables de entorno.
- Utilice 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 terraforme que suprima el valor cuando muestre la salida.
Aquí tiene un ejemplo con el atributo sensible añadido:
output "db_password" {
value = aws_db_instance.example.password
sensitive = true
}
|
Conclusión
La salida Terraform le permite salvar 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 aprovechar todo el potencial de su infraestructura, considere el uso de las soluciones de Pure Storage, como Portworx®, para permitir el almacenamiento persistente de sus implementaciones de Terraform Kubernetes, así como de Pure Cloud Block Store™, para proporcionar la solución de almacenamiento ideal para sus aplicaciones basadas en la nube.