Automatizzare la distribuzione con l'interfaccia della riga di comando di Azure

Completato

L'automazione del database non è più solo per le grandi aziende; è ora essenziale per le aziende di tutte le dimensioni per rimanere competitivi. L'automazione delle attività del database è fondamentale per diversi motivi:

  • Controllo granulare su applicazioni e database
  • Scalabilità semplificata, miglioramento dell'efficienza durante la gestione di numerosi asset
  • Riutilizzabilità degli script per l'automazione delle attività di routine
  • Risoluzione dei problemi semplificata quando gli strumenti GUI non sono disponibili

Azure Command-Line Interface (CLI) è uno strumento multipiattaforma che consente di creare e gestire le risorse di Azure. È possibile eseguire comandi tramite il terminale usando prompt interattivi o script.

L'interfaccia della riga di comando di Azure può essere installata in computer Linux, Mac o Windows. È anche possibile eseguirlo da un browser usando il terminale Cloud Shell nel portale di Azure o all'interno di un contenitore Docker.

La sintassi dell'interfaccia della riga di comando di Azure segue il modello reference name - command - parameter - parameter value. Ad esempio, il passaggio tra sottoscrizioni è un'attività comune. Ecco la sintassi:

az account set --subscription "my subscription name"

PowerShell e interfaccia della riga di comando di Azure

Azure PowerShell e l'interfaccia della riga di comando di Azure sono entrambi strumenti da riga di comando multipiattaforma che consentono di creare e gestire risorse di Azure in Windows, macOS e Linux. La differenza principale tra loro risiede negli ambienti shell supportati.

Ambiente di shell Interfaccia della riga di comando di Azure Azure PowerShell
Cmd
Bash
Windows PowerShell
PowerShell

Per scegliere lo strumento corretto, prendere in considerazione l'esperienza e l'ambiente di lavoro.

L'interfaccia della riga di comando di Azure è simile allo scripting bash, rendendola intuitiva per coloro che in genere lavorano con sistemi Linux. D'altra parte, Azure PowerShell include moduli che consentono di gestire le risorse di Azure da PowerShell. I comandi di PowerShell seguono la sintassi verbo-sostantivo standard, rendendola una soluzione naturale per coloro che hanno familiarità con i sistemi Windows.

Di seguito è riportato un rapido confronto tra alcuni comandi comunemente usati nei moduli dell'interfaccia della riga di comando e di PowerShell:

Comando Interfaccia della riga di comando di Azure Azure PowerShell
Accedi con un Web browser az login Connect-AzAccount
Ottenere le sottoscrizioni disponibili az account list Get-AzSubscription
Impostare la sottoscrizione az account set –subscription Set-AzContext -Subscription
Elencare tutte le macchine virtuali az vm list Get-AzVM
Creare un nuovo server SQL az sql server create New-AzSqlServer

Distribuzione di database SQL tramite l'interfaccia della riga di comando di Azure

Ecco un esempio di come distribuire un database SQL e creare una regola del firewall per consentire l'accesso dai servizi di Azure usando l'interfaccia della riga di comando di Azure:

let "randomIdentifier=$RANDOM*$RANDOM"

$resourceGroup = "<your resource group>"
$location = "<your location preference>"
$server = "dp300-sql-server-$randomIdentifier"
$login = "sqladmin"
$password = "Pa$$w0rD-$randomIdentifier"

az sql server create --name $server --resource-group $resourceGroup --location "$location" --admin-user $login --admin-password $password

az sql server firewall-rule create --resource-group $resourceGroup --server $server -n AllowYourIp --start-ip-address 0.0.0.0 --end-ip-address 0.0.0.0

Per altre informazioni su tutti i comandi dell'interfaccia della riga di comando di Azure SQL disponibili, vedere Comandi dell'interfaccia della riga di comando di Azure SQL.

Distribuzione del modello di Azure Resource Manager (ARM) con l'interfaccia della riga di comando di Azure e PowerShell

Con PowerShell sono disponibili più opzioni per l'ambito della distribuzione. È possibile eseguire la distribuzione in un gruppo di risorse, una sottoscrizione, un gruppo di gestione, ovvero una raccolta di sottoscrizioni nello stesso modello di Azure e comunemente usata nelle distribuzioni aziendali di grandi dimensioni o in un tenant. I modelli di Azure Resource Manager sono parametrizzati, che richiedono di passare parametri inline o tramite un file di parametri, come illustrato nell'esempio seguente.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
 -TemplateFile c:\MyTemplates\azuredeploy.json `
 -TemplateParameterFile c:\MyTemplates\storage.parameters.json

I file di parametro e modello possono essere archiviati in un repository Git, in archiviazione blob di Azure o in qualsiasi altro percorso accessibile dalla macchina di distribuzione.

L'interfaccia della riga di comando di Azure offre le stesse opzioni di ambito di distribuzione di PowerShell. È possibile usare file e modelli di parametri locali o remoti, come si farebbe con PowerShell, come illustrato nell'esempio seguente.

az deployment group create --resource-group ExampleResourceGroup --template-file '\path\template.json'

Per distribuire modelli collegati remoti con percorso relativo archiviati in un account di archiviazione, usare query-string per specificare il token di firma di accesso condiviso:

az deployment group create \
  --name linkedTemplateWithRelativePath \
  --resource-group myResourceGroup \
  --template-uri "https://stage20210126.blob.core.windows.net/template-staging/mainTemplate.json" \
  --query-string $sasToken

Nota

Attualmente, l'interfaccia della riga di comando di Azure non supporta la distribuzione diretta di file Bicep remoti. È invece possibile usare l'interfaccia della riga di comando di Bicep per convertire il file Bicep in un modello JSON e quindi distribuire il modello JSON da una posizione remota.