Esercizio - Creare una risorsa di Azure in modo interattivo con Azure PowerShell

Completato

Nello scenario originale è necessario creare macchine virtuali (VM) per testare software CRM (Customer Relationship Management). Quando è disponibile una nuova build, si vuole creare rapidamente una nuova macchina virtuale per testare l'esperienza di installazione completa da un'immagine pulita. Al termine del test, è possibile eliminare la macchina virtuale.

Si proveranno ora i comandi per creare una macchina virtuale.

Creare una macchina virtuale Linux con Azure PowerShell

Poiché si sta usando l'ambiente sandbox di Azure, non è necessario creare un gruppo di risorse. Usare invece il gruppo di risorse sandbox esistente, [nome del gruppo risorse Sandbox]. Tenere presenti le restrizioni per la posizione.

Ecco come creare una nuova macchina virtuale di Azure con Azure PowerShell:

  1. Usare il cmdlet New-AzVM per creare la macchina virtuale.

    • Specificare il gruppo di risorse sandbox: [nome gruppo di risorse sandbox].

    • Denominare la macchina virtuale, seguendo gli standard di denominazione dell'organizzazione.

    • Scegliere un’area geografica vicina all'utente dall'elenco delle aree sandbox di Azure disponibili.

      • westus2
      • Stati Uniti centro-meridionali
      • centralus
      • eastus
      • westeurope
      • Asia sud-orientale
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • Usare l'immagine Ubuntu Linux: Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest.

    • Usare il cmdlet Get-Credential per impostare le credenziali di amministratore della macchina virtuale.

    • Aggiungere il parametro OpenPorts con la porta 22 per l'accesso SSH.

    • Creare un nome di indirizzo IP pubblico per l’accesso SSH.

    $azVmParams = @{
        ResourceGroupName   = '<rgn>[sandbox resource group name]</rgn>'
        Name                = 'testvm-eus-01'
        Credential          = (Get-Credential)
        Location            = 'eastus'
        Image               = 'Canonical:0001-com-ubuntu-server-jammy:22_04-lts:latest'
        OpenPorts           = 22
        PublicIpAddressName = 'testvm-eus-01'
    }
    New-AzVm @azVmParams
    

    Suggerimento

    È possibile usare il pulsante Copia per copiare i comandi negli Appunti. Per incollare, fare clic con il pulsante destro del mouse su una nuova riga nel terminale di Cloud Shell e scegliere Incolla oppure usare i tasti di scelta rapida MAIUSC+INS (⌘+V in macOS).

  2. Immettere le credenziali:

    Quando richiesto, immettere un nome utente e una password, seguendo le linee guida, ovvero le password devono avere una lunghezza compresa tra 12 e 123 caratteri e soddisfare tre dei quattro requisiti di complessità seguenti: caratteri minuscoli, caratteri maiuscoli, cifre e caratteri speciali (corrispondenza Regex [\W_]). Per altre informazioni, vedere Domande frequenti sulle macchine virtuali Linux.

  3. Attendere la creazione della macchina virtuale:

    Il processo di creazione della macchina virtuale richiede alcuni minuti.

  4. Eseguire una query sulla macchina virtuale:

    Al termine, eseguire una query sulla macchina virtuale e assegnare l'oggetto macchina virtuale a una variabile ($vm).

    $vm = Get-AzVM -Name testvm-eus-01 -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
    
  5. Visualizzare informazioni relative alla macchina virtuale:

    Per vedere le informazioni sulla macchina virtuale, visualizzare il contenuto della variabile.

    $vm
    

    Output di esempio:

    ResourceGroupName : <rgn>[sandbox resource group name]</rgn>
    Id                : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/<rgn>[sandbox resource group name]</rgn>/providers/Microsoft.Compute/virtualMachines/testvm-eus-01
    VmId              : 00000000-0000-0000-0000-000000000000
    Name              : testvm-eus-01
    Type              : Microsoft.Compute/virtualMachines
    Location          : eastus
    Tags              : {}
    HardwareProfile   : {VmSize}
    NetworkProfile    : {NetworkInterfaces}
    OSProfile         : {ComputerName, AdminUsername, LinuxConfiguration, Secrets}
    ProvisioningState : Succeeded
    StorageProfile    : {ImageReference, OsDisk, DataDisks}
    ...
    
  6. Ispezionare le proprietà della macchina virtuale:

    È possibile ispezionare oggetti complessi tramite l'operatore di accesso ai membri (.). Ad esempio, per visualizzare le proprietà nell'oggetto VMSize associato alla sezione HardwareProfile, eseguire il comando seguente:

    $vm.HardwareProfile
    

    Oppure, per ottenere informazioni su uno dei dischi, eseguire il comando seguente:

    $vm.StorageProfile.OsDisk
    
  7. Ottenere le dimensioni della macchina virtuale disponibili:

    Passare l'oggetto Macchina virtuale in altri cmdlet per ottenere le dimensioni disponibili:

    $vm | Get-AzVMSize
    
  8. Ottenere l'indirizzo IP pubblico:

    Recuperare l'indirizzo IP pubblico per connettersi alla macchina virtuale e archiviarlo in una variabile.

    $ip = Get-AzPublicIpAddress -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name testvm-eus-01
    
  9. Connettersi alla macchina virtuale:

    Connettersi alla macchina virtuale con SSH usando l'indirizzo IP della variabile. Ad esempio, se il nome utente è bob, usare il comando seguente:

    ssh bob@$($ip.IpAddress)
    

    Disconnettersi digitando exit.

