Automatización de actualizaciones de infraestructura
Implemente workflows para planificar, aplicar y destruir cambios de infraestructura de forma segura, con pasos de revisión y aprobación.
Automatización de actualizaciones de infraestructura es una lección gratuita de CI/CD with GitHub Actions & DevOps Pipelines en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de CI/CD with GitHub Actions & DevOps Pipelines, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de CI/CD with GitHub Actions & DevOps Pipelines incluye 4 lecciones en total.
¿Por qué automatizar las actualizaciones de IaC?
Gestionar la infraestructura manualmente puede ser lento y propenso a errores. Infrastructure as Code (IaC) ayuda a resolver este problema al definir la infraestructura mediante código.
Automatizar las actualizaciones de IaC con herramientas como GitHub Actions aporta coherencia y rapidez, y reduce los errores humanos. Esto garantiza que la infraestructura coincida siempre con su definición.
Ciclo de vida del flujo de trabajo de IaC
La automatización de IaC sigue un ciclo de vida claro: plan, apply y, en ocasiones, destroy. Cada paso puede integrarse en su pipeline de CI/CD.
- Plan: Revisar los cambios propuestos sin aplicarlos.
- Apply: Implementar los cambios planificados en la infraestructura.
- Destroy: Eliminar los recursos de infraestructura (¡utilícelo con extrema precaución!).
GitHub Actions ayuda a gestionar estos pasos de forma segura.
Planificación de cambios con Terraform
Antes de realizar cualquier cambio, es fundamental saber qué sucederá. El comando plan de Terraform le ayuda a previsualizar las modificaciones de la infraestructura.
Compara el estado deseado (obtenido del código) con el estado actual de su infraestructura y muestra qué recursos se añadirán, modificarán o destruirán.
Pruebe a ejecutar estos comandos en un proyecto sencillo de Terraform:
echo "Initializing Terraform..."
terraform init
echo "Running terraform plan..."
terraform planFlujo de trabajo para `terraform plan`
Vamos a crear un flujo de trabajo de GitHub Actions que ejecute automáticamente terraform plan cada vez que se envíe código a la rama principal. Esto le proporciona información inmediata sobre los cambios propuestos.
Después, podrá revisar el resultado del plan directamente en el Pull Request o en los registros del flujo de trabajo.
name: 'Terraform Plan'
on:
pull_request:
branches:
- main
jobs:
terraform:
name: 'Terraform Plan'
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Plan
id: plan
run: terraform plan -no-colorAprobación manual con entornos
Aplicar automáticamente cambios en la infraestructura puede ser arriesgado. GitHub Environments permite añadir pasos de aprobación manual a los flujos de trabajo.
Puede definir entornos (por ejemplo, "staging" y "production") y establecer reglas, como exigir revisores específicos o períodos de espera antes de que un trabajo de despliegue pueda continuar.
Esto añade una puerta de control fundamental para la revisión humana antes de realizar operaciones sensibles.
Flujo de trabajo para aplicar cambios
Para aplicar los cambios de forma segura, configuraremos un flujo de trabajo dirigido a un GitHub Environment protegido. El trabajo se pausará y esperará la aprobación de los miembros del equipo designados.
El comando terraform apply solo se ejecutará después de obtener la aprobación y actualizará su infraestructura.
name: 'Terraform Apply'
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to deploy to'
required: true
default: 'staging'
jobs:
terraform:
name: 'Terraform Apply'
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.environment }} # Target environment for approval
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Apply
id: apply
run: terraform apply -auto-approveDestrucción segura de la infraestructura
El comando terraform destroy elimina permanentemente todos los recursos definidos en su configuración de Terraform. Se trata de una operación muy potente y potencialmente peligrosa.
Solo debe utilizarse en situaciones específicas y controladas, como desmantelar un entorno de prueba temporal. ¡Compruebe siempre todo dos veces antes de continuar!
Nunca automatice un `destroy` sin sólidas puertas de aprobación manual y varias confirmaciones.
echo "Preparing to destroy infrastructure..."
terraform init
terraform plan -destroy
read -p "Are you absolutely sure you want to destroy ALL resources? (yes/no): " CONFIRM
if [ "$CONFIRM" = "yes" ]; then
echo "Destroying infrastructure..."
terraform destroy -auto-approve
else
echo "Destroy operation cancelled."
fiDestrucción controlada de la infraestructura
Incluso para `destroy`, podemos aprovechar GitHub Environments como una capa adicional de protección. Esto garantiza que nadie pueda destruir accidental o maliciosamente los recursos de producción sin la autorización adecuada.
El flujo de trabajo debe exigir aprobación y solo debe poder activarse manualmente, idealmente por parte de roles específicos.
name: 'Terraform Destroy'
on:
workflow_dispatch:
inputs:
environment:
description: 'Environment to destroy'
required: true
default: 'staging'
jobs:
terraform:
name: 'Terraform Destroy'
runs-on: ubuntu-latest
environment: ${{ github.event.inputs.environment }} # Target environment for approval
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Setup Terraform
uses: hashicorp/setup-terraform@v3
- name: Terraform Init
id: init
run: terraform init
- name: Terraform Destroy
id: destroy
run: terraform destroy -auto-approvePrácticas recomendadas para la automatización de IaC
Para mantener un pipeline de IaC sólido y seguro:
- Revisiones de código: Exija siempre revisiones de código para los cambios de IaC.
- Mínimo privilegio: Conceda a los tokens del flujo de trabajo y a las cuentas de servicio únicamente los permisos mínimos necesarios.
- Bloqueo del estado: Asegúrese de que su herramienta de IaC (como Terraform) utilice el bloqueo del estado para evitar modificaciones simultáneas.
- Cambios pequeños e incrementales: Evite las actualizaciones de infraestructura grandes y monolíticas.
- Entornos separados: Utilice entornos distintos (dev, staging, prod) con diferentes reglas de aprobación.
Comprobación del flujo de trabajo de IaC
Ha aprendido a automatizar las actualizaciones de IaC mediante la planificación, la aplicación y la destrucción de recursos. Ahora, compruebe cuánto ha aprendido sobre la protección de estos procesos.
Repaso: actualizaciones automatizadas de IaC
En esta lección, ha aprendido a automatizar sus flujos de trabajo de Infrastructure as Code mediante GitHub Actions. Hemos cubierto lo siguiente:
- Ejecutar
terraform planpara previsualizar los cambios de forma segura. - Utilizar GitHub Environments como puertas de aprobación manual antes de aplicar o destruir la infraestructura.
- Implementar flujos de trabajo para operaciones controladas de
terraform applyyterraform destroy. - Prácticas recomendadas clave para una automatización de IaC segura y fiable.
¡La automatización de IaC le ayuda a gestionar sus recursos en la nube de forma eficiente y con confianza!
Preguntas frecuentes
¿La lección «Automatización de actualizaciones de infraestructura» es gratis?
Sí — el texto completo de «Automatización de actualizaciones de infraestructura» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de CI/CD with GitHub Actions & DevOps Pipelines, actualiza a CoddyKit PRO. El curso de CI/CD with GitHub Actions & DevOps Pipelines incluye 4 lecciones en total.
¿Qué aprenderé en «Automatización de actualizaciones de infraestructura»?
Implemente workflows para planificar, aplicar y destruir cambios de infraestructura de forma segura, con pasos de revisión y aprobación. Practicas CI/CD with GitHub Actions & DevOps Pipelines con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar CI/CD with GitHub Actions & DevOps Pipelines?
No se requiere experiencia previa. CI/CD with GitHub Actions & DevOps Pipelines en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.
¿Cuánto tiempo toma la lección «Automatización de actualizaciones de infraestructura»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de CI/CD with GitHub Actions & DevOps Pipelines?
Sí. Cada lección de CI/CD with GitHub Actions & DevOps Pipelines incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- IaC con Terraform y GitHub Actions
- Gestión de recursos en la nube
- Automatización de actualizaciones de infraestructura
- Gestión del estado de Terraform y backends remotos