Ottimizzare il DevOps: integrare Azure CLI nelle pipeline CI/CD
By Mirko Peters ·
Nel mondo frenetico della distribuzione del software moderna, efficienza e velocità sono tutto. Man mano che i team di sviluppo adottano le pratiche di integrazione continua e distribuzione continua (CI/CD), la necessità di strumenti di automazione leggeri, affidabili e multipiattaforma non è mai stata così critica. Che tu stia creando ambienti di staging temporanei, distribuendo infrastruttura co
Automatically translated with AI from the original post. Read the English original
Nel mondo frenetico della distribuzione del software moderna, efficienza e velocità sono tutto. Man mano che i team di sviluppo adottano le pratiche di integrazione continua e distribuzione continua (CI/CD), la necessità di strumenti di automazione leggeri, affidabili e multipiattaforma non è mai stata così critica. Che tu stia creando ambienti di staging temporanei, distribuendo infrastruttura come codice o configurando microservizi, gli strumenti della tua pipeline devono eseguire le operazioni in modo rapido e coerente.
Ecco Azure CLI. Progettata per semplicità, velocità ed esecuzione multipiattaforma, è rapidamente diventata lo strumento di riferimento per i cloud engineer che vogliono semplificare i propri flussi di lavoro DevOps. In questo post esploreremo perché Azure CLI brilla nelle moderne pipeline di distribuzione, come si confronta con altri strumenti di gestione e come puoi integrarla senza problemi nei tuoi processi CI/CD.
Se ti è piaciuto questo approfondimento, ascolta il nostro episodio podcast correlato, Azure CLI vs PowerShell: quale dovresti usare?, in cui analizziamo le differenze fondamentali tra le principali interfacce di gestione cloud di Microsoft.
Introduzione ad Azure CLI in CI/CD
Le pipeline di integrazione continua e distribuzione continua richiedono strumenti in grado di funzionare in ambienti container minimali senza un sovraccarico eccessivo. Tradizionalmente, gli script di automazione erano legati a sistemi operativi specifici, creando attriti quando si passava dalle macchine locali degli sviluppatori ai build agent e ai cluster di produzione. Il DevOps moderno richiede un cambio di rotta verso strumenti che garantiscano una piena parità tra Windows, macOS e Linux.
Azure CLI risponde direttamente a queste esigenze. Grazie a una struttura di comandi pulita e adatta agli script, che restituisce JSON per impostazione predefinita, consente a sviluppatori e agent automatizzati di interrogare, creare e modificare risorse cloud con il minimo sforzo. Se integrata in una pipeline CI/CD, come GitHub Actions, GitLab CI o Azure DevOps, Azure CLI trasforma i passaggi di distribuzione astratti in codice ripetibile e deterministico.
Perché Azure CLI per le pipeline moderne
Quando si progettano architetture CI/CD moderne, ogni secondo conta. I build agent consumano risorse di calcolo e code di distribuzione prolungate possono rallentare la velocità di sviluppo. Azure CLI è specificamente ottimizzata per questi ambienti ad alta velocità. Poiché la sua architettura sottostante si basa su chiamate REST leggere, l'esecuzione è eccezionalmente rapida ed efficiente in termini di risorse.
Inoltre, gli build agent containerizzati spesso girano su immagini Linux ridotte all'essenziale. Installare dipendenze ingombranti può appesantire i tempi di avvio della pipeline. Il ridotto ingombro di Azure CLI e la sua installazione semplice la rendono un alleato ideale per i runner CI/CD basati su Docker. Consente agli sviluppatori di testare gli script di distribuzione in locale, in un ambiente shell identico a quello eseguito dal server di build remoto, riducendo drasticamente i bug del tipo "funziona sulla mia macchina".
Azure CLI vs PowerShell: confronto rapido
Un dibattito frequente nella gestione del cloud riguarda la scelta tra Azure CLI e PowerShell. Entrambi gli strumenti sono estremamente potenti, ma si rivolgono a profili utente e modelli operativi completamente diversi. Per capire perché Azure CLI spesso è la scelta migliore per le pipeline CI/CD, conviene esaminare come si confrontano fianco a fianco.
| Scenario | Strumento consigliato | Perché si distingue |
|---|---|---|
| Distribuzione rapida di risorse | Azure CLI | Veloce, leggera, comandi semplici, funziona su qualsiasi piattaforma, ottima per DevOps e scripting. |
| Automazione aziendale | PowerShell | Gestisce automazioni complesse, output basato su oggetti, operazioni in blocco, forte integrazione con Windows. |
| Integrazione in pipeline CI/CD | Azure CLI | Comandi di alto livello, supporto nativo per l'infrastruttura come codice, configurazione semplice della pipeline. |
| Scripting avanzato | PowerShell | Scripting flessibile, creazione di strumenti personalizzati, controllo approfondito delle risorse Azure. |
| Gestione multipiattaforma | Azure CLI | Funziona su Linux, macOS e Windows, sviluppata in Python, ideale per ambienti eterogenei. |
Mentre PowerShell eccelle nelle attività amministrative pesanti e orientate agli oggetti e nelle integrazioni profonde con Windows, Azure CLI prevale nelle pipeline containerizzate grazie al suo output testuale lineare, ai tempi di esecuzione più rapidi per operazioni leggere in blocco e alla nativa compatibilità con Bash.
Installazione e configurazione di Azure CLI
Prima di automatizzare la tua infrastruttura cloud, devi assicurarti che Azure CLI sia installata correttamente e autenticata nell'ambiente di distribuzione. Per fortuna l'installazione è semplice, indipendentemente dal sistema operativo.
Se stai configurando una macchina locale o un agente di build virtuale che usa Windows, puoi installare 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.msiPer i runner CI/CD basati su Linux (come i runner standard di GitHub Actions con Ubuntu), l'installazione può essere completata in un unico passaggio usando il repository di pacchetti Microsoft, oppure puoi sfruttare gli ambienti di runner preinstallati che includono già Azure CLI per impostazione predefinita. Una volta installata, verificarne il funzionamento è semplice: basta eseguire:
az --versionPer l'autenticazione nella pipeline, evita gli accessi interattivi tramite browser. Configura invece la pipeline in modo che si autentichi in modo sicuro usando un Service Principal o una Managed Identity:
az login --service-principal -u $AZURE_CLIENT_ID -p $AZURE_CLIENT_SECRET --tenant $AZURE_TENANT_IDSintassi e comandi principali di Azure CLI
Il bello di Azure CLI sta nella sua sintassi intuitiva e prevedibile. Ogni comando inizia con il namespace az, seguito dal gruppo di risorse o dal servizio e, infine, dall'azione da eseguire. Questa struttura di comandi lineare rende la scrittura e la lettura degli script di pipeline sorprendentemente semplici.
Ecco alcuni comandi fondamentali usati di frequente nell'automazione cloud:
# 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.jsonPer impostazione predefinita, i comandi di Azure CLI restituiscono payload JSON puliti. Questo rende banale interrogare proprietà specifiche con le espressioni JMESPath integrate (--query) e passare questi valori ai passaggi successivi del flusso di lavoro CI/CD.
Automatizzare le distribuzioni con Azure CLI
L'automazione è il cuore del DevOps. Quando distribuisci applicazioni in Azure, difficilmente vuoi affidarti a clic manuali nel portale di Azure. Incapsulando la logica di distribuzione in script di Azure CLI, garantisci una coerenza assoluta tra gli ambienti di sviluppo, staging e produzione.
Immagina di dover effettuare il provisioning di un nuovo Azure App Service, aggiornarne le impostazioni di configurazione e distribuire il codice a ogni merge nel ramo principale. Uno script automatizzato con Azure CLI rende tutto questo semplicissimo:
# 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..."
Poiché questi comandi sono idempotenti, eseguirli più volte non comprometterà la tua infrastruttura; al contrario, assicureranno che l'ambiente di destinazione corrisponda allo stato di configurazione desiderato.
Integrare Azure CLI nelle pipeline CI/CD
Integrare i comandi di Azure CLI in orchestratori CI/CD diffusi come GitHub Actions o Azure DevOps Pipelines è straordinariamente semplice. Poiché gli agenti di pipeline eseguono normalmente script shell, puoi inserire direttamente i tuoi comandi `az` standard nei file di configurazione del flusso di lavoro.
Ecco un esempio di frammento di un file di flusso di lavoro di GitHub Actions che accede ad Azure e distribuisce un'applicazione 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
Combinando le azioni ufficiali dei runner con i comandi grezzi di Azure CLI, crei una pipeline di distribuzione robusta, verificabile e automatizzata, che viene eseguita senza intoppi a ogni modifica del codice.
Best practice per semplificare il DevOps con Azure CLI
Per ottenere il massimo dall'automazione con Azure CLI e mantenere le tue pipeline CI/CD sicure ed efficienti, segui queste best practice consolidate:
- Non inserire mai i segreti nel codice: conserva sempre le credenziali del service principal, le stringhe di connessione e le chiavi API nel gestore di segreti sicuro della tua piattaforma CI/CD (ad esempio GitHub Secrets o i Variable Group di Azure DevOps).
- Fissa le versioni della CLI: gli ambienti cloud cambiano rapidamente. Per evitare modifiche incompatibili impreviste nelle pipeline, definisci esplicitamente la versione di Azure CLI che i tuoi agenti di build devono usare.
- Sfrutta l'interrogazione JSON: usa il parametro integrato
--queryper estrarre ID o endpoint specifici dall'output dei comandi, invece di scrivere espressioni regolari o script di parsing complessi. - Mantieni gli script idempotenti: progetta i comandi della CLI in modo che possano essere eseguiti ripetutamente senza effetti collaterali indesiderati o errori di duplicazione delle risorse.
- Pulisci gli ambienti di test: usa script di eliminazione automatica nelle pipeline delle PR per rimuovere i gruppi di risorse temporanei ed evitare di accumulare costi cloud inutili.
Conclusioni
Integrare Azure CLI nelle tue pipeline CI/CD è una svolta per i team DevOps moderni. La sua leggerezza, la compatibilità multipiattaforma e la sintassi intuitiva ne fanno il compagno ideale per distribuzioni cloud rapide e automatizzate. Combinando pratiche di autenticazione sicure, script ben strutturati e un'integrazione solida nelle pipeline, puoi raggiungere livelli di velocità e affidabilità senza precedenti nel ciclo di vita della distribuzione del software.
Per approfondire questo argomento e ascoltare un acceso confronto sulle filosofie della riga di comando, dai un'occhiata al nostro episodio podcast correlato: Azure CLI vs PowerShell: Which Should You Use?. Padroneggia entrambi gli strumenti, comprendi i loro punti di forza unici e prendi il pieno controllo della tua architettura cloud di Azure già da oggi!