惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 叶小钗
MyScale Blog
MyScale Blog
博客园 - 【当耐特】
I
InfoQ
腾讯CDC
aimingoo的专栏
aimingoo的专栏
L
LangChain Blog
人人都是产品经理
人人都是产品经理
D
DataBreaches.Net
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Engineering at Meta
Engineering at Meta
A
About on SuperTechFans
Google DeepMind News
Google DeepMind News
Vercel News
Vercel News
C
Check Point Blog
B
Blog RSS Feed
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
美团技术团队
Stack Overflow Blog
Stack Overflow Blog
Y
Y Combinator Blog
D
Docker
MongoDB | Blog
MongoDB | Blog
量子位
博客园_首页

DEV Community

Authentication Security Deep Dive: From Brute Force to Salted Hashing (With Java Examples) Why AI Systems Don’t Fail — They Drift Spilling beans for how i learn for exam😁"Reinforcement Learning Cheat Sheet" I Replaced Chrome with Safari for AI Browser Automation. Here's What Broke (and What Finally Worked) How Python Borrows Other People's Work The $40 Architecture: Processing 1 Billion API Requests with 99.99% Uptime Vibe Coding: A Workflow Guide (From Zero to SaaS) Most webhook security guides protect the wrong side. The scary part is delivery. Headless CMS for TanStack Start: Build a Blog with Cosmic EU Age Verification App "Hacked in 2 Minutes" — What Actually Happened Comfy Cloud’s delete function does not actually remove files Running AI Models on GPU Cloud Servers: A Beginner Guide Event-driven media intelligence with AWS Step Functions and Bedrock I scored 500 AI prompts across 8 quality dimensions — here's what broke How to Call Google Gemini API from Next.js (Free Tier, No Backend Needed) The Portal Protocol: Reclaiming Human Connection in the Age of AI How to Fix Your Team's Scattered Knowledge Problem With a Self-Hosted Forum Intro to tc Cloud Functors: A Graph-First Mental Model for the Modern Cloud Designing Multi-Tenant Backends With Both Ownership and Team Access I Built a Neumorphic CSS Library with 77+ Components — Here's What I Learned PostgreSQL Performance Optimization: Why Connection Pooling Is Critical at Scale Cómo construí un SaaS multi-rubro para gestionar expensas en Argentina con FastAPI + Vue 3 🚀 I Built an Ethical Hacking Scanner Tool – Open Source Project I Replaced /usage and /context in Claude Code With a Single Statusline A Pythonic Way to Handle Emails (IMAP/SMTP) with Auto-Discovery and AI-Ready Design I Collected 8.9 Million Polymarket Price Points — Here's What I Found About How Markets Really Move EcoTrack AI — Carbon Footprint Tracker & Dashboard Everyone's Using AI. No One Agrees How. 5 self-hosted ebook managers worth trying in 2026 Building Your First AI Agent with LangChain: From Chatbot to Autonomous Assistant
CI/CD con GitHub Actions, Terraform y AWS desplegando OWA...
Hassel Muñoz · 2026-05-04 · via DEV Community

El problema real

Gestionar infraestructura manualmente sigue siendo uno de los mayores puntos de fricción en equipos DevOps. Cambios no auditados, configuraciones inconsistentes entre ambientes y despliegues manuales generan errores difíciles de rastrear y operaciones poco confiables.

La solución moderna es automatizar completamente el ciclo de vida de infraestructura y despliegue utilizando Infrastructure as Code (IaC) y pipelines CI/CD.

En este proyecto implementaremos un flujo automatizado utilizando GitHub Actions, Terraform y AWS para desplegar OWASP Juice Shop, una aplicación vulnerable utilizada ampliamente para prácticas de seguridad ofensiva y pruebas de AppSec.


¿Qué implementa este proyecto?

Este laboratorio implementa un pipeline CI/CD completo que automatiza:

  • Validación de infraestructura
  • Planificación de cambios Terraform
  • Despliegue automático en AWS
  • Gestión declarativa de infraestructura
  • Protección de ramas y flujo GitOps
  • Destrucción controlada de recursos

Todo utilizando herramientas modernas del ecosistema cloud-native.


Arquitectura del flujo CI/CD


Objetivos del proyecto

  • Implementar un flujo CI/CD automatizado utilizando GitHub Actions
  • Utilizar Terraform como herramienta de Infrastructure as Code
  • Desplegar automáticamente OWASP Juice Shop en AWS
  • Aplicar buenas prácticas DevOps y GitOps
  • Comprender el ciclo completo desde código hasta despliegue

