Azure DevOps y ChatGPT, el Equipo Perfecto

Azure DevOps y ChatGPT, el Equipo Perfecto

2025-01-26 16:31:34

Creanmé que esto les ahorrará horas de trabajo manual, de crear esos YAML infinitos y más.

Vamos paso a paso a través de las tareas que realicé en Azure.
Vamos a aprender cómo automatizar la eliminación de recursos con un pipeline, trabajar con bases de datos SQL y crear una Web App.

 Pero antes de eso, quiero hablar sobre cómo Azure DevOps y ChatGPT pueden ser aliados estratégicos en este tipo de tareas.

Azure DevOps y ChatGPT, el Equipo Perfecto

Automatizar procesos en Azure usando Azure DevOps no solo ahorra tiempo, sino que también reduce errores y permite que el equipo se enfoque en tareas más estratégicas. Por otro lado, ChatGPT complementa este flujo al facilitar la generación de ideas, creación de scripts y solución de problemas en tiempo real.

¿Cómo Azure DevOps nos Ayuda?

  1. Pipelines Automatizados: Con Azure DevOps configuramos pipelines YAML que permiten ejecutar tareas como eliminar recursos, desplegar aplicaciones y actualizar configuraciones de manera repetitiva y confiable.
  2. Control y Trazabilidad: Cada cambio realizado está documentado en la rama de tu repositorio, lo que garantiza que siempre tendrás un registro de lo que sucede en tu infraestructura.
  3. Integración Continua: Con un solo comando en tu repositorio (por ejemplo, un git push), puedes desencadenar procesos completos, desde eliminar recursos hasta crear nuevas instancias en Azure.

¿Cómo ChatGPT Complementa Este Flujo?

ChatGPT se convierte en un asistente virtual técnico al:

  • Generar Scripts Personalizados: Por ejemplo, el YAML para eliminar recursos que mostramos más adelante.
  • Aclarar Dudas en Tiempo Real: Responde preguntas técnicas sobre configuraciones, comandos y mejores prácticas.
  • Proporcionar Ejemplos Detallados: Desde comandos SQL hasta la estructura correcta de un pipeline YAML.

En conjunto, Azure DevOps automatiza tareas complejas, y ChatGPT acelera la creación y resolución de problemas.

Automatización: Creación de un Pipeline para Eliminar Recursos

Primero, vamos a crear un pipeline en Azure DevOps que elimine recursos automáticamente de un grupo de recursos. Esto nos ayudará a mantener nuestro entorno limpio y organizado. Aquí está el plan:

Paso 1: Configurar el Pipeline

Vamos a usar YAML para definir el pipeline. Este es el archivo que necesitamos crear:

trigger:
- main  # Se ejecutará cuando hagamos un cambio en la rama principal

pool:
  name: Default  # Usaremos un agente autoalojado
  demands:
    - Agent.Name -equals DESKTOP-8AR4A2T  # Especificamos el agente

steps:
- task: AzureCLI@2
  displayName: 'Eliminar recursos del grupo de recursos'
  inputs:
    azureSubscription: 'tu-rg-va-aca'  # Conexión de servicio
    scriptType: ps
    scriptLocation: inlineScript
    inlineScript: |
      # Variables
      $RESOURCE_GROUP = "tu-rg-group"
      
      # Comprobar si el grupo de recursos existe
      $resourceGroupExists = az group exists --name $RESOURCE_GROUP
      if ($resourceGroupExists -eq "true") {
          Write-Host "Eliminando recursos del grupo de recursos: $RESOURCE_GROUP"
          
          # Eliminar el grupo de recursos
          az group delete --name $RESOURCE_GROUP --yes --no-wait
          
          Write-Host "¡El grupo de recursos ha sido eliminado exitosamente!"
      } else {
          Write-Host "El grupo de recursos $RESOURCE_GROUP no existe."
      }

Paso 2: Desplegar el Pipeline:

¿Como lo haremos?

  • En Azure DevOps, creamos un pipeline y pegamos este código YAML.
  • Guardamos y ejecutamos.
  • El pipeline verificará si el grupo de recursos existe y lo eliminará automáticamente.

    Gestionar Bases de Datos SQL

    Ahora que nuestro pipeline está listo, vamos a trabajar con bases de datos SQL desde el Query Editor en Azure. Imaginemos que tenemos una tabla llamada Users y queremos insertar algunos datos.

    Paso 1: Crear una Tabla (si no existe)

    Primero, verificamos si nuestra tabla existe. Si no, la creamos con esta consulta:

    CREATE TABLE Users (
        Id INT IDENTITY(1,1) PRIMARY KEY,
        Name NVARCHAR(50) NOT NULL,
        Email NVARCHAR(50) NOT NULL,
        CreatedDate DATETIME NOT NULL
    );

    Paso 2: Insertar Datos

    Ahora vamos a llenar la tabla con información. Ejecutamos esta consulta:

    INSERT INTO Users (Name, Email, CreatedDate)
    VALUES
    ('Antonio Perez', 'antonio.perez@example.com', GETDATE()),
    ('Maria Lopez', 'maria.lopez@example.com', GETDATE()),
    ('Carlos Gomez', 'carlos.gomez@example.com', GETDATE());

