Esercizio - Creare risorse usando uno script dell'interfaccia della riga di comando di Azure

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 dell'interfaccia della riga di comando di Azure 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 az login, ma in Cloud Shell si è già autenticati, quindi questo passaggio non è necessario.

  1. Aprire Azure Cloud Shell tramite il portale di Azure o usando il pulsante Apri Cloud Shell nell'angolo in alto a destra di molti blocchi di codice dell'interfaccia della riga di comando di Azure.

  2. Configurare la sottoscrizione di Azure

    az account set --subscription "my subscription name or ID"
    
  3. Usando un editor di testo preferito, salvare lo script seguente nell'unità locale. In questo esempio il file è denominato msdocs-script-expanded.sh.

    #!/bin/bash
    
    # Assign parameters to variables
    vmCount=$1
    resourceGroupPrefix=$2
    location=$3
    vmNamePrefix=$4
    adminUserPrefix=$5
    shift 5
    images=("$@")
    
    # Loop 
    for i in $(seq 1 $vmCount)
    do
      let "randomIdentifier=$RANDOM*$RANDOM"
      resourceGroupName=$resourceGroupPrefix-$randomIdentifier
      location=westus
      adminUserName=$adminUserPrefix-$randomIdentifier
      vmName=$vmNamePrefix-$randomIdentifier
      vmImage=${images[$((i-1)) % ${#images[@]}]}
    
      echo "Creating VM $vmName on $vmImage with admin $adminUserName in resource group $resourceGroupName"
    
      # create the resource group
      az group create --name $resourceGroupName --location $location
    
      # create the VM
      az vm create \
          --resource-group $resourceGroupName \
          --location $location \
          --name $vmName \
          --generate-ssh-keys \
          --admin-username $adminUserName \
          --image $vmImage
    
    done
    
    
  4. Caricare il file nell'unità Cloud Shell. Il modo più semplice consiste nell'usare l'opzione di menu Gestisci file .

Eseguire lo script

  1. Eseguire lo script usando il comando seguente:

    #!/bin/bash
    # make your file executable
    chmod +x msdocs-script-expanded.sh
    
    # remove Windows line continuation characters
    sed -i -e 's/\r$//' msdocs-script-expanded.sh
    
    # Run the script
    ./msdocs-script-expanded.sh 3 msdocs-rg eastus2 msdocsvm msdocsadmin Debian11 Debian11 Ubuntu2204  
    
  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:

    az vm list -o table
    

    Dovrebbero essere visualizzate tre macchine virtuali, ognuna con un nome univoco e in un gruppo di risorse separato.

È 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.