Eliminare una macchina virtuale

Per provare altri comandi, eliminare la macchina virtuale. Seguire questa procedura:

  1. Arrestare la macchina virtuale:

    Esegui questo comando:

    Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
    

    Immettere Y e premere Invio quando viene richiesto di continuare.

  2. Eliminare la macchina virtuale:

    Una volta arrestata la macchina virtuale, eliminarla eseguendo il cmdlet Remove-AzVM.

    Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
    

    Immettere Y e premere Invio quando viene richiesto di continuare.

  3. Elencare tutte le risorse nel gruppo di risorse:

    Usare il cmdlet Get-AzResource per elencare tutte le risorse nel gruppo di risorse. I risultati vengono inviati tramite pipe a Select-Object per restituire proprietà specifiche:

    Get-AzResource -ResourceGroupName $vm.ResourceGroupName | 
        Select-Object -Property Name, ResourceType, ResourceGroupName
    

    Verranno visualizzate diverse risorse, tra cui dischi, reti virtuali ecc. ancora esistenti:

    Name                    ResourceType                            ResourceGroupName
    ----                    ------------                            -----------------
    cloudshell              Microsoft.Storage/storageAccounts       <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/virtualNetworks       <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/publicIPAddresses     <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/networkSecurityGroups <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01           Microsoft.Network/networkInterfaces     <rgn>[sandbox resource group name]</rgn>
    testvm-eus-01_OsDisk_1  Microsoft.Compute/disks                 <rgn>[sandbox resource group name]</rgn>
    

    Il comando Remove-AzVM elimina solo la macchina virtuale. e non pulisce tutte le altre risorse. Per pulirli manualmente, seguire questa procedura:

  4. Eliminare l'interfaccia di rete:

    Get-AzNetworkInterface -ResourceGroupName $vm.ResourceGroupName -Name $vm.Name |
        Remove-AzNetworkInterface
    

    Immettere Y e premere Invio quando viene richiesto di continuare.

  5. Eliminare il gruppo di sicurezza di rete:

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzNetworkSecurityGroup
    

    Immettere Y e premere Invio quando viene richiesto di continuare.

  6. Eliminare l'indirizzo IP pubblico:

    Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzPublicIpAddress
    

    Immettere Y e premere Invio quando viene richiesto di continuare.

  7. Eliminare la rete virtuale:

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName |
        Remove-AzVirtualNetwork
    

    Immettere Y e premere Invio quando viene richiesto di continuare.

  8. Eliminare i dischi del sistema operativo gestiti:

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name |
        Remove-AzDisk
    

    Immettere Y e premere Invio quando viene richiesto di continuare.

  9. Verificare che tutte le risorse siano state rimosse:

    Controllare il gruppo di risorse per verificare che tutte le risorse siano state rimosse:

    Get-AzResource -ResourceGroupName $vm.ResourceGroupName | 
        Select-Object -Property Name, ResourceType, ResourceGroupName
    

Durante l'esecuzione interattiva di questi comandi, un approccio migliore consiste nella scrittura di uno script di PowerShell. Gli script consentono di riutilizzare la logica per la creazione o l'eliminazione di una macchina virtuale in futuro

Si esaminerà ora come automatizzare queste attività usando uno script di PowerShell.