La infraestructura como código (IaC) es el proceso de aprovisionar y administrar la infraestructura de la aplicación de software mediante un código en lugar de interfaces gráficas de usuario o secuencias de comandos de la línea de comandos.
El aprovisionamiento de la infraestructura de aplicaciones, por lo general, implica configurar y administrar máquinas virtuales, conexiones de bases de datos, almacenamiento y otros elementos de la infraestructura. La administración manual de esta infraestructura requiere mucho tiempo y es propensa a errores, en especial cuando se administran aplicaciones a gran escala.
La IaC te permite definir la infraestructura con archivos de configuración, lo que te permite compilar, cambiar y administrar la infraestructura de manera segura y repetible. Puedes definir opciones de configuración de recursos que puedes volver a usar y compartir y cuyas versiones puedes controlar. La IaC te permite especificar el estado deseado de tu infraestructura. Luego, puedes implementar la misma configuración varias veces para crear entornos de desarrollo, prueba y producción reproducibles.
La IaC te permite tratar el aprovisionamiento y la configuración de tu infraestructura de la misma manera que manejas el código de la aplicación. Puedes almacenar la lógica de configuración de aprovisionamiento en el control de origen y aprovechar las canalizaciones de integración continua y de implementación continua (CI/CD).
Beneficios de la IaC
Se recomienda usar la IaC a fin de configurar y administrar la infraestructura de tu aplicación para varios casos de uso comunes. Google administra sus sistemas con IaC y la establece como una práctica estándar de forma interna.
La IaC ofrece los siguientes beneficios:
- Puedes definir la infraestructura según tus requisitos y volver a usar la misma configuración para crear varios entornos de forma coherente.
- Puedes automatizar la creación y la administración de tus recursos en la nube, incluso para los entornos de implementación y prueba.
- Puedes tratar los cambios en la infraestructura como tratas los cambios en las aplicaciones. Por ejemplo, puedes asegurarte de que los cambios en la configuración se revisen y validen de forma automática. Se recomienda administrar entornos de producción mediante procesos controlados por cambios mediante IaC.
- Puedes mantener un historial de todos los cambios de configuración. Los cambios se pueden auditar y revertir.
- Puedes tener una única fuente de información para tu infraestructura de nube.
Herramientas de IaC para Google Cloud
Google Cloud está estrechamente integrado a muchas herramientas de IaC. Elige una de las siguientes herramientas según tu caso de uso:
Terraform
En general, a fin de configurar y administrar la infraestructura de Google Cloud mediante el código, usa el proveedor de Terraform para Google Cloud.
HashiCorp Terraform es una herramienta de IaC que te permite definir recursos en la nube y de forma local en archivos de configuración legibles por humanos que volver a usar y compartir y cuyas versiones puedes controlar. Luego, puedes usar un flujo de trabajo coherente para aprovisionar y administrar toda la infraestructura durante su ciclo de vida. Para obtener más información, consulta Descripción general de Terraform en Google Cloud.
Infrastructure Manager
Si buscas automatizar la implementación de la configuración de Terraform, usa el Administrador de infraestructura (Infra Manager).
Infra Manager automatiza la implementación y la administración de los recursos de infraestructura de Google Cloud mediante Terraform. Infra Manager te permite implementar de manera programática en Google Cloud, lo que te permite usar este servicio en lugar de mantener una cadena de herramientas diferente para trabajar con Terraform en Google Cloud. Para obtener más información, consulta Descripción general de Infra Manager.
Terraform Cloud y Terraform Enterprise
Si necesitas una administración de cambios completa con Terraform en toda tu organización, usa Terraform Cloud o Terraform Enterprise.
Terraform Cloud es una aplicación de software como servicio (SaaS) que ejecuta Terraform en un entorno remoto y estable, y almacena el estado y los secretos de forma segura. Terraform Cloud también se integra en la CLI de Terraform y se conecta a sistemas de control de versión (VCS) comunes, como GitHub, GitLab, y Bitbucket. Cuando conectas un lugar de trabajo de Terraform Cloud a un repositorio de VCS, las confirmaciones y los cambios nuevos pueden activar de forma automática los planes de Terraform. Terraform Cloud también ofrece una API que te permite integrarla en flujos de trabajo existentes.
Terraform Enterprise te permite configurar una distribución autoalojada de Terraform Cloud. Ofrece límites de recursos personalizables y es ideal para organizaciones con requisitos estrictos de seguridad y cumplimiento.
Para obtener más información, consulta la página de ediciones de Terraform en la documentación de Hashicorp.
Cloud Development Kit para Terraform
Si deseas generar infraestructura con un lenguaje de programación de uso general en lugar de usar Hashicorp Configuration Language (HCL), usa Cloud Development Kit para Terraform (CDKTF).
CDKTF te permite configurar Terraform mediante un lenguaje de programación a fin de definir y aprovisionar la infraestructura de Google Cloud y te permite usar tu cadena de herramientas existente para procesos como pruebas y administración de dependencias.
Pulumi
Pulumi es otra herramienta que puedes usar para aprovisionar infraestructura mediante lenguajes de programación. Puedes usar el proveedor de Google Cloud para Pulumi a fin de crear código de infraestructura con lenguajes de programación, como TypeScript, Python, Go, C#, Java o YAML.
Config Controller y Config Connector
Para administrar los recursos de Google Cloud a través de Kubernetes, usa el controlador de configuración y Config Connector.
El controlador de configuración y Config Connector te permiten configurar servicios y recursos de Google Cloud con las herramientas de Kubernetes. Puedes usar herramientas de GitOps, como el Sincronizador de configuración y las APIs de Kubernetes, y configurar y usar primitivas de ingeniería de plataformas, como webhooks y operadores de admisión.
Para obtener más información, consulta la Descripción general del controlador de configuración y Descripción general de Config Connector.
Crossplane
Otra opción para administrar los recursos de Google Cloud a través de Kubernetes es usar Crossplane.
Crossplane conecta tu clúster de Kubernetes a recursos externos que no son de Kubernetes y permite que los equipos de plataforma compilen APIs de Kubernetes personalizadas para consumir esos recursos. Crossplane actúa como un controlador de Kubernetes para observar el estado de los recursos externos y proporcionar aplicación de estado. Con Crossplane instalado en un clúster de Kubernetes, los usuarios solo se comunican con Kubernetes. Crossplane administra la comunicación con recursos externos, como Google Cloud. Si algo modifica o borra un recurso fuera de Kubernetes, Crossplane revierte el cambio o vuelve a crear el recurso borrado.
Para obtener más información, consulta la documentación de Crossplane.
Ansible
Si deseas automatizar el aprovisionamiento, la administración de configuración, la implementación de aplicaciones, la organización y otros procesos de TI, usa Ansible. Si deseas obtener más información, consulta Ansible para Google Cloud.
¿Qué sigue?
- Obtén más información sobre Terraform
- Obtén más información sobre cómo crear un servidor web básico en Compute Engine mediante Terraform.
- Obtén información sobre cómo almacenar el estado de Terraform en un bucket de Cloud Storage.