Esercizio - Creare una risorsa di Azure in modo interattivo con Azure PowerShell
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,
Ecco come creare una nuova macchina virtuale di Azure con Azure PowerShell:
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).
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.
Attendere la creazione della macchina virtuale:
Il processo di creazione della macchina virtuale richiede alcuni minuti.
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>
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} ...
Ispezionare le proprietà della macchina virtuale:
È possibile ispezionare oggetti complessi tramite l'operatore di accesso ai membri (
.
). Ad esempio, per visualizzare le proprietà nell'oggettoVMSize
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
Ottenere le dimensioni della macchina virtuale disponibili:
Passare l'oggetto Macchina virtuale in altri cmdlet per ottenere le dimensioni disponibili:
$vm | Get-AzVMSize
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
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:
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.
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.
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 aSelect-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: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.
Eliminare il gruppo di sicurezza di rete:
Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup
Immettere Y e premere Invio quando viene richiesto di continuare.
Eliminare l'indirizzo IP pubblico:
Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName | Remove-AzPublicIpAddress
Immettere Y e premere Invio quando viene richiesto di continuare.
Eliminare la rete virtuale:
Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork
Immettere Y e premere Invio quando viene richiesto di continuare.
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.
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.