Esercizio - Creare risorse di Azure con Azure PowerShell usando uno script

Completato

In questa unità si continuerà con l'esempio di un'azienda che sviluppa strumenti di amministrazione per Linux. L'obiettivo è usare macchine virtuali Linux per consentire ai potenziali clienti di testare il software. Con un gruppo di risorse già configurato, è possibile creare le macchine virtuali.

L'azienda ha protetto uno stand in una grande fiera di Linux. Si prevede di configurare un'area demo con tre terminali, ognuno connesso a una macchina virtuale Linux separata. È necessario eliminare le macchine virtuali e ricrearle alla fine di ogni giorno in modo che inizino a essere aggiornate ogni mattina. La creazione manuale delle macchine virtuali dopo un lungo giorno è soggetta a errori, quindi è necessario scrivere uno script di PowerShell per automatizzare il processo di creazione della macchina virtuale.

Scrivere uno script per creare macchine virtuali

Seguire questa procedura per scrivere uno script in Azure Cloud Shell che automatizza la creazione di macchine virtuali.

Nota

In genere, si esegue l'autenticazione in Azure usando le credenziali con Connect-AzAccount, ma in Cloud Shell si è già autenticati, quindi questo passaggio non è necessario.

  1. Passare alla cartella home:

    Set-Location -Path $HOME
    
  2. Creare un nuovo file di script di PowerShell:

    New-Item -Name ConferenceDailyReset.ps1 -ItemType File
    
  3. Aprire l'editor integrato di Visual Studio Code (VS Code):

    code ./ConferenceDailyReset.ps1
    

    Suggerimento

    L’editor integrato di Cloud Shell supporta anche vim, nano ed emacs, se si preferisce usare uno di questi editor.

  4. Definire un parametro per il nome del gruppo di risorse:

    Aggiungere la riga seguente allo script:

    param (
        [string]$ResourceGroupName
    )
    
  5. Richiedere le credenziali di amministratore della macchina virtuale:

    $adminCredential = Get-Credential -Message 'Enter a username and password for the VM administrator.'
    
  6. Creare un ciclo per eseguire tre volte:

    $vms = 'web','app','sql'
    foreach ($vm in $vms) {
        $vm
    }
    
  7. Nel ciclo, restituire il nome per ogni macchina virtuale:

    Write-Output "Creating VM: $vm"
    
  8. Creare una macchina virtuale usando la variabile $vm:

    $azVmParams = @{
        ResourceGroupName = $ResourceGroupName
        Name              = $vm
        Credential        = $adminCredential
        Image             = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts         = 22
    }
    New-AzVm @azVmParams
    
  9. Salvare il file:

    Per salvare lo script, usare i puntini di sospensione (...) dal menu di scelta rapida nell'angolo superiore destro dell'editor o i scelta rapida CTRL + S da tastiera.

Script completato

Lo script completato avrà un aspetto simile all’esempio seguente:

param (
    [string]$ResourceGroupName
)

$adminCredential = Get-Credential -Message 'Enter a username and password for the VM administrator.'

$vms = 'web','app','sql'

foreach ($vm in $vms) {

    Write-Output "Creating VM: $vm"

    $azVmParams = @{
        ResourceGroupName = $ResourceGroupName
        Name              = $vm
        Credential        = $adminCredential
        Image             = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts         = 22
    }
    New-AzVm @azVmParams
}

Dopo aver verificato che lo script sia simile al codice dell'esempio precedente, chiudere l'editor usando i puntini di sospensione (...) dal menu di scelta rapida nell'angolo superiore destro dell'editor o i tasti di scelta rapida CTRL + Q.

Eseguire lo script

  1. Eseguire lo script usando il comando seguente:

    ./ConferenceDailyReset.ps1 -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    
  2. Attesa del completamento. Il completamento dello script richiede alcuni minuti.

  3. Verificare le macchine virtuali. Al termine dello script, verificare che sia stato completato elencando le macchine virtuali nel gruppo di risorse:

    Get-AzVM -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    

    Dovrebbero essere visualizzate tre macchine virtuali, ognuna con un nome univoco.

È stato creato uno script che automatizza la creazione di tre macchine virtuali, ognuna in un gruppo di risorse specifico, assicurandosi che siano pronte per demo giornaliere alla fiera. Anche se lo script è breve e semplice, accelera notevolmente un processo che altrimenti richiederebbe molto tempo e sarebbe soggetto a errori se eseguito manualmente tramite il portale di Azure.