Esercizio - Creare una risorsa di Azure tramite script in Azure PowerShell
Si ricordi lo scenario originale, ossia la creazione di macchine virtuali per testare il software CRM. Quando è disponibile una nuova build, si vuole creare rapidamente una nuova macchina virtuale in modo da poter testare l'esperienza di installazione completa da un'immagine pulita. Completati i test, la macchina virtuale dovrà essere eliminata.
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
È possibile creare una nuova macchina virtuale di Azure con PowerShell.
Usare il cmdlet
New-AzVm
per creare una macchina virtuale.Usare il gruppo di risorse
[Nome del gruppo di risorse sandbox] .Assegnare un nome alla macchina virtuale. In genere si usa un nome significativo che identifichi gli scopi della macchina virtuale, la posizione e il numero di istanza (se ne esiste più di una). Si userà "testvm-eus-01" per "Test VM in East US, instance 1". Scegliere un nome appropriato in base a dove è stata posizionata la macchina virtuale.
Selezionare una località vicina dall'elenco seguente, disponibile nell'ambiente sandbox di Azure. Assicurarsi di modificare il valore nel comando di esempio seguente, se si usa Copia e incolla.
- westus2
- Stati Uniti centro-meridionali
- centralus
- eastus
- westeurope
- Asia sud-orientale
- japaneast
- brazilsouth
- australiasoutheast
- centralindia
Usare "Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest" per l'immagine. Questa immagine è Ubuntu Linux.
Usare il cmdlet
Get-Credential
e inviare i risultati nel parametroCredential
.Importante
Vedere le domande frequenti sulle macchine virtuali Linux per le limitazioni relative a nome utente e password. Le password devono contenere da 12 a 123 caratteri e soddisfare tre dei quattro requisiti di complessità seguenti:
- Devono contenere caratteri minuscoli
- Devono contenere caratteri maiuscoli
- Devono contenere un numero
- Devono contenere un carattere speciale (REGEX.CONFRONTA [\W_])
Aggiungere il parametro
-OpenPorts
e passare "22" come porta. Questa porta permette di usare SSH nel computer.Creare un nome di indirizzo IP pubblico. Questo nome viene usato per creare e individuare l'indirizzo IP statico per accedere al computer.
New-AzVm -ResourceGroupName <rgn>[sandbox resource group name]</rgn> -Name "testvm-eus-01" -Credential (Get-Credential) -Location "eastus" -Image Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest -OpenPorts 22 -PublicIpAddressName "testvm-eus-01"
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).
Creare un nome utente e una password, quindi premere INVIO. PowerShell inizia a creare la macchina virtuale.
La creazione della macchina virtuale richiede alcuni minuti. Al termine, è possibile eseguire una query e assegnare l'oggetto macchina virtuale a una variabile (
$vm
).$vm = (Get-AzVM -Name "testvm-eus-01" -ResourceGroupName <rgn>[sandbox resource group name]</rgn>)
Eseguire una query per ottenere il valore per eseguire il dump delle informazioni relative alla macchina virtuale.
$vm
Verrà visualizzato un output simile al seguente:
ResourceGroupName : <rgn>[sandbox resource group name]</rgn> Id : /subscriptions/00000000-0000-0000-0000-000000000000/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}
È possibile accedere a oggetti complessi tramite la notazione con punto (
.
). 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
È anche possibile passare l'oggetto macchina virtuale in altri cmdlet. Ad esempio, l'esecuzione del comando seguente mostra tutte le dimensioni disponibili per la macchina virtuale:
$vm | Get-AzVMSize
Eseguire ora il comando seguente per ottenere l'indirizzo IP pubblico:
az vm list-ip-addresses -n testvm-eus-01 -g <rgn>[sandbox resource group name]</rgn>
Con l'indirizzo IP è possibile connettersi alla macchina virtuale con SSH. Ad esempio, se è stato usato il nome utente
bob
e l'indirizzo IP è205.22.16.5
, eseguendo questo comando è possibile connettersi alla macchina Linux:ssh bob@205.22.16.5
Per disconnettersi immettere
exit
.
Eliminare una macchina virtuale
Per provare alcuni altri comandi, eliminare la macchina virtuale. Prima di tutto, è necessario arrestarla (se richiesto, immettere Y per continuare):
Stop-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
Quando la macchina virtuale è stata arrestata, eliminare la macchina virtuale eseguendo il cmdlet Remove-AzVM
(se richiesto, immettere Y per continuare):
Remove-AzVM -Name $vm.Name -ResourceGroupName $vm.ResourceGroupName
Provare questo comando per elencare tutte le risorse presenti nel gruppo di risorse:
Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Format-Table
Verranno visualizzate diverse risorse (dischi, reti virtuali e così via) ancora esistenti.
Microsoft.Compute/disks
Microsoft.Network/networkInterfaces
Microsoft.Network/networkSecurityGroups
Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks
Il comando Remove-AzVM
elimina solo la macchina virtuale. e non pulisce tutte le altre risorse. A questo punto, probabilmente è sufficiente eliminare il gruppo di risorse stesso per fare pulizia. Si vedrà invece come eseguire manualmente l'operazione eseguendo l'esercizio. Si noterà uno schema nei comandi.
Eliminare l'interfaccia di rete:
$vm | Remove-AzNetworkInterface –Force
Eliminare i dischi del sistema operativo gestiti:
Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk -Force
Eliminare quindi la rete virtuale:
Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork -Force
Eliminare il gruppo di sicurezza di rete:
Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup -Force
Infine, eliminare l'indirizzo IP pubblico:
Get-AzPublicIpAddress -ResourceGroupName $vm.ResourceGroupName | Remove-AzPublicIpAddress -Force
A questo punto dovrebbero essere state eliminate tutte le risorse create. Per sicurezza controllare il gruppo di risorse. Sono stati eseguiti numerosi comandi manuali, ma un approccio migliore sarebbe stato scrivere uno script, in modo da poter riusare questa logica in un secondo momento per creare o eliminare una macchina virtuale. Si vedranno ora le tecniche di scripting con PowerShell.