Terraform Administración del estado con recursos de Megaport
Este tema describe el archivo de estado de Terraform y las prácticas recomendadas para usarlo a fin de asignar sus archivos de configuración a los servicios de Megaport implementados en su red.
¿Qué es el estado de Terraform?
Terraform almacena información sobre los recursos que ha creado en un archivo de estado, llamado terraform.tfstate.
Este archivo se crea automáticamente después de ejecutar el comando terraform apply. Proporciona una instantánea de su infraestructura gestionada por Terraform en un momento específico. Se crea en el mismo directorio donde se ejecuta Terraform. Recomendamos supervisar terraform.tfstate con regularidad.
Los propósitos principales del archivo de estado de Terraform son:
-
Asignación de recursos del mundo real – El archivo de estado realiza el seguimiento de los recursos de infraestructura reales que Terraform ha creado y está administrando. Registra información sobre sus configuraciones, IDs y dependencias.
-
Fuente de la verdad – El archivo de estado es la fuente de la verdad sobre su infraestructura actual. Cuando ejecuta el comando
terraform apply, compara sus archivos de configuración con el archivo de estado para determinar qué cambios deben realizarse. -
Seguimiento de metadatos – El archivo de estado almacena metadatos que Terraform utiliza internamente, como la versión de Terraform usada para crear el estado y las dependencias de los recursos.
Para obtener más información sobre el archivo de estado de Terraform, consulte State (HashiCorp).
Comprender el estado de Terraform para recursos de Megaport
El estado de Terraform es un componente crucial que asigna sus archivos de configuración a los recursos de Megaport implementados en su red. Cuando ejecuta el comando terraform apply, Terraform crea un archivo de estado, terraform.tfstate, que realiza el seguimiento de todos los recursos que gestiona, sus configuraciones e interdependencias.
¿Qué contiene el archivo de estado de Megaport Terraform Provider?
Para los recursos de Megaport, el archivo de estado realiza el seguimiento de información como:
- IDs y UIDs de recursos
- Configuraciones de Port
- Configuraciones de VXC
- Configuraciones del router de MCR
- Conexiones con partners
- Información de ubicación
Conceptos clave de administración del estado
-
Importación de recursos existentes – Si ya tiene servicios de Megaport configurados a través de Portal, use el comando
terraform importpara ponerlos bajo la administración de Terraform:Ejemplo 1: Importar un Port existente
terraform import megaport_port.my_port "example-uid-41d4-a716-446655440000"Ejemplo 2: Importar un VXC existente
terraform import megaport_vxc.my_vxc "example-uid-426f-9247-bb680e5fe0c8"Para obtener más información, consulte Importación de servicios de producción existentes.
-
Prevención de eliminaciones accidentales – Para proteger la infraestructura crítica, use la función de ciclo de vida
prevent_destroyde Terraform. Esta opción evita la eliminación accidental de recursos existentes al aplicar actualizaciones de configuración. Para obtener más información, incluidos algunos ejemplos, consulte Megaport Terraform Provider GitHub repository, Lifecycle Prevent Destroy Example. -
Almacenamiento del archivo de estado para entornos de equipo – De forma predeterminada, Terraform almacena la información del estado localmente.
Para el almacenamiento del archivo de estado de Terraform en entornos de equipo, se recomienda usar un espacio de almacenamiento remoto para la colaboración, el control de versiones y la seguridad.
- Use almacenamiento remoto del estado (Terraform Cloud, S3, etc.).
- Habilite el bloqueo del estado para evitar modificaciones concurrentes.
- Considere cifrar los archivos de estado, ya que contienen información confidencial.
-
Mantenimiento del archivo de estado – Ocasionalmente, podría necesitar usar algunos comandos, por ejemplo:
terraform state listpara ver todos los recursos gestionados.terraform state showpara examinar un recurso específico.terraform state rmpara quitar un recurso del estado sin destruirlo.
-
Gestión de drift del estado – El archivo de estado de Terraform realiza el seguimiento de toda la infraestructura que gestiona. Cambiar manualmente estos recursos fuera de Terraform puede hacer que el archivo de estado se vuelva inexacto, una situación conocida como drift.
Si el registro de Terraform de su infraestructura no coincide con la realidad, intentará corregir las discrepancias, lo que podría conducir a la eliminación o recreación no intencionada de sus recursos. Para obtener más información, consulte Manage resource drift (HashiCorp).
Si se realizan cambios en los recursos de Megaport fuera de Terraform:
- Use el comando
terraform refreshpara actualizar el estado con las configuraciones actuales de los recursos. - Considere ejecutar el comando
terraform planregularmente para detectar cambios no autorizados.
- Use el comando
Prácticas recomendadas
Recomendamos seguir estas prácticas para obtener resultados óptimos con Terraform:
- Haga una copia de seguridad de su archivo de estado con regularidad – Perderlo es irreversible.
- Controle en versiones sus archivos de configuración – Sin embargo, nunca guarde archivos de estado que contengan datos confidenciales como credenciales. Para obtener más información, consulte Sensitive Data in State (HashiCorp).
- Modularice configuraciones complejas – Este enfoque mejora la administración de recursos al promover una estructura más organizada y reutilizable.
- Bloquee los servicios de Megaport en Portal – El estado de Terraform es la fuente de la verdad para la administración de recursos. Para evitar cambios en conflicto en los servicios de producción en Portal y Terraform, se recomienda bloquear los servicios de producción. Para obtener más información, consulte Bloqueo de servicios de Megaport.
Para obtener más información, consulte Learn Terraform recommended practices (HashiCorp).
Referencias útiles
- terraform plan command (HashiCorp)
- State (HashiCorp)
- Target resources (HashiCorp)
- Manage resource lifecycle (HashiCorp)
- Megaport Terraform Provider GitHub repository, Lifecycle Prevent Destroy Example
- Manage resource drift (HashiCorp)
- Sensitive Data in State (HashiCorp)
- Learn Terraform recommended practices (HashiCorp)