Gracias a la infraestructura como código (IaC), las organizaciones pueden automatizar y administrar de manera escalable y constante su infraestructura de TI. Las principales empresas tecnológicas y los proveedores de nube ofrecen diferentes herramientas de IaC, por lo que Terraform de HashiCorp destaca por su enfoque declarativo para aprovisionar y administrar los recursos de la nube. Una característica interesante del conjunto de comandos de Terraform es la renovación de terraformes, que juega un papel fundamental para garantizar que el estado de la infraestructura se alinea con los archivos de configuración.
Este artículo profundiza en la renovación de terraformes, su importancia en la gestión de la infraestructura y cómo usarla de manera efectiva.
Entender la renovación de Terraform
La renovación de Terraform sincroniza su archivo de estado Terraform con el estado actual de su infraestructura gestionada por Terraform. Imagine su archivo de estado Terraform como un plan que describa la configuración deseada para su infraestructura. Sin embargo, los cambios manuales pueden realizarse directamente en la infraestructura fuera del control de Terraform con el tiempo. La renovación de Terraform cierra esta brecha al actualizar el archivo de estado para reflejar estas modificaciones del mundo real.
El objetivo principal de la actualización de terraformes es detectar cualquier desviación entre el estado real de los recursos y el estado deseado, tal como se define en los archivos de configuración. Esta desviación puede deberse a cambios manuales realizados en la infraestructura fuera de Terraform o a cambios en el propio entorno de la infraestructura.
Cómo usar Terraform Refresh
El uso de la renovación de terraformes es sencillo. La sintaxis del comando es la siguiente:
$ terraform refresh
Este comando indica a Terraform que actualice el archivo de estado de todos los recursos actualmente administrados en su configuración de Terraform. Es importante tener en cuenta que la actualización de terraformes solo actualiza el archivo de estado; no realiza ninguna modificación en su infraestructura real.
Supongamos que tiene una configuración Terraform que aprovisiona una instancia de bucket de AWS S3 . Aquí tiene un archivo de configuración de ejemplo (main.tf):
provider "aws" {
region = "us-west-2"
}
resource "aws_s3_bucket" "example" {
bucket = "my-unique-bucket-name"
acl = "private"
}
Para aplicar esta configuración y crear el cubo S3, debe ejecutar lo siguiente:
$ terraform init
$ terraform apply
Si se realiza algún cambio en el cubo S3 directamente a través de la consola de AWS o la API , la ejecución de la actualización de terraform actualizará el archivo de estado para reflejar estos cambios:
$ terraform refresh
Opciones e indicadores adicionales
- entrada : Si se establece en falso, desactiva la entrada interactiva cuando Terraform necesita la entrada del usuario.
- estado: Especifica un archivo de estado personalizado que se utilizará para la operación.
Aquí tiene un ejemplo de su uso:
$ terraform refresh -input=false -state="custom_state.tfstate"
Ventajas de Terraform Refresh
La incorporación de la renovación de terraformes en su flujo de trabajo de gestión de la infraestructura tiene varias ventajas, algunas de las cuales son:
- Precisión mejorada del plan: Al actualizar el archivo de estado, la renovación de terraformes garantiza que los resultados de su plan de terraform reflejen con precisión los cambios deseados necesarios para que su infraestructura esté alineada con su configuración Terraform. Esto elimina el riesgo de proponer modificaciones innecesarias basadas en información de estado obsoleta.
- Visibilidad mejorada de la infraestructura: La renovación de Terraform le proporciona una imagen clara del estado actual de su infraestructura. Esta transparencia le permite identificar cualquier discrepancia entre su código y la infraestructura real, lo que le permite tomar medidas correctivas si es necesario.
- Gestión optimizada de la infraestructura: La renovación de Terraform simplifica la gestión de la infraestructura al mantener actualizado su archivo de estado Terraform. Puede aplicar con confianza los cambios de configuración, sabiendo que su archivo de estado refleja con precisión la infraestructura subyacente.
Mejores prácticas para usar Terraform Refresh
Estas son algunas de las mejores prácticas que hay que tener en cuenta al usar la renovación de terraformes:
- Antes de Terraform v0.15.4: En las versiones anteriores, la actualización de terraforms actualizaba directamente su archivo de estado. Sin embargo, este comportamiento ahora se considera obsoleto debido a posibles problemas de seguridad. Se recomienda usar la aplicación de terraform -solo actualización- en lugar de ello. Este enfoque le ofrece la ventaja de pedirle que lo confirme antes de finalizar la renovación, lo que le permite revisar los cambios antes de que se apliquen al archivo de estado.
- -autoaprobación: Si bien algunos documentos pueden hacer referencia a la bandera de aprobación automática con renovación de terraformes, esta bandera también está obsoleta y debe evitarse. Omite la confirmación y puede tener consecuencias no deseadas.
- Uso planificado: Por lo general, se recomienda usar la renovación estratégica de terraformes, sobre todo antes de ejecutar los comandos de plan de terraform o de aplicación de terraformes. Esto garantiza que su plan refleje el estado más reciente de la infraestructura.
- Integración del control de versiones: Considere integrar su configuración Terraform con un sistema de control de versiones como Git. Esto le permite realizar un seguimiento de los cambios en su código Terraform y volver a las versiones anteriores si es necesario. Esto es especialmente importante si una renovación de terraformes revela discrepancias inesperadas.
- Actualización limitada del alcance: Si solo desea actualizar un recurso o módulo específico dentro de su configuración de Terraform, puede utilizar la bandera de destino con la actualización de terraformes. Este enfoque dirigido puede ser útil para gestionar despliegues de infraestructura grandes y complejos.
- Entender el impacto potencial: Si bien la actualización de terraformes actualiza el archivo de estado, no modifica su infraestructura. Sin embargo, la actualización del estado puede revelar diferencias entre el estado deseado (definido en su configuración Terraform) y el estado real de su infraestructura. Esté preparado para abordar cualquier discrepancia que surja después de actualizar el archivo de estado.
Conclusión
La renovación de Terraform juega un papel fundamental para mantener la coherencia entre su configuración Terraform y su infraestructura real. Al mantener su archivo de estado sincronizado, se asegura de que sus planes sean precisos y de que la gestión de su infraestructura esté optimizada.
Para las soluciones de almacenamiento avanzadas que complementan su infraestructura gestionada por Terraform, considere las ofertas de Pure Storage como Portworx® para Kubernetes y Pure Cloud Block Store™ para diversas cargas de trabajo de contenedores. Estas soluciones proporcionan unas sólidas funcionalidades de gestión de datos que pueden mejorar aún más la fiabilidad y la eficiencia de su infraestructura de nube.