Exploración de la infraestructura como código

Completado

La infraestructura como código es un componente integral de las prácticas modernas de desarrollo y operaciones de software. Implica el uso de métodos de programación para aprovisionar y administrar servicios de infraestructura. La infraestructura como código es beneficiosa en entornos basados en la nube, como el descrito en el escenario de ejemplo. Pero cualquier organización que se base en recursos informáticos para obtener ingresos puede aprovechar sus capacidades. En esta unidad, obtendrá información sobre los principios básicos de IaC y las técnicas más comunes de implementación de estos principios.

¿Cuáles son los principios básicos de IaC?

Aunque las implementaciones individuales de IaC pueden diferir significativamente, todas tienden a seguir un conjunto de principios comunes, entre los que se incluyen los siguientes:

  • Control de versiones: IaC define los componentes de infraestructura, incluidos los recursos de proceso, almacenamiento y red mediante código. Este código normalmente reside en un VCS, lo que facilita el seguimiento de los cambios en la infraestructura de la misma manera que el seguimiento de versiones de software.
  • Sintaxis declarativa: IaC se basa en sintaxis declarativa para describir el estado deseado de la infraestructura. Esto contrasta con una sintaxis imperativa más tradicional, que implica escribir código que define un procedimiento detallado que lleva a ese estado. El enfoque declarativo tiende a ser más eficaz por muchas razones. En primer lugar, se basa en la inteligencia de la plataforma que hospeda los componentes de infraestructura, lo que minimiza la posibilidad de errores de programación o ineficiencias. Además, garantiza la idempotencia.
  • Idempotencia: Este término designa la característica de una acción en la que el resultado siempre es el mismo, independientemente del número de veces que se realice esta acción. Dado que la sintaxis declarativa solo describe el estado final, su uso garantiza que cada ejecución de código siempre producirá el mismo resultado. Esto garantiza la coherencia del entorno de destino e impide la posibilidad de sufrir efectos secundarios no deseados de los cambios intermedios.
  • Automatización: El uso del código facilita el aprovisionamiento y la configuración automatizados, lo que mejora la eficacia, la coherencia y la escalabilidad. Esto también elimina el posible impacto de los errores manuales.
  • Integración de CI/CD: IaC puede integrarse (y se hace con frecuencia) con CI/CD, lo que produce una estrategia completa de entrega de software mediante la combinación del aprovisionamiento de infraestructura, con la compilación, prueba e implementación de aplicaciones en una secuencia continua y totalmente automatizada.
  • Reusabilidad: IaC promueve el uso de módulos de código reutilizables, de acuerdo con los procedimientos de programación recomendados. Esto facilita el desarrollo de bibliotecas de software que constan de bloques de creación de infraestructura estandarizados que se pueden compartir entre proyectos. Como resultado, las organizaciones se benefician de una mayor coherencia, un mantenimiento simplificado y una duplicación minimizada de los esfuerzos.

¿Cómo se implementa IaC?

La implementación de IaC comienza con la identificación de los requisitos de infraestructura, incluidos los componentes de proceso, almacenamiento y redes. Los detalles dependen en gran medida de la plataforma que hospeda esa infraestructura y podrían diferir significativamente en función, por ejemplo, del uso de entornos de nube pública o privada.

Diagrama de la infraestructura como flujo de código.

La elección de la plataforma también tendrá un impacto en la elección de la tecnología y las herramientas de IaC. Por ejemplo, cada proveedor de nube pública ofrece su propio conjunto de capacidades de IaC. En el caso de Microsoft Azure, estas capacidades se basan en plantillas de Azure Resource Manager (ARM) y Bicep. También hay soluciones que ofrecen compatibilidad con varias nubes como, por ejemplo, Terraform. La elección de la herramienta determina el tipo de archivos y la estructura de directorios correspondiente de los proyectos. Esto le permitirá configurar repositorios en el sistema de control de versiones que prefiera. Los repositorios de VCS facilitan el seguimiento de los cambios de infraestructura, la colaboración interna y entre equipos, la automatización de implementaciones y reversiones, así como la integración con flujos de trabajo de CI/CD.

Con el repositorio implementado, debe empezar a crear una biblioteca de código de IaC, que consta de módulos que representan bloques de creación de las implementaciones de infraestructura futuras. Estos bloques podrían, por ejemplo, representar finalidades individuales, redes o almacenes de datos, que puede mezclar y hacer coincidir de forma arbitraria para construir soluciones de varios recursos.

El siguiente paso normalmente implicaría la integración del entorno de IaC con flujos de trabajo de CI/CD. Normalmente, esto implicaría el uso del mismo conjunto de repositorios, lo que facilita la combinación de la implementación de la infraestructura con la compilación, las pruebas y la entrega del software hospedado en esa infraestructura. Pero la integración debe ampliarse para aplicar prácticas de CI/CD a las implementaciones de IaC. En concreto, debe asegurarse de que, al igual que con CI/CD, use entornos de desarrollo y ensayo, automatice las pruebas, implemente bucles de supervisión y comentarios, y proteja correctamente el código de infraestructura y los procesos de IaC.