Comparación de Terraform y Bicep

Para lograr la escala, los equipos de DevOps siempre buscan formas de implementar código rápidamente con un proceso de confianza y repetible. En lo que respecta a la nube y la infraestructura, este proceso se logra cada vez más con la infraestructura como código (IaC). Las herramientas de IaC van desde herramientas de uso general a herramientas diseñadas para entornos específicos. Terraform es un ejemplo del anterior, mientras que Bicep está diseñado para controlar las tareas relacionadas con Azure.

En este artículo, comparamos nueve características de integración e infraestructura de Bicep y Terraform. Comprender estas diferencias le ayuda a decidir qué herramienta mejor es compatible con la infraestructura y los procesos.

Estado y back-end

Terraform y Bicep son la configuración de estado deseada (DSC), lo que facilita la administración de la infraestructura de TI y desarrollo como código. Terraform almacena el estado sobre la infraestructura administrada y la configuración. Terraform usa esta información para asignar recursos reales a la configuración, realizar un seguimiento de los metadatos y mejorar el rendimiento de infraestructuras más grandes. El estado se almacena en un archivo local denominado terraform.tfstate, pero también se puede almacenar de forma remota. Es fundamental realizar copias de seguridad y proteger los archivos de estado. Al igual que Terraform, Bicep es declarativo y busca objetivos. Sin embargo, Bicep no almacena el estado. En su lugar, Bicep se basa en la implementación incremental.

Destinos de infraestructura

Al comparar Bicep con Terraform para administrar la infraestructura en la nube, es importante tener en cuenta el entorno de nube de destino:

  • Solo Azure
  • Nubes híbridas o múltiples

Bicep es específico de Azure y no está diseñado para trabajar con otros servicios en la nube.

Si su objetivo es automatizar las implementaciones en cualquiera de los siguientes entornos, Terraform es probable que sea la mejor opción:

  • Entornos de virtualización
  • Escenarios multinube, como Azure y otras nubes
  • Cargas de trabajo locales

Terraform interactúa con otros proveedores de nube o API mediante complementos denominados proveedores. Hay varios proveedores de Azure de Terraform que permiten la administración de la infraestructura de Azure. Al codificar una configuración de Terraform, especifique los proveedores necesarios que usa. Al ejecutar terraform init, el proveedor especificado se instala y se puede usar desde el código.

Herramientas de la CLI

Las herramientas de la interfaz de la línea de comandos (CLI) desempeñan un papel clave en la orquestación a través de la implementación y administración de la tecnología de automatización. Bicep y Terraform ofrecen herramientas de la CLI.

Bicep se integra con la CLI de Azure, lo que permite a los desarrolladores usar az comandos como:

La CLI de Terraform le permite realizar tareas como validar y dar formato al código de Terraform y crear y aplicar un plan de ejecución.

Bicep también proporciona una característica que facilita la integración de Bicep con Azure Pipelines. Hay una característica similar disponible para Terraform, pero debe descargar e instalar la extensión Azure Pipelines Terraform Tasks para Visual Studio. Una vez instalado, puede ejecutar comandos de la CLI de Terraform desde Azure Pipelines. Además, Terraform y Bicep admiten Acciones de GitHub para automatizar compilaciones de software, pruebas e implementaciones.

En procesamiento

Hay algunas diferencias importantes entre Bicep y Terraform en cuanto a la eficiencia y optimización de las implementaciones. Con Bicep, el procesamiento se produce en el lado principal del servicio de infraestructura de Azure. Esta característica ofrece ventajas como el procesamiento previo para comprobar la directiva o la disponibilidad para implementar varias instancias dentro de una región. Con Terraform, el procesamiento se realiza dentro del cliente de Terraform. Por lo tanto, el preprocesamiento no implica llamadas a Azure, ya que usa state y HCL (HashiCorp Language) para determinar los cambios necesarios.

Autenticación

Las características de autenticación de Azure varían entre Bicep y Terraform. Con Bicep, se proporciona un token de autorización durante la solicitud para enviar un archivo de Bicep y una plantilla de ARM. ARM garantiza que tiene permiso para crear la implementación e implementar recursos dentro de la plantilla especificada. Terraform autentica cada API en función de las credenciales del proveedor, como la CLI de Azure, la entidad de servicio o las identidades administradas para los recursos de Azure. Además, se pueden usar varias credenciales de proveedor en una sola configuración.

Integraciones de Azure

También debe tener en cuenta el uso de características de Azure como Azure Policy y cómo interactúan con otras herramientas y lenguajes. La validación preliminar de Bicep determina si un recurso no cumple una directiva para que se produzca un error antes de una implementación. Por lo tanto, los desarrolladores pueden corregir los recursos con la directiva mediante plantillas de ARM proporcionadas. La plantilla de ARM se puede usar para crear una asignación de directiva a otro recurso para la corrección automatizada. Sin embargo, Terraform produce un error cuando se implementa un recurso que no se permite debido a la directiva.

Integración de portal

Una ventaja importante que Bicep tiene sobre Terraform es la capacidad de automatizar acciones del portal. Con Bicep, puede usar Azure Portal para exportar plantillas. La exportación de una plantilla le ayuda a comprender la sintaxis y las propiedades que implementan los recursos. Puede automatizar las implementaciones futuras empezando por la plantilla exportada y modificándola para satisfacer sus necesidades. Hasta que se admitan las plantillas de Terraform, debe traducir manualmente la plantilla exportada.

Aunque Terraform no proporciona las mismas integraciones del portal que Bicep, la infraestructura de Azure existente se puede tomar en administración de Terraform mediante Azure Export para Terraform. (Azure Export for Terraform es una herramienta de código abierto propiedad y mantenida por Microsoft en Repositorio de GitHub de Azure/aztfexport.

Cambios fuera de banda

Los cambios de configuración fuera de banda son cambios realizados en una configuración de dispositivo fuera del contexto de la herramienta. Por ejemplo, supongamos que implementa un conjunto de escalado de máquinas virtuales mediante Bicep o Terraform. Si cambia ese conjunto de escalado de máquinas virtuales mediante el portal, el cambio sería "fuera de banda" y desconocido para la herramienta IaC.

Si usa Bicep, los cambios fuera de banda deben conciliarse con Bicep y el código de plantilla de ARM para evitar que esos cambios se sobrescriban en la siguiente implementación. Estos cambios no bloquean la implementación.

Si usa Terraform, debe importar los cambios fuera de banda en el estado de Terraform y actualizar la HCL.

Por lo tanto, si un entorno implica cambios frecuentes fuera de banda, Bicep es más fácil de usar. Al usar Terraform, debe minimizar los cambios fuera de banda.

Marcos de trabajo en la nube

Cloud Adoption Framework (CAF) es una colección de documentación, procedimientos recomendados y herramientas para acelerar la adopción de la nube en todo el recorrido de la nube. Azure proporciona servicios nativos para implementar zonas de aterrizaje. Bicep simplifica este proceso con una experiencia del portal basada en plantillas de ARM e implementación de zona de aterrizaje. Terraform usa un módulo de zonas de aterrizaje a escala empresarial para implementar, administrar y poner en marcha con Azure.

Resumen

Bicep y Terraform ofrecen muchas características de integración e infraestructura fáciles de usar. Estas características facilitan la implementación y administración de la tecnología de automatización. Al decidir cuál es el mejor para su entorno, es importante tener en cuenta si va a implementar en más de una nube o si la infraestructura consta de un entorno de nube híbrida o múltiple. Además, asegúrese de tener en cuenta las nueve características que se describen en este artículo para tomar la mejor opción para su organización.