Prueba del código de Terraform

Terraform habilita la definición, vista previa e implementación de la infraestructura en la nube. Con Terraform, se crean archivos de configuración mediante la sintaxis de HCL. La sintaxis de HCL permite especificar el proveedor de la nube, como Azure, y los elementos que componen la infraestructura de la nube. Después de crear los archivos de configuración, se crea un plan de ejecución que permite obtener una vista previa de los cambios de infraestructura antes de implementarlos. Una vez que compruebe los cambios, aplique el plan de ejecución para implementar la infraestructura.

Terraform es una herramienta de infraestructura como código (IaC). Esta categoría de herramientas hace referencia al hecho de que trata los archivos de Terraform como trataría el código fuente del proyecto. Parte de ese proceso incluye control de versiones y del código fuente. Además, las pruebas también deben formar parte del proceso. En este artículo se proporciona información general sobre los diferentes tipos de pruebas que se pueden ejecutar en un proyecto de Terraform.

Implementación de pruebas de integración

Las pruebas de integración validan que un cambio de código recién introducido no interrumpe el código existente. En DevOps, la integración continua (CI) hace referencia a un proceso que compila todo el sistema cada vez que se cambia la base de código; por ejemplo, si alguien quiere combinar una solicitud de incorporación de cambios en un repositorio de GIT. La lista siguiente contiene ejemplos comunes de pruebas de integración:

  • Herramientas de análisis de código estático, por ejemplo, de lint y formato.
  • Ejecute terraform validate para comprobar la sintaxis del archivo de configuración.
  • Ejecute terraform plan para asegurarse de que la configuración funcionará según lo previsto.

Implementación de pruebas unitarias

Las pruebas unitarias garantizan que una parte o función específica de un programa se comportarán correctamente. El desarrollador de la funcionalidad escribe las pruebas unitarias. También denominado desarrollo controlado por pruebas, o TDD, este tipo de pruebas conlleva ciclos de desarrollo cortos continuos. En el contexto de los proyectos de Terraform, las pruebas unitarias pueden adoptar la forma de uso de terraform plan para asegurarse de que los valores reales disponibles en el plan generado coincidan con los esperados.

Las pruebas unitarias pueden ser especialmente útiles cuando los módulos de Terraform empiezan a ser más complejos:

  • Generación de bloques dinámicos
  • Uso de bucles
  • Cálculo de variables locales

Como sucede con las pruebas de integración, muchas veces se incluyen pruebas unitarias en el proceso de integración continua.

Implementación de pruebas de cumplimiento

Las pruebas de cumplimiento se usan para asegurarse de que la configuración sigue las directivas definidas para el proyecto. Por ejemplo, puede definir convenciones de nomenclatura geopolítica para los recursos de Azure. O bien puede que quiera crear máquinas virtuales a partir de un subconjunto definido de imágenes. Las pruebas de cumplimiento se utilizarían para aplicar estas reglas.

Además, las pruebas de cumplimiento también se definen normalmente como parte del proceso de integración continua.

Implementación de pruebas de un extremo a otro (E2E)

Las pruebas de E2E validan que un programa funciona antes de implementarlo en producción. Un escenario de ejemplo podría ser un módulo de Terraform que implementa dos máquinas virtuales en una red virtual. Es recomendable evitar que las dos máquinas se envíen ping entre sí. En este ejemplo, podría definir una prueba para comprobar el resultado previsto antes de la implementación.

Las pruebas de E2E suelen ser un proceso de tres pasos. En primer lugar, la configuración se aplica a un entorno de prueba. A continuación, se ejecutaría el código para comprobar los resultados. Por último, el entorno de prueba se reinicializará o se desactivará (por ejemplo, se puede desasignar una máquina virtual).