Terraform, desarrollado por HashiCorp , es una herramienta de infraestructura como código (IaC) ampliamente utilizada que permite a los usuarios definir y aprovisionar la infraestructura de software usando un lenguaje de configuración de alto nivel. A medida que las organizaciones adoptan cada vez más infraestructuras basadas en la nube, Terraform se ha vuelto esencial para gestionar y automatizar el despliegue de los recursos de infraestructura. Uno de los comandos principales de Terraform es el plan de terraform, un paso crítico en el proceso de despliegue que garantiza que los cambios en la infraestructura sean seguros, previsibles y eficientes.
En este artículo, veremos más de cerca este comando, lo que hace y cómo interpretar su resultado para sus configuraciones Terraform.
¿Qué es Terraform Plan?
El comando de plan de terraform es una parte vital del flujo de trabajo de Terraform que sirve como simulacro o vista previa de los cambios que Terraform realizará en su infraestructura. Compara el estado actual de su infraestructura con el estado deseado definido en sus archivos de configuración de Terraform y muestra las acciones específicas que Terraform tomará para salvar la brecha. Esto incluye adiciones, eliminaciones y modificaciones de recursos, como la creación de nuevas máquinas virtuales, el escalamiento de las bases de datos existentes o la eliminación de los volúmenes de almacenamiento no utilizados.
Ventajas del Plan Terraform
Tener la capacidad de previsualizar el cambio que su código de configuración causará en su infraestructura es beneficioso de muchas maneras, entre ellas:
- Transparencia: El plan Terraform proporciona una visión detallada de los próximos cambios y ofrece una imagen clara de lo que se creará, modificará o eliminará en su infraestructura. Esta transparencia ayuda a minimizar los errores y garantiza que todos los implicados en el proceso de despliegue estén en la misma página.
- Mitigación de riesgos: Al previsualizar los cambios de antemano, los usuarios pueden identificar y abordar los posibles problemas antes de que interrumpan los servicios. El plan Terraform puede ayudar a descubrir conflictos de recursos (por ejemplo, crear una máquina virtual con un nombre duplicado), falta de dependencias (por ejemplo, una base de datos que requiere un grupo de seguridad específico que no está configurado) o modificaciones no intencionadas debido a errores tipográficos en los archivos de configuración.
- Colaboración: El plan Terraform se integra perfectamente con sistemas de control de versiones como Git, lo que facilita la colaboración en equipo. Compartir el resultado del plan con los miembros del equipo permite revisar los cambios en el contexto de los compromisos de código, promoviendo la transparencia y la responsabilidad antes de implementar los cambios.
- Eficiencia: El plan Terraform ayuda a los usuarios a planificar y ejecutar los cambios en la infraestructura de manera metódica. El análisis del plan le permite identificar posibles cuellos de botella o ineficiencias antes de aplicar los cambios.
- Seguridad: El plan Terraform actúa como una red de seguridad al permitirle revisar y validar los cambios antes de que se apliquen a su infraestructura de producción. Esta protección ayuda a prevenir las modificaciones accidentales y garantiza la estabilidad y la fiabilidad de su entorno de nube.
Cómo ejecutar el Plan Terraform
Para ejecutar el plan terraform, primero asegúrese de tener Terraform instalado en su máquina local. Puede descargar e instalar la versión adecuada desde el sitio web oficial de HashiCorp .
Antes de ejecutar el comando de plan, tendrá que crear un archivo de configuración básico de Terraform llamado main.tf en su directorio de trabajo. A continuación se muestra un ejemplo de una configuración sencilla que crea un recurso de máquina virtual en un proveedor de nube:
# Configure the cloud provider (replace with your provider details)
provider "aws" {
region = "us-east-1"
}
# Define a virtual machine resource
resource "aws_instance" "my_vm" {
ami = "ami-0f78f7e824d9499e0" # Replace with the desired AMI ID
instance_type = "t2.micro"
}
1. Inicializar el directorio Terraform
Desplácese hasta su directorio de trabajo que contiene el archivo main.tf y ejecute el siguiente comando en su terminal:
$ terraform init
Este comando inicializa el directorio de Terraform, descarga los complementos o módulos necesarios mencionados en su configuración y prepara el entorno para trabajar con Terraform.
2. Ejecutar plan Terraform
Una vez completada la inicialización, ejecute el siguiente comando para generar el plan de ejecución:
$ terraform plan
Este comando analiza su configuración Terraform y la compara con el estado actual de su infraestructura (si lo hubiera). Luego muestra un plan detallado que describe las acciones que Terraform realizará para lograr el estado deseado definido en su configuración. El plan normalmente mostrará los recursos que se crearán, modificarán o eliminarán.
3. Guarde el resultado del plan
Si desea guardar el plan para consultarlo en el futuro o compartirlo con los miembros del equipo, puede usar opcionalmente el indicador -out con el comando del plan. Por ejemplo, el siguiente comando guarda el plan en un archivo llamado plan.tfplan:
$ terraform plan -out=plan.tfplan
El comando de plan de terraform solo previsualiza los cambios. No realiza ninguna modificación en su infraestructura. Después de revisar y aprobar el plan, puede usar el comando de aplicación del terraform $ para ejecutar los cambios planificados.
Entender y analizar el resultado del plan Terraform
El resultado del plan de terraformes suele dividirse en varias secciones, cada una de las cuales ofrece información valiosa sobre las acciones planificadas:
Acciones de recursos
Esta sección enumera las acciones específicas que Terraform pretende realizar en sus recursos de infraestructura. Estas acciones se clasifican en tres tipos principales:
- Crear (+): Este símbolo indica que Terraform creará nuevos recursos basados en su configuración.
- Lea (~): Este símbolo significa que Terraform leerá el estado de los recursos existentes para determinar si es necesario realizar algún cambio. Este símbolo es menos frecuente en el resultado del plan, ya que Terraform suele determinar las acciones necesarias durante la fase de planificación.
- Eliminar (-): Este símbolo indica que Terraform eliminará los recursos existentes que ya no están definidos en su configuración.
Detalles del recurso
Esta sección proporciona información detallada sobre cada recurso que se verá afectado por el plan. Aquí tiene un desglose de los detalles que normalmente puede encontrar:
- Tipo de recurso: Esto especifica el tipo de recurso de infraestructura que Terraform gestiona (por ejemplo, aws_instance, azurerm_resource_group ).
- Nombre del recurso: Esto identifica el nombre único asignado al recurso dentro de su configuración Terraform.
Cambios planificados
Esta sección detalla los cambios específicos que se aplicarán al recurso. Para los recursos que se crean (indicados por +), se enumerarán los atributos y sus valores correspondientes que se definirán. Para los recursos que se modifican, mostrará los cambios en los atributos existentes.
Resumen
El resultado del plan suele concluir con una sección de resumen que proporciona una visión general de alto nivel de las acciones planificadas. Este resumen suele desglosar el número total de recursos en las siguientes categorías:
Para añadir: El número de recursos nuevos que se crearán
Para cambiar: El número de recursos existentes que se modificarán
Para destruir: El número de recursos existentes que se eliminarán
Cuando ejecuta un plan terraform con la configuración de muestra que creamos anteriormente, obtiene unos resultados similares a los siguientes:
# $ terraform plan
Terraform used the selected providers to generate the following execution plan. Resource actions are indicated with the following symbols:
+ create
Terraform will perform the following actions:
# aws_instance.my_vm will be created
resource "aws_instance" "my_vm" {
+ ami = "ami-0f78f7e824d9499e0"
+ instance_type = "t2.micro"
+ tags = {
+ Name = "sample-tag"
}
}
1. Acciones de recursos: La primera línea indica que Terraform realizará acciones de creación (+) durante este plan.
2. Detalles del recurso: La sección siguiente profundiza en los detalles de un único recurso, aws_instance.my_vm . Esto significa que Terraform creará una nueva instancia AWS EC2 llamada my_vm en su entorno de AWS. Los detalles especifican además la ID de AMI (ami-0f78f7e824d9499e0), el tipo de instancia (t2.micro ) y una etiqueta (Nombre = "etiqueta de muestra ") que Terraform aplicará a la nueva instancia.
3. Resumen (implícito): Si bien no se muestra explícitamente en este ejemplo, es posible que se muestre un resumen al final de un resultado de plan más complejo, que indique el número total de recursos que hay que crear.
Mejores prácticas para usar el Plan Terraform
El comando de plan de terraform es su red de seguridad antes de aplicar cambios en la infraestructura. Las siguientes son algunas prácticas esenciales para maximizar sus beneficios:
Escrutinizar los cambios en los recursos:
- Céntrese en los recursos marcados para su creación (+) o eliminación (-).
- Compruebe que los valores de atributo de los nuevos recursos coinciden con su intención (por ejemplo, ID de AMI, tamaño del almacenamiento).
- Vuelva a comprobar la precisión de las modificaciones realizadas en los recursos existentes.
Detecte los posibles problemas:
- Busque conflictos de recursos (por ejemplo, nombres duplicados, dependencias faltantes).
- Asegúrese de que se han definido todas las dependencias necesarias (por ejemplo, los grupos de seguridad).
- Tenga cuidado con las eliminaciones inesperadas de recursos que pueden interrumpir los servicios.
Aprovechamiento de los resultados:
- Valide si los cambios planificados coinciden con sus objetivos de infraestructura.
- Tenga en cuenta las posibles implicaciones de costes asociadas con las modificaciones de recursos. También puede compartir el resultado del plan para la revisión y la comunicación del equipo.
Conclusión
El plan Terraform es una herramienta potente en el flujo de trabajo de Terraform. Ofrece un método seguro y transparente para previsualizar y validar los cambios en la infraestructura antes de aplicarlos. Al entender y usar de manera efectiva el plan Terraform, puede asegurarse de que sus despliegues son eficientes, previsibles y libres de consecuencias imprevistas.
Pure Storage ofrece las mejores soluciones de almacenamiento de bloques persistentes para sus implementaciones de Terraform. Portworx® proporciona una plataforma de datos completa para todas sus cargas de trabajo de contenedores y Kubernetes Terraform. Con Pure Cloud Block Store™, puede ejecutar cualquier base de datos o cargas de trabajo de contenedores en la nube, igual que en la infraestructura local.