Optimizar DevOps: integrar Azure CLI en pipelines de CI/CD
By Mirko Peters ·
En el vertiginoso mundo de la entrega de software moderna, la eficiencia y la velocidad lo son todo. A medida que los equipos de desarrollo adoptan prácticas de integración continua y despliegue continuo (CI/CD), la necesidad de herramientas de automatización ligeras, fiables y multiplataforma nunca ha sido más crítica. Tanto si levantas entornos de staging temporales, despliegas infraestructura c
Automatically translated with AI from the original post. Read the English original
En el vertiginoso mundo de la entrega de software moderna, la eficiencia y la velocidad lo son todo. A medida que los equipos de desarrollo adoptan prácticas de integración continua y despliegue continuo (CI/CD), la necesidad de herramientas de automatización ligeras, fiables y multiplataforma nunca ha sido más crítica. Tanto si levantas entornos de staging temporales, despliegas infraestructura como código o configuras microservicios, las herramientas de tu pipeline deben ejecutarse de forma rápida y consistente.
Llega Azure CLI. Diseñada para ser sencilla, rápida y ejecutable en cualquier plataforma, se ha convertido rápidamente en la herramienta de referencia para los ingenieros de nube que quieren optimizar sus flujos de trabajo de DevOps. En este artículo veremos por qué Azure CLI brilla en los pipelines de despliegue modernos, cómo se compara con otras herramientas de gestión y cómo puedes integrarla sin fricciones en tus procesos de CI/CD.
Si te gusta este análisis en profundidad, no dejes de escuchar nuestro episodio de podcast relacionado, Azure CLI vs PowerShell: ¿cuál deberías usar?, donde desglosamos las diferencias definitivas entre las principales interfaces de gestión en la nube de Microsoft.
Introducción a Azure CLI en CI/CD
Los pipelines de integración y despliegue continuos necesitan herramientas que puedan ejecutarse en entornos de contenedores mínimos sin una sobrecarga importante. Tradicionalmente, los scripts de automatización estaban muy ligados a sistemas operativos concretos, lo que generaba fricciones al migrar entre los equipos de desarrollo locales, los agentes de compilación y los clústeres de producción. El DevOps moderno exige herramientas que ofrezcan una paridad total entre Windows, macOS y Linux.
Azure CLI responde directamente a estas necesidades. Gracias a una estructura de comandos limpia y apta para scripts, que devuelve JSON por defecto, permite a desarrolladores y agentes automatizados consultar, crear y modificar recursos en la nube con poco esfuerzo. Cuando se integra en un pipeline de CI/CD, como GitHub Actions, GitLab CI o Azure DevOps, Azure CLI convierte pasos de despliegue abstractos en código repetible y determinista.
Por qué Azure CLI para pipelines modernos
Al diseñar arquitecturas modernas de CI/CD, cada segundo cuenta. Los agentes de compilación consumen recursos de cómputo, y las colas de despliegue prolongadas pueden frenar la velocidad de desarrollo. Azure CLI está especialmente optimizada para estos entornos de alta velocidad. Como su arquitectura subyacente se basa en llamadas REST ligeras, la ejecución es excepcionalmente rápida y eficiente en el uso de recursos.
Además, los agentes de compilación en contenedores suelen ejecutarse sobre imágenes de Linux simplificadas. Instalar dependencias voluminosas puede ralentizar el arranque del pipeline. La huella mínima de Azure CLI y su instalación sencilla la convierten en una compañera ideal para los runners de CI/CD basados en Docker. Además, permite a los desarrolladores probar los scripts de despliegue en local, en un entorno de shell idéntico al que ejecuta el servidor de compilación remoto, lo que reduce drásticamente los errores del tipo "en mi máquina funciona".
Azure CLI frente a PowerShell: comparativa rápida
Un debate habitual en la gestión de la nube es elegir entre Azure CLI y PowerShell. Ambas herramientas son enormemente potentes, pero se orientan a perfiles de usuario y patrones operativos muy distintos. Para entender por qué Azure CLI suele llevarse la palma en los pipelines de CI/CD, conviene compararlas lado a lado.
| Escenario | Herramienta recomendada | Qué la distingue |
|---|---|---|
| Despliegue rápido de recursos | Azure CLI | Rápida, ligera, comandos sencillos, funciona en cualquier plataforma, ideal para DevOps y scripting. |
| Automatización empresarial | PowerShell | Gestiona automatizaciones complejas, salida basada en objetos, operaciones masivas y una gran integración con Windows. |
| Integración en pipelines de CI/CD | Azure CLI | Comandos de alto nivel, compatibilidad nativa con infraestructura como código y configuración sencilla de pipelines. |
| Scripting avanzado | PowerShell | Scripting flexible, creación de herramientas propias y control detallado de los recursos de Azure. |
| Gestión multiplataforma | Azure CLI | Se ejecuta en Linux, macOS y Windows, está desarrollada en Python y es ideal para entornos heterogéneos. |
Aunque PowerShell destaca en tareas administrativas pesadas y orientadas a objetos, y en integraciones profundas con Windows, Azure CLI gana en pipelines basados en contenedores gracias a su salida de texto sencilla, tiempos de ejecución más rápidos para operaciones masivas ligeras y su compatibilidad nativa con Bash.
Instalación y configuración de Azure CLI
Antes de automatizar tu infraestructura en la nube, debes asegurarte de que Azure CLI esté correctamente instalada y autenticada en tu entorno de implementación. Por suerte, la instalación es sencilla sin importar el sistema operativo.
Si configuras un equipo local o un agente de compilación en una máquina virtual con Windows, puedes instalar la CLI con PowerShell:
Invoke-WebRequest -Uri https://aka.ms/installazurecliwindows -OutFile .\AzureCLI.msi; Start-Process msiexec.exe -Wait -ArgumentList '/I AzureCLI.msi /quiet'; rm .\AzureCLI.msiPara los runners de CI/CD basados en Linux (como los runners estándar de Ubuntu en GitHub Actions), la instalación puede resolverse en un solo paso usando el repositorio de paquetes de Microsoft. También puedes aprovechar los entornos de runner preinstalados, que ya incluyen Azure CLI de forma predeterminada. Una vez instalada, para verificar la instalación basta con ejecutar:
az --versionPara la autenticación en los pipelines, evita los inicios de sesión interactivos en el navegador. En su lugar, configura tu pipeline para autenticarse de forma segura mediante una entidad de servicio o una identidad administrada:
az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_IDSintaxis y comandos básicos de Azure CLI
Lo bueno de Azure CLI es su sintaxis intuitiva y predecible. Cada comando empieza con el espacio de nombres az, seguido del grupo de recursos o del servicio y, por último, de la acción que quieres realizar. Esta estructura de comandos plana facilita muchísimo escribir y leer scripts de pipeline.
Estos son algunos comandos fundamentales que se usan con frecuencia en la automatización en la nube:
# Create a resource group
az group create --name MyPipelineResourceGroup --location eastus
# List all virtual machines in a table format
az vm list --output table
# Deploy an ARM or Bicep template
az deployment group create --resource-group MyPipelineResourceGroup --template-file azuredeploy.jsonDe forma predeterminada, los comandos de Azure CLI devuelven cargas JSON limpias. Esto hace muy sencillo consultar propiedades específicas con expresiones JMESPath integradas (--query) y pasar esos valores a los siguientes pasos de tu flujo de CI/CD.
Automatización de implementaciones con Azure CLI
La automatización es el corazón de DevOps. Cuando implementas aplicaciones en Azure, rara vez quieres depender de clics manuales en Azure Portal. Si encapsulas la lógica de implementación en scripts de Azure CLI, garantizas una consistencia total entre los entornos de desarrollo, preproducción y producción.
Imagina que necesitas aprovisionar un nuevo Azure App Service, actualizar su configuración y desplegar tu código en cada combinación (merge) con la rama principal. Un script automatizado con Azure CLI lo resuelve fácilmente:
# Create an App Service plan
az appservice plan create --name MyPlan --resource-group MyResourceGroup --sku B1 --is-linux
# Create the web app
az webapp create --name MyAppService --resource-group MyResourceGroup --plan MyPlan --runtime "NODE:18-lts"
# Configure environment variables
az webapp config appsettings set --name MyAppService --resource-group MyResourceGroup --settings DATABASE_URL="Server=tcp:myServer.database.windows.net..."
Como estos comandos son idempotentes, ejecutarlos varias veces no romperá tu infraestructura; en cambio, asegurarán que el entorno de destino coincida con el estado de configuración deseado.
Integración de Azure CLI en pipelines de CI/CD
Integrar comandos de Azure CLI en orquestadores de CI/CD populares, como GitHub Actions o Azure DevOps Pipelines, es muy sencillo. Como los agentes de pipeline suelen ejecutar scripts de shell, puedes incluir tus comandos `az` estándar directamente en los archivos de configuración de tu flujo de trabajo.
Este es un ejemplo de fragmento de un archivo de flujo de trabajo de GitHub Actions que inicia sesión en Azure y despliega una aplicación web:
name: Deploy to Azure
on:
push:
branches: [ main ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Azure Login
uses: azure/login@v1
with:
creds: ${{ secrets.AZURE_CREDENTIALS }}
- name: Deploy Azure Resources
run: |
az group create --name ProdRG --location eastus
az deployment group create --resource-group ProdRG --template-file infra/main.bicep
Al combinar las acciones oficiales de los runners con comandos de Azure CLI, creas un pipeline de implementación robusto, auditable y automatizado que se ejecuta sin interrupciones con cada cambio en el código.
Buenas prácticas para optimizar DevOps con Azure CLI
Para sacar el máximo partido a tu automatización con Azure CLI y mantener tus pipelines de CI/CD seguros y eficientes, sigue estas buenas prácticas probadas:
- Nunca incluyas secretos en el código: guarda siempre las credenciales de tu entidad de servicio, las cadenas de conexión y las claves de API en el gestor de secretos seguro de tu plataforma de CI/CD (por ejemplo, GitHub Secrets o los grupos de variables de Azure DevOps).
- Fija las versiones de la CLI: los entornos en la nube cambian rápidamente. Para evitar cambios incompatibles inesperados en tus pipelines, define de forma explícita la versión de Azure CLI que deben usar tus agentes de compilación.
- Aprovecha las consultas JSON: usa el parámetro
--queryintegrado para extraer IDs o endpoints específicos de las salidas de los comandos, en lugar de escribir expresiones regulares complejas o scripts de análisis externos. - Mantén los scripts idempotentes: diseña tus comandos de CLI para que puedan ejecutarse repetidamente sin provocar efectos secundarios no deseados ni errores por duplicación de recursos.
- Limpia los entornos de prueba: utiliza scripts de eliminación automatizados en tus pipelines de PR para borrar los grupos de recursos temporales y evitar que se acumulen costes innecesarios en la nube.
Conclusión
Integrar Azure CLI en tus pipelines de CI/CD es un cambio de juego para los equipos de DevOps modernos. Su naturaleza ligera, su compatibilidad multiplataforma y su sintaxis intuitiva lo convierten en el compañero ideal para implementaciones en la nube rápidas y automatizadas. Si combinas prácticas de autenticación seguras, scripts bien estructurados e integración sólida con los pipelines, podrás lograr niveles sin precedentes de velocidad y fiabilidad en tu ciclo de entrega de software.
Para profundizar aún más en este tema y escuchar un animado debate sobre las filosofías de la línea de comandos, consulta nuestro episodio complementario del podcast: Azure CLI vs PowerShell: Which Should You Use?. Domina ambas herramientas, comprende sus fortalezas únicas y toma el control absoluto de tu arquitectura de nube de Azure hoy mismo.