Conjunto de ejemplos de componentes Cloud para ilustrar conceptos básicos de infraestructura distribuida. Se utiliza Google Cloud Platform (GCP) como proveedor
Los ejemplos requieren de los siguientes elementos:
- Terraform instalado en el equipo que despliega los recursos
- Existencia de un proyecto GCP con capacidad para crear los recursos IaaS y PaaS de ejemplo
- Existencia de una cuenta de servicio en GCP con credenciales almacenadas en el archivo json con permisos para realizar el despliegue de los recursos
- Existencia de un bucket previamente creado para alojar ejemplos de código, compilación y salidas de ejecuciones (puede crearse automáticamente, pero el borrado accidental de archivos no se puede deshacer).
Se consideran los siguientes recursos de ejemplo:
- Cloud Storage: bucket con objetos utilizados para compilación de container images y despliegue de cloud functions.
- Compute Engine: instancias de cómputo con scripts de inicialización.
- VPC Network: virtual private clouds (VPCs), redes de firewall y routes.
Se consideran los siguientes recursos de ejemplo:
- Cloud Function: funciones Python que responden a pedidos HTTP.
- Crear el archivo de variables básicas de configuración a partir del ejemplo incluido:
cp terraform.tfvars.example terraform.tfvars
- Completar los valores de
project_id
,credentials_path
ybucket_name
requeridos en el archivoterraform.tfvars
. - Inicializar el directorio de trabajo de Terraform:
terraform init
- Importar estado del storage para evitar el intento de creación:
terraform import module.storage.google_storage_bucket.default <BUCKET-NAME>
- Revisar el plan de ejecución de despliegue
terraform plan
- Ejecutar el despliegue de recursos IaaS:
terraform apply -target=module.networking -target=module.web_servers
- Ejecutar el despliegue de recursos PaaS:
terraform apply -target=module.boundaries -target=module.controllers
- Eliminar todos los recursos creados:
terraform destroy -target=module.boundaries -target=module.controllers -target=module.networking -target=module.web_servers