terraform init
Prepara el entorno para empezar a usar Terraform para crear, actualizar o destruir infraestructura. Si no lo ejecutamos primero, Terraform no podrá operar correctamente.
Realiza estos 3 pasos:
-
Inicializa el backend: Si usamos un backend remoto (por ejemplo, S3, GCS, Terraform Cloud),
terraform init
configura ese backend para almacenar el estado de la infraestructura. -
Descarga los proveedores (providers): Terraform necesita “proveedores” para interactuar con diferentes plataformas, como AWS, Azure, Google Cloud, etc.
terraform init
descarga los proveedores necesarios según lo especificado en los archivos.tf
. -
Prepara los módulos: Si se usan módulos (bloques reutilizables de código),
terraform init
los descarga y los configura.
terraform validate
Revisa todos los archivos de configuración .tf
del directorio actual. Esto nos permite verificar que la sintaxis de los archivos de configuración es correcta. Nos asegura de que las referencias entre recursos y módulos son válidas. Y también nos ayuda a detectar posibles errores de configuración antes de aplicar cambios en la infraestructura.
Es capaz de detectar errores de sintaxis, referencias no válidas entre recursos y módulos, y posibles errores de configuración.
Tras cambiar dsa_bits por rsa_bits vemos que ahora la validación no da errores.
terraform plan
Lee los archivos de configuración de Terraform y el estado actual de la infraestructura. Compara el estado actual con la configuración deseada y genera un plan describiendo las acciones que se llevarán a cabo para alinear la infraestructura con la configuración deseada. No hace cambios reales en la infraestructura, sólo muestra lo que hará cuando ejecutemos terraform apply
.
terraform apply
Leerá todos los ficheros de configuración y el estado actual de la infraestructura. Comparará el estado actual con la configuración deseada y aplicará los cambios necesarios para alinear la infraestructura con la configuración. Antes de aplicar los cambios se nos pedirá confirmar.
Usar -auto-approve
omite la solicitud de confirmación, lo que puede ser un riesgo en entornos de producción, ya que aplica cambios sin una segunda verificación y por tanto se desaconseja.
¡El comando terraform apply
falló a pesar de que nuestra validación funcionó! Esto se debe a que el comando terraform validate
solo realiza una verificación general de la configuración. Valida el bloque de recursos y la sintaxis de los argumentos, pero no los valores que los argumentos esperan para un recurso específico.
Tras resolver el problema, relacionado con el recurso tls_private_key
y el argumento ecdsa_curve
, ejecutamos nuevamente terraform plan
y luego terraform apply
, lo que permite completar la operación sin errores.
⚠️ Recordatorio:
Recuerda que terraform init
debe ejecutarse primero antes de cualquier otro comando. Esto prepara el entorno para que Terraform pueda interactuar correctamente con proveedores, módulos y el backend. Es obligatorio para asegurarte de que todo esté configurado correctamente antes de realizar otras acciones.