Esercizio - Creare e salvare script in Azure PowerShell

Completato

In questa unità si continuerà con l'esempio di un'azienda che sviluppa strumenti di amministrazione per Linux. È importante ricordare che si prevede di usare macchine virtuali Linux per consentire ai potenziali clienti di testare il software. È stato predisposto un gruppo di risorse e a questo punto è possibile creare le macchine virtuali.

L'azienda presso cui si lavora ha acquistato uno stand presso una grande fiera dedicata a Linux. È stata pianificata un'area demo con tre terminali, ognuno connesso a una macchina virtuale Linux distinta. Alla fine di ogni giornata, si vuole eliminare e ricreare le macchine virtuali, in modo che ogni mattina siano nuove. Creare manualmente le macchine virtuali dopo una giornata di lavoro potrebbe dare luogo a errori. Si vuole scrivere uno script di PowerShell per automatizzare il processo di creazione delle macchine virtuali.

Scrivere uno script per creare macchine virtuali

Seguire questa procedura in Cloud Shell a destra per scrivere lo script:

  1. Passare alla cartella principale in Cloud Shell.

    cd $HOME\clouddrive
    
  2. Creare un nuovo file di testo denominato ConferenceDailyReset.ps1.

    touch "./ConferenceDailyReset.ps1"
    
  3. Aprire l'editor integrato e selezionare il file ConferenceDailyReset.ps1.

    code "./ConferenceDailyReset.ps1"
    

    Suggerimento

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

  4. Per iniziare, acquisire il parametro di input in una variabile. Aggiungere la riga seguente allo script.

    param([string]$resourceGroup)
    

    Nota

    In genere, è necessario eseguire l'autenticazione ad Azure usando le credenziali con Connect-AzAccount e questa operazione può essere eseguita nello script. Tuttavia, nell'ambiente Cloud Shell l'utente è già autenticato, quindi l'operazione non è necessaria.

  5. Richiedere il nome utente e la password per l'account di amministratore della macchina virtuale e acquisire il risultato in una variabile:

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

    For ($i = 1; $i -le 3; $i++) 
    {
    
    }
    
  7. Nel corpo del ciclo creare un nome per ogni macchina virtuale, archiviarlo in una variabile e inviarlo alla console:

    $vmName = "ConferenceDemo" + $i
    Write-Host "Creating VM: " $vmName
    
  8. Creare quindi una macchina virtuale usando la variabile $vmName:

    New-AzVm -ResourceGroupName $resourceGroup -Name $vmName -Credential $adminCredential -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest
    
  9. Salva il file. È possibile usare il menu "..." nell'angolo superiore destro dell'editor. Sono disponibili anche i tasti di scelta rapida comuni per salvare, ad esempio CTRL + S.

Lo script completato avrà un aspetto simile al codice seguente:

param([string]$resourceGroup)

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

For ($i = 1; $i -le 3; $i++)
{
    $vmName = "ConferenceDemo" + $i
    Write-Host "Creating VM: " $vmName
    New-AzVm -ResourceGroupName $resourceGroup -Name $vmName -Credential $adminCredential -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest
}

Eseguire lo script

  1. Salvare il file e chiudere l'editor usando il menu di scelta rapida "..." nella parte superiore destra dell'editor, oppure usare CTRL + Q.

  2. Eseguire lo script.

    ./ConferenceDailyReset.ps1 <rgn>[sandbox resource group name]</rgn>
    

    Il completamento dello script può richiedere alcuni minuti. Al termine, verificare se è stato eseguito correttamente esaminando le risorse che ora sono disponibili nel gruppo di risorse:

    Get-AzResource -ResourceType Microsoft.Compute/virtualMachines
    

Si dovrebbe disporre di tre macchine virtuali, ognuna con un nome univoco.

È stato scritto uno script per automatizzare la creazione di tre macchine virtuali nel gruppo di risorse indicato da un parametro dello script. Lo script è breve e semplice, ma consente di automatizzare un processo il cui completamento manuale tramite il portale di Azure richiederebbe molto tempo.