Infraestructura como código
La infraestructura como código (IaC) es el proceso de administración y aprovisionamiento de recursos de infraestructura en la nube mediante código legible por una máquina que se almacena en el control de código fuente. La capacidad de tratar la infraestructura como lo haría con cualquier otro código fuente es la razón por la que esta práctica se denomina infraestructura como código.
IaC es un componente clave de DevOps, ya que permite la automatización de la configuración y la implementación de la infraestructura. Esta automatización reduce la cantidad de tiempo y esfuerzo necesarios para administrar y aprovisionar la infraestructura, a la vez que garantiza que la infraestructura se configure de forma coherente y confiable. IaC también ayuda a garantizar que la infraestructura sea segura y cumpla con las directivas de la organización.
Herramientas nativas de Azure frente a herramientas independientes de la nube
Uno de los factores más importantes para elegir una herramienta IaC es el entorno en la nube:
Herramientas nativas de Azure: las herramientas IaC como la CLI de Azure, Azure PowerShell y Bicep solo están disponibles en Azure. Dado que la misma empresa proporciona tanto la infraestructura en la nube como las herramientas IaC, tiene la ventaja de que se reduce el tiempo entre el lanzamiento de las características en la nube y la compatibilidad con las herramientas.
Herramientas independientes de la nube: las herramientas IaC como Terraform permiten administrar la infraestructura como código en entornos de nube mixta. En función de la herramienta IaC, es posible que las características de Azure recién lanzadas no se admitan de inmediato.
Herramientas IaC imperativas y declarativas
Existen dos tipos de herramientas de configuración IaC:
Herramientas IaC imperativas: una herramienta imperativa (o lenguaje imperativo) es una herramienta en la que el código especifica explícitamente lo que debe hacerse y cómo. El código que escribe realiza las acciones en un orden específico y de una en una para configurar la infraestructura. La mayoría de las herramientas de IaC imperativas no son idempotentes porque la configuración se realiza paso a paso.
Entre las herramientas de IaC imperativas para administrar y aprovisionar recursos en Azure se incluyen:
- La CLI de Azure
- Azure PowerShell
Herramientas IaC declarativas: una herramienta declarativa (o lenguaje declarativo) permite especificar el resultado deseado en lugar de cómo debe realizarse cada paso. La mayoría de las herramientas de IaC declarativas se adhieren a un patrón común. Una vez que ha creado la definición de la infraestructura, ejecuta un comando para aprovisionar lo que ha definido. Las herramientas IaC declarativas son idempotentes, ya que la configuración se puede aplicar varias veces, independientemente del estado de la configuración de la infraestructura. Esto ayuda a evitar el desfase de configuración al hacer que la infraestructura no compatible vuelva a ser compatible.
Entre las herramientas de IaC declarativas para administrar y aprovisionar recursos en Azure se incluyen:
- Bicep
- Terraform
Recomendaciones
- Adopte un enfoque de IaC para implementar, administrar, gobernar y admitir implementaciones de Azure.
- Use herramientas nativas de Azure para IaC en los siguientes escenarios:
- Solo quiere usar herramientas nativas de Azure. Su organización tiene experiencia previa con la implementación de plantillas de Azure Resource Manager (ARM).
- Su organización quiere tener compatibilidad inmediata con todas las versiones preliminares y de disponibilidad general de los servicios de Azure.
- Use herramientas no nativas para IaC en los escenarios siguientes:
- Su organización administra la infraestructura en entornos de nube mixta.
- Su organización no necesita tener compatibilidad inmediata con todas las versiones preliminares y de disponibilidad general de los servicios de Azure.