Despliegue de infraestructura con Terraform en Azure
Clase 12 de 22 • Curso de Introducción a DevOps
Contenido del curso
- 5

GitHub Projects: gestión básica de tareas y estructura del código
06:39 - 6

Configuración de proyectos .NET con pruebas unitarias automatizadas
06:41 - 7

Blindaje de rama main y gestión de commits en GitHub
07:07 - 8

Configuración de GitHub Actions para validar pruebas en pull requests
08:35 - 9

Creación de imágenes Docker para APIs de ASP.NET Core
06:52 - 10

Configuración de CI/CD con Docker en GitHub Actions
05:58 - 11

Configuración de despliegue continuo con Docker y GitHub Actions
06:22
- 15

Configuración de OpenTelemetry en aplicaciones .NET Core
08:17 - 16

Variables de ambiente en GitHub Actions y Azure Container App
09:50 - 17

Creación de paneles personalizados con Azure Workbooks
09:50 - 18

Creación de método para obtener contactos con pruebas unitarias
04:02 - 19

Automatización de despliegues con GitHub Actions y pull requests
04:30 - 20

Alternativas de herramientas para procesos DevOps completos
04:06 - 21

Integración de DevOps y metodologías ágiles en equipos de software
03:32 - 22

DevOps como diferenciador entre desarrollo y ingeniería de software
02:55
Contar con una infraestructura confiable y bien estructurada es fundamental al momento de desarrollar y desplegar aplicaciones. Utilizando herramientas como Terraform y servicios como Azure, podemos simplificar este proceso considerablemente, adoptando de este modo buenas prácticas que facilitan la integración continua (CI) y entrega continua (CD).
¿Qué es DevOps y por qué ha cambiado su enfoque?
DevOps es una metodología que integra dos aspectos clave del desarrollo de software: la parte de desarrollo (dev), consistente en la escritura de código y realización de pruebas, con la parte operativa (ops), encargada de la infraestructura necesaria para hospedar la aplicación. En la industria actual, estos dos roles tienden a converger, formando al ingeniero DevOps especialista, capaz de dominar ambas áreas.
¿Cómo desplegar infraestructura utilizando Terraform en Azure?
Para llevar a cabo esta tarea, existen pasos concretos que seguir apoyándonos en archivos y comandos específicos de Terraform.
¿Qué archivos y directorios necesitamos crear?
Primero, dentro del directorio infra, se deben crear los siguientes archivos:
- backends.tf: aquí se almacena la configuración del estado, apuntando hacia una cuenta de almacenamiento previamente creada.
- provider.tf: para establecer el proveedor de Azure RM con el identificador de la suscripción correspondiente.
- variables.tf: configura las variables necesarias para el despliegue de los recursos.
- main.tf: incluye el bloque de Terraform que define los recursos necesarios.
¿Qué comandos se utilizan para desplegar la infraestructura?
Una vez preparados los archivos, se ejecutan los siguientes comandos:
- Terraform init: inicializa y configura el backend especificado.
terraform init -backend-config="<tu_SaaS_token>"
- Terraform plan: visualiza y almacena el plan de acción que Terraform realizará.
terraform plan -out=plan.out
- Terraform apply: aplica los cambios indicados por el plan.
terraform apply plan.out
Finalmente, para eliminar la infraestructura, se utiliza:
terraform destroy
¿Qué componentes se están desplegando en Azure?
Terraform despliega una serie de recursos necesarios para hospedar la aplicación en Azure, tales como:
- Un grupo de recursos (
RG1). - Application Insights, para monitoreo de aplicaciones.
- Log Analytics, para analizar y administrar registros entre recursos.
- Container App Environment, alojando diversos contenedores.
Automatizar estas tareas permitirá adaptarse constantemente a las nuevas necesidades de tu arquitectura mediante procesos continuos de CI/CD. De esta manera, se facilitarán cambios rápidos y seguros en tu infraestructura según la demanda o evolución del proyecto.
¿Has implementado ya metodologías y herramientas similares en tus proyectos? Comparte tu experiencia con Terraform y Azure en los comentarios para enriquecer el conocimiento de nuestra comunidad.