¿Qué es la infraestructura como código (IaC)?

La infraestructura como código (IaC) es una metodología para administrar y aprovisionar la infraestructura de computación. Se basa en archivos de definición legibles por máquina para la configuración, en lugar de ajustes manuales de hardware físico o herramientas de configuración interactivas. Si los equipos tratan la configuración de la infraestructura de la misma manera que los desarrolladores tratan el código de la aplicación, pueden automatizar la implementación de redes, máquinas virtuales, clústeres de Kubernetes, bases de datos y balanceadores de cargas de forma rápida y confiable. Sirve como un componente de las prácticas modernas de DevOps, lo que ayuda a las organizaciones a escalar con coherencia y velocidad.

Cómo funciona la infraestructura como código

La IaC funciona automatizando el proceso de aprovisionamiento a través del código, lo que elimina la necesidad de realizar ajustes manuales en una consola de nube. Primero, los desarrolladores definen las especificaciones de infraestructura deseadas en archivos de configuración, que suelen almacenarse en un sistema de control de versión. Luego, una herramienta de automatización, como Terraform, procesa estos archivos y realiza las llamadas a la API necesarias al proveedor de la nube para crear, actualizar o borrar los recursos reales. Este flujo de trabajo suele seguir una ruta desde el código (definición) hasta el control de versión, pasando por una canalización de CI/CD y, finalmente, hasta el aprovisionamiento.

Infografía sobre el flujo de trabajo de la infraestructura como código

Declarativo frente a imperativo

Cuando implementan IaC, los equipos suelen elegir entre dos enfoques: declarativo e imperativo. La diferencia principal radica en si te enfocas en el resultado final o en los pasos para llegar a él.

Enfoque

Descripción

Ejemplo

Declarativo


Defines cómo quieres que se vea el estado final. La herramienta descubre los pasos necesarios para lograr ese estado. Este es el estándar moderno para herramientas como Terraform y Kubernetes.

"Quiero 3 máquinas virtuales con 8 GB de RAM cada una".

Imperativos

Defines cómo cambiar la infraestructura enumerando comandos o secuencias de comandos específicos para ejecutar en orden.

“Ejecuta la secuencia de comandos A para iniciar el servidor 1. Luego, ejecuta la secuencia de comandos B para configurar la red. Luego, ejecuta la secuencia de comandos C…".

Enfoque

Descripción

Ejemplo

Declarativo


Defines cómo quieres que se vea el estado final. La herramienta descubre los pasos necesarios para lograr ese estado. Este es el estándar moderno para herramientas como Terraform y Kubernetes.

"Quiero 3 máquinas virtuales con 8 GB de RAM cada una".

Imperativos

Defines cómo cambiar la infraestructura enumerando comandos o secuencias de comandos específicos para ejecutar en orden.

“Ejecuta la secuencia de comandos A para iniciar el servidor 1. Luego, ejecuta la secuencia de comandos B para configurar la red. Luego, ejecuta la secuencia de comandos C…".

Seguridad y análisis de IaC

A medida que las definiciones de infraestructura se trasladan a repositorios de código, las prácticas de seguridad deben adaptarse para proteger estos archivos. “Seguridad de IaC” y “Análisis de IaC” se refieren a la práctica de analizar archivos de configuración en busca de vulnerabilidades antes de que se implemente la infraestructura, un concepto conocido como seguridad de “desplazamiento a la izquierda”. Las herramientas especializadas analizan la canalización de código para detectar parámetros de configuración incorrectos, como buckets de almacenamiento que se dejan abiertos al público o bases de datos sin encriptar, lo que evita que los riesgos de seguridad lleguen al entorno de producción.

Casos de uso de IaC

Además de admitir patrones de implementación comunes, como las aplicaciones de generación mejorada por recuperación (RAG), la IaC ayuda a resolver desafíos para implementaciones operativas complejas.

Las empresas suelen necesitar ejecutar cargas de trabajo en diferentes entornos. Con una herramienta como Terraform, un equipo puede usar un solo flujo de trabajo de configuración para implementar y administrar recursos en Google Cloud, otros entornos de nube y centros de datos locales de forma simultánea. Esto reduce la complejidad de aprender diferentes herramientas propietarias para cada plataforma.

Los desarrolladores suelen necesitar lugares seguros para probar nuevas funciones. Con IaC, un equipo puede crear un entorno de "preproducción" temporal que refleje exactamente la producción, ejecutar sus pruebas y, luego, destruir el entorno inmediatamente después. Esto ayuda a garantizar la precisión de las pruebas y, al mismo tiempo, evita el costo de mantener un servidor de etapa de pruebas permanente en funcionamiento las 24 horas, todos los días.