3. Crear una Web App en Azure

Por último, vamos a crear una Web App utilizando Azure CLI. Esto es útil para desplegar aplicaciones rápidamente.

Paso 1: Definir Variables

Usaremos estas variables para personalizar la Web App:

  • Grupo de recursos: demo-rg
  • Plan de precios: SKU S2
  • Nombre de la aplicación: appwebtuyaacaconnombre
  • Ubicación: centralus

Paso 2: Ejecutar el Script

Abrimos Azure CLI y ejecutamos este script:

 

# Crear el grupo de recursos (si no existe)
az group create --name demo-rg --location centralus

# Crear un App Service Plan
az appservice plan create --name AppServicePlan2025 --resource-group demo-rg --sku S2 --location centralus

# Crear la Web App
az webapp create --name tuwebappxx --resource-group demo-rg --plan tu-service-plan

Hoy logramos automatizar tareas clave, gestionar datos y desplegar aplicaciones, pero lo más importante fue cómo integramos herramientas para hacer el proceso más eficiente.

  1. Azure DevOps como un Pilar Central: Con sus pipelines y control de versiones, podemos automatizar flujos complejos, documentar cambios y trabajar de manera colaborativa.
  2. ChatGPT como Asistente Inteligente: Nos ayudó a generar el YAML, escribir comandos SQL y encontrar soluciones rápidas a problemas técnicos, ahorrándonos tiempo valioso.
  3. Azure como Plataforma Escalable: Al centralizar todo en Azure, tenemos una solución completa para infraestructura, bases de datos y aplicaciones.

AL Final, es importante conocer la documentación, ya que sin ella, no podremos avanzar si los scripts fallan.
Documentación App Service Plan

La integración de herramientas no solo nos facilita el trabajo, sino que nos impulsa a pensar en cómo podemos optimizar más procesos en el futuro. Hoy aprendimos que automatizar, gestionar y desplegar no son tareas aisladas, sino partes de un ecosistema que, si se configura correctamente, puede lograr resultados impresionantes con el mínimo esfuerzo manual.

Así que mi consejo es: exploren, prueben y automatícenlo todo. Y si tienen dudas, siempre pueden apoyarse en herramientas como ChatGPT o Azure DevOps para avanzar más rápido.

 

 

Anexo los pipelines:
create-sql.yaml

trigger:
- main  # Trigger for my main branch

pool:
  name: Default  # Pool agent self-hosted
 

steps:
- task: AzureCLI@2
  displayName: 'Desplegar base de datos SQL'
  inputs:
    azureSubscription: 'tu-rg-va-aca'  # My service conection
    scriptType: ps  # PowerShell
    scriptLocation: inlineScript
    inlineScript: |
      # Variables
      $RESOURCE_GROUP = "demo-rg"
      $LOCATION = "centralus"
      $SQL_SERVER_NAME = "tuservername"
      $ADMIN_USER = "tuadminloco"
      $ADMIN_PASSWORD = "MEgaPAssQeodqword!"
      $DATABASE_NAME = "myDatabase"

      Write-Output "Creando el grupo de recursos..."
      az group create --name $RESOURCE_GROUP --location $LOCATION

      Write-Output "Creando el servidor SQL..."
      az sql server create `
        --name $SQL_SERVER_NAME `
        --resource-group $RESOURCE_GROUP `
        --location $LOCATION `
        --admin-user $ADMIN_USER `
        --admin-password $ADMIN_PASSWORD

      Write-Output "Configurando reglas de firewall para permitir acceso..."
      az sql server firewall-rule create `
        --resource-group $RESOURCE_GROUP `
        --server $SQL_SERVER_NAME `
        --name AllowMyIP `
        --start-ip-address 0.0.0.0 `
        --end-ip-address 255.255.255.255

      Write-Output "Creando la base de datos SQL..."
      az sql db create `
        --resource-group $RESOURCE_GROUP `
        --server $SQL_SERVER_NAME `
        --name $DATABASE_NAME `
        --service-objective S0

      Write-Output "Despliegue completado exitosamente."


Volver