Tecnologías utilizadas

Tecnología Propósito
GitHub Actions Automatización CI/CD
Terraform Infrastructure as Code
AWS Infraestructura cloud
Elastic Beanstalk Hosting de aplicación
S3 Backend Almacenamiento remoto del state
DynamoDB State locking de Terraform
OWASP Juice Shop Aplicación vulnerable de pruebas

Estructura del repositorio

backend.tf

Define el backend remoto de Terraform.

Ejemplo recomendado:

terraform {
  backend "s3" {
    bucket         = "terraform-state-prod"
    key            = "juice-shop/terraform.tfstate"
    region         = "us-east-1"
    dynamodb_table = "terraform-locks"
    encrypt        = true
  }
}

Enter fullscreen mode Exit fullscreen mode

Esto permite:

  • State remoto compartido
  • Versionado
  • Cifrado
  • Locking concurrente
  • Trabajo colaborativo seguro

provider.tf

Define el provider AWS utilizado por Terraform.

provider "aws" {
  region = var.aws_region
}

Enter fullscreen mode Exit fullscreen mode


vars.tf

Contiene variables reutilizables para:

  • Región AWS
  • Networking
  • Nombres de recursos
  • Configuración de ambientes

hs-juice-shop.tf

Contiene la infraestructura principal:

  • VPC
  • Subredes públicas y privadas
  • NAT Gateway
  • Elastic Beanstalk
  • CodePipeline
  • Recursos asociados

GitHub Actions Workflow

action-tf-plan.yaml

Se ejecuta en cada Pull Request.

Funciones principales

  • terraform fmt
  • terraform validate
  • terraform plan
  • Validación de cambios
  • Revisión previa antes del merge

Esto evita cambios inseguros en infraestructura.


action-tf-deploy.yaml

Se ejecuta automáticamente después de un merge a main.

Funciones principales

  • terraform init
  • terraform plan
  • terraform apply -auto-approve

Automatiza completamente el despliegue.


action-tf-destroy.yaml

Permite destruir la infraestructura manualmente.

Funciones principales

  • terraform destroy
  • Eliminación controlada de recursos
  • Optimización de costos

Seguridad y buenas prácticas

GitHub Secrets

Las credenciales AWS deben almacenarse como secretos:

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

Sin embargo, en ambientes modernos se recomienda utilizar:

GitHub OIDC + IAM Roles

Esto elimina credenciales estáticas y mejora significativamente la seguridad.


Protección de rama main

La rama principal debe tener protección habilitada:

  • Pull Requests obligatorios
  • Reviews requeridos
  • Status checks obligatorios
  • Bloqueo de pushes directos

Esto implementa prácticas GitOps reales.


Buenas prácticas recomendadas

  • Utilizar backend remoto en S3
  • Habilitar locking con DynamoDB
  • Evitar state local
  • No almacenar state en Git
  • Ejecutar terraform fmt y validate
  • Integrar análisis de seguridad con tfsec o Checkov
  • Separar ambientes (dev, qa, prod)
  • Utilizar variables por entorno
  • Destruir recursos no utilizados

Consideraciones sobre costos

Este laboratorio despliega recursos reales en AWS:

  • VPC
  • NAT Gateway
  • Elastic Beanstalk
  • CodePipeline
  • Networking asociado

El NAT Gateway genera costos incluso sin tráfico significativo.

Se recomienda destruir la infraestructura al finalizar las pruebas:

terraform destroy

Enter fullscreen mode Exit fullscreen mode


Resultado esperado

Al finalizar este proyecto tendrás:

  • Un pipeline CI/CD funcional
  • Infraestructura desplegada automáticamente
  • Flujo GitOps básico implementado
  • Experiencia práctica con Terraform y GitHub Actions
  • Integración real con AWS

Además, entenderás cómo equipos DevOps modernos automatizan infraestructura cloud utilizando Infrastructure as Code.


Conclusión

Infrastructure as Code no se trata únicamente de automatizar despliegues. Se trata de convertir infraestructura en un activo versionable, auditable y reproducible.

Terraform + GitHub Actions + AWS forman una combinación extremadamente poderosa para construir pipelines modernos, escalables y alineados con prácticas DevOps reales.

Automatizar infraestructura ya no es opcional. Es parte fundamental de cualquier arquitectura cloud moderna.