En caso de una interrupción regional catastrófica, la recuperación manual puede tardar días. La IaC permite la "recuperación ante desastres como código", lo que permite a una organización volver a aprovisionar rápidamente toda su infraestructura en una región diferente con sus definiciones de código existentes. Esto puede reducir drásticamente el tiempo de inactividad y garantizar la continuidad empresarial.

Beneficios de la IaC

Adoptar IaC puede ofrecer ventajas significativas para las organizaciones que buscan modernizar sus operaciones de TI.

Velocidad

La automatización te permite implementar entornos complejos en minutos en lugar de días o semanas.

Coherencia

Como el mismo código implementa el mismo entorno cada vez, la IaC elimina la "deriva de configuración", en la que los servidores se vuelven incoherentes debido a cambios manuales ad hoc.

Ahorro de costos

Los equipos pueden reducir fácilmente los recursos no utilizados cuando no son necesarios, como desactivar los entornos de desarrollo los fines de semana, lo que ayuda a administrar el gasto en la nube.

Control de versiones

Como la infraestructura se define como código, todo el historial de los cambios de tu infraestructura se almacena en un solo lugar. Esto facilita el seguimiento de quién cambió qué y la reversión a una versión anterior si algo deja de funcionar correctamente.

Implementa IaC en Google Cloud

Google Cloud proporciona un conjunto integral de herramientas para respaldar tu recorrido de infraestructura como código, desde el diseño inicial hasta la implementación y la administración continua. Un buen punto de partida es el Application Design Center, que te permite explorar, personalizar y desarrollar arquitecturas de referencia prediseñadas. Esto te ayuda a diseñar tu pila de aplicaciones en función de las prácticas recomendadas de Google Cloud antes de escribir una sola línea de código, lo que garantiza que tu infraestructura esté bien diseñada desde el principio.

Una vez que tengas un diseño, el ecosistema abierto de Google Cloud facilita su implementación como código. La plataforma trata los estándares de código abierto como Terraform como un ciudadano de primera clase, no como una ocurrencia tardía. Servicios como Infrastructure Manager te permiten implementar y administrar recursos de Google Cloud directamente con Terraform, mientras que Config Connector te permite administrar recursos de Google Cloud a través de Kubernetes, lo que ayuda a cerrar la brecha entre la infraestructura de la nube y la organización de contenedores.

Cloud Resource Manager

Cloud Resource Manager es el servicio para administrar de forma programática la jerarquía de recursos de Google Cloud, incluidas las organizaciones, las carpetas y los proyectos. Si bien muchos equipos usan IaC para implementar recursos como máquinas virtuales, Cloud Resource Manager te permite definir la estructura del proyecto en sí como código. Esto ayuda a los equipos a automatizar la configuración de entornos nuevos con políticas de Identity and Access Management (IAM) y restricciones organizacionales coherentes, lo que garantiza que la administración esté integrada en la infraestructura desde el principio.

Automatización de entornos de vista previa temporales

Una de las formas más valiosas de usar IaC es resolver el problema común de los desarrolladores: “Funcionó en mi máquina, así que ¿por qué no funcionó correctamente en producción?”. Puedes resolverlo creando entornos temporales.

En este flujo de trabajo, cuando un desarrollador abre una solicitud de extracción (PR), las herramientas de IaC activan automáticamente una copia temporal y aislada de la app. Cuando se combina la PR, el entorno se autodestruye.

Paso 1: Nombres dinámicos en Terraform

Para que esto funcione, tu código de Terraform no puede tener nombres hard-coded. Debes usar variables para crear recursos únicos para cada PR.

main.tf (fragmento)

  • Terraform
Cargando...

Paso 2: La configuración de Cloud Build

En tu cloudbuild.yaml, insertas el número de PR en Terraform con la variable de sustitución _PR_NUMBER proporcionada por Cloud Build.

cloudbuild.yaml (fragmento)

  • YAML
Cargando...

Este flujo de trabajo transforma la IaC de una tarea de mantenimiento estática en una herramienta de productividad dinámica que acelera el ciclo de revisión.

Resuelve tus desafíos más difíciles con Google Cloud

Los clientes nuevos obtienen $300 en créditos gratuitos que pueden usar en Google Cloud.

Recursos adicionales

Da el siguiente paso

Comienza a desarrollar en Google Cloud con el crédito gratis de $300 y los más de 20 productos del nivel Siempre gratuito.

Google Cloud