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.

Annotazioni

Questo esercizio è facoltativo. Se si vuole completare questo esercizio, è necessario creare una sottoscrizione di Azure prima di iniziare. Se non si ha un account Azure o non si vuole crearne uno in questo momento, è possibile leggere le istruzioni in modo da comprendere le informazioni presentate.

Annotazioni

Per completare i passaggi di questo esercizio, è necessario usare un gruppo di risorse. È possibile usare un gruppo di risorse già creato oppure creare un nuovo gruppo di risorse specifico per questo esercizio. Se si sceglie di creare un nuovo gruppo di risorse, sarà più semplice pulire le risorse create durante l'esercizio. Se non si ha un gruppo di risorse esistente o si vuole crearne uno nuovo in particolare per questo esercizio, è possibile seguire la procedura descritta in Usare il portale di Azure e Azure Resource Manager per gestire i gruppi di risorse per creare un gruppo di risorse usando il portale di Azure oppure seguire la procedura descritta in Gestire i gruppi di risorse di Azure usando l'interfaccia della riga di comando di Azure per creare un gruppo di risorse usando l'interfaccia della riga di comando di Azure.

Creare una macchina virtuale Linux con Azure PowerShell

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 per la macchina virtuale.
    • Denominare la macchina virtuale, seguendo gli standard di denominazione dell'organizzazione.
    • Scegliere una località vicina all'utente dall'elenco delle aree di Azure disponibili.
    • 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   = 'myResourceGroupName'
        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
    

    Sostituire myResourceGroupName nell'esempio precedente con il nome di un gruppo di risorse esistente o il nome del gruppo di risorse creato per questo esercizio.

    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 il tasto di scelta rapida MAIUSC+Inserisci (⌘+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 myResourceGroupName
    
  5. Visualizzare informazioni relative alla macchina virtuale:

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

    $vm
    

    Output di esempio:

    ResourceGroupName : myResourceGroupName
    Id                : /subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/myResourceGroupName/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 myResourceGroupName -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:

    Eseguire il comando seguente:

    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       myResourceGroupName
    testvm-eus-01           Microsoft.Network/virtualNetworks       myResourceGroupName
    testvm-eus-01           Microsoft.Network/publicIPAddresses     myResourceGroupName
    testvm-eus-01           Microsoft.Network/networkSecurityGroups myResourceGroupName
    testvm-eus-01           Microsoft.Network/networkInterfaces     myResourceGroupName
    testvm-eus-01_OsDisk_1  Microsoft.Compute/disks                 myResourceGroupName
    

    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.