Creare risorse di Azure con Azure PowerShell usando uno script

Completato

Le attività complesse o ripetitive possono richiedere molto tempo e sono soggette a errori quando vengono eseguite manualmente. Le organizzazioni preferiscono automatizzare queste attività per ridurre i costi ed evitare gli errori.

L'automazione è essenziale nell'esempio di Customer Relationship Management (CRM), in cui si sta testando il software in più macchine virtuali Linux (VM) che devono essere eliminate e ricreate continuamente. Usare uno script di PowerShell per automatizzare la creazione di macchine virtuali è molto più efficiente e affidabile, rispetto a crearle manualmente ogni volta.

Oltre al funzionamento principale della creazione di una macchina virtuale, lo script deve soddisfare alcuni altri requisiti:

  • Creare più macchine virtuali: Usare New-AzVM per creare più macchine virtuali denominate in modo univoco.
  • Parametro del gruppo di risorse: Consentire allo script di accettare il nome del gruppo di risorse come parametro.

In questa unità viene illustrato come scrivere ed eseguire uno script di PowerShell che soddisfi questi requisiti.

Che cos'è uno script di PowerShell?

Uno script di PowerShell è un file di testo contenente comandi e costrutti di controllo. I comandi sono chiamate di cmdlet e i costrutti di controllo sono funzionalità di programmazione come cicli, variabili, parametri, commenti e così via forniti da PowerShell.

I file di script di PowerShell hanno un'estensione .ps1. È possibile creare e salvare questi file usando un qualsiasi editor di testo.

Suggerimento

Se si scrivono script di PowerShell, è consigliabile usare Visual Studio Code (VS Code), gratuito e supportato in Windows, Linux e macOS. L'estensione PowerShell per VS Code offre funzionalità come l'evidenziazione della sintassi e un elenco di cmdlet disponibili.

Lo screenshot seguente è un esempio di VS Code con uno script di esempio per connettersi ad Azure e creare una macchina virtuale:

Screenshot di VS Code con uno script di PowerShell per creare una macchina virtuale in Azure.

Dopo aver creato uno script, è possibile eseguirlo dalla riga di comando di PowerShell passando il nome del file preceduto da un punto per la directory corrente e una barra rovesciata:

.\myScript.ps1

Tecniche di PowerShell

PowerShell include funzionalità comunemente disponibili nei linguaggi di programmazione. È possibile definire variabili, usare rami e cicli, acquisire parametri della riga di comando, scrivere funzioni, aggiungere commenti e altro ancora. Per lo script su cui ci si concentra, sono necessarie tre funzionalità chiave: variabili, cicli e parametri.

Variabili

In PowerShell le variabili vengono dichiarate usando il segno di dollaro ($) e i valori assegnati usando l'operatore equals (=). Ad esempio:

$location = 'eastus'

Per determinare il valore archiviato in una variabile, usare il prefisso $ e il relativo nome:

$location

Le variabili possono contenere oggetti. Ad esempio, la definizione seguente imposta la variabile $adminCredential sull'oggetto restituito dal cmdlet Get-Credential:

$adminCredential = Get-Credential

Cicli

PowerShell include diverse strutture del ciclo, tra cui For, Foreach, Do-Until, Do-While e While. Il ciclo Foreach è una scelta ottimale per gli scenari in cui è necessario eseguire un ciclo su un set di valori in una raccolta.

$items = 'web','app','sql'
foreach ($item in $items) {
    $item
}

Parametri

Quando si crea uno script di PowerShell, è possibile aggiungere parametri allo script e quindi specificare i valori per questi parametri durante l'esecuzione dello script. Ad esempio:

.\setupEnvironment.ps1 -Name 'web','app','sql' -Location eastus

Nello script, i valori vengono acquisiti nelle variabili. In questo esempio i parametri sono Nome e Posizione:

param (
    [string[]]$Name,
    [string]$Location
)

È possibile usare questi parametri come input e un ciclo per creare un set di macchine virtuali in base ai parametri specificati. Questo approccio mantiene lo script generico ed evita la ripetizione dello stesso codice.

Combinazione di tecniche

La combinazione delle funzionalità del linguaggio di PowerShell e dei cmdlet di Azure PowerShell offre tutti gli strumenti necessari per automatizzare le attività di Azure. Nell'esempio CRM, è possibile creare più macchine virtuali Linux usando uno script con parametri e un ciclo per semplificare il processo. Questo script consente di eseguire un'operazione complessa in un singolo passaggio.

Script di esempio

Di seguito è riportato uno script di esempio che illustra l'uso di variabili, cicli e parametri per creare più macchine virtuali:

param (
    [string[]]$Name = 'web','app','sql',
    [string]$ResourceGroupName,
    [string]$Location = 'eastus'
)

$adminCredential = Get-Credential

foreach ($vm in $Name) {
    $azVmParams = @{
        ResourceGroupName   = $ResourceGroupName
        Name                = $vm
        Credential          = $adminCredential
        Location            = $Location
        Image               = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts           = 22
        PublicIpAddressName = $vm
    }
    New-AzVM @azVmParams
}

Esecuzione dello script

Salvare lo script come CreateVMs.ps1 ed eseguirlo dalla riga di comando di PowerShell, specificando i parametri necessari:

.\CreateVMs.ps1 -ResourceGroupName <resource-group-name>

Usando questo script, è possibile creare in modo efficiente più macchine virtuali in gruppi di risorse diversi, automatizzare le attività ripetitive e garantire la coerenza nell'ambiente di Azure.