Übung: Erstellen einer Azure-Ressource mithilfe von Skripts in Azure PowerShell

Abgeschlossen

Erinnern Sie sich an das ursprüngliche Szenario: Erstellen von VMs zum Testen Ihrer CRM-Software. Wenn ein neuer Build verfügbar ist, möchten wir eine neue VM einrichten, damit wir die vollständige Installation anhand eines sauberen Image testen können. Abschließend löschen Sie die VM.

Jetzt probieren wir die Befehle aus, um eine VM zu erstellen.

Erstellen einer Linux-VM mithilfe von Azure PowerShell

Da wir die Azure-Sandbox verwenden, müssen Sie keine Ressourcengruppe erstellen. Verwenden Sie stattdessen die Ressourcengruppe [Name der Sandboxressourcengruppe]. Achten Sie darüber hinaus auf Standorteinschränkungen.

Erstellen wir eine neue Azure-VM mit PowerShell.

  1. Verwenden Sie das New-AzVm-Cmdlet zum Erstellen einer VM.

    • Verwenden Sie die Ressourcengruppe [Name der Sandboxressourcengruppe].

    • Geben Sie der VM einen Namen. Verwenden Sie einen aussagekräftigen Namen, der den Zweck der VM, den Standort und (wenn es mehr als eine VM gibt) die Instanznummer angibt. Wir verwenden „testvm-eus-01“ für „Test-VM in USA, Osten, Instanz 1“. Erstellen Sie Ihren eigenen Namen basierend darauf, wo Sie die VM platzieren.

    • Wählen Sie in der Azure-Sandbox aus der folgenden Liste einen Standort in Ihrer Nähe aus. Achten Sie darauf, den Wert im folgenden Beispielbefehl zu ändern, wenn Sie ihn kopieren und einfügen.

      • westus2
      • southcentralus
      • centralus
      • eastus
      • westeurope
      • southeastasia
      • japaneast
      • brazilsouth
      • australiasoutheast
      • centralindia
    • Verwenden Sie „Canonical:0001-com-ubuntu-server-focal:20_04-lts:latest“ für das Image. Dieses Image ist von Ubuntu Linux.

    • Verwenden Sie das Get-Credential-Cmdlet und geben Sie die Ergebnisse in den Credential-Parameter ein.

      Wichtig

      In den Häufig gestellten Fragen zu Linux-VMs finden Sie Informationen zu Einschränkungen für Benutzername und Kennwort. Kennwörter müssen 12 bis 123 Zeichen lang sein und drei der vier folgenden Komplexitätsanforderungen erfüllen:

      • Kleinbuchstaben
      • Großbuchstaben
      • Eine Ziffer
      • Ein Sonderzeichen (Übereinstimmung mit dem regulärem Ausdruck [\W_])
    • Fügen Sie den -OpenPorts-Parameter hinzu, und übergeben Sie „22“ als Port. Dieser Port ermöglicht uns den SSH-Zugriff auf den Computer.

    • Erstellen Sie einen Namen für eine öffentliche IP-Adresse. Sie verwenden diesen Namen, um Ihre statische IP-Adresse für die Anmeldung beim Computer zu erstellen und zu suchen.

    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"
    

    Tipp

    Mit der Schaltfläche Kopieren können Sie Befehle in die Zwischenablage kopieren. Klicken Sie zum Einfügen im Cloud Shell-Terminal mit der rechten Maustaste auf eine neue Zeile, und wählen Sie dann Einfügen aus, oder verwenden Sie die Tastenkombination UMSCHALT+EINFG (⌘+V unter macOS).

  2. Erstellen Sie einen Benutzernamen und ein Kennwort, und drücken Sie dann die EINGABETASTE. PowerShell beginnt mit der Erstellung Ihrer VM.

  3. Die Erstellung des virtuellen Computers dauert einige Minuten. Wenn die Erstellung beendet ist, können Sie Abfragen ausführen und das VM-Objekt einer Variablen ($vm) zuordnen.

    $vm = (Get-AzVM -Name "testvm-eus-01" -ResourceGroupName <rgn>[sandbox resource group name]</rgn>)
    
  4. Fragen Sie anschließend den Wert ab, um die Informationen über die VM abzurufen.

    $vm
    

    Es sollte nun etwa die folgende Ausgabe angezeigt werden:

    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}
    
  5. Sie können komplexe Objekte über eine Punkt-Notation (.) erreichen. Führen Sie den folgenden Befehl aus, um beispielsweise die Eigenschaften im VMSize-Objekt anzuzeigen, das dem Abschnitt „HardwareProfile“ zugeordnet ist:

    $vm.HardwareProfile
    
  6. Alternativ können Sie den folgenden Befehl ausführen, um Informationen zu einem der Datenträger abzurufen:

    $vm.StorageProfile.OsDisk
    
  7. Sie können auch das VM-Objekt an andere Cmdlets übergeben. Wenn Sie beispielsweise den folgenden Befehl ausführen, werden alle verfügbaren Größen für Ihre VM angezeigt:

    $vm | Get-AzVMSize
    
  8. Führen Sie jetzt den folgenden Befehl aus, um die öffentliche IP-Adresse abzurufen:

    az vm list-ip-addresses -n testvm-eus-01 -g <rgn>[sandbox resource group name]</rgn>
    
  9. Über die IP-Adresse können Sie sich mit SSH mit Ihrer VM verbinden. Wenn Sie beispielsweise den Benutzernamen bob verwendet haben und die IP-Adresse 205.22.16.5 lautet, wird beim Ausführen dieses Befehls eine Verbindung mit dem Linux-Computer hergestellt:

    ssh bob@205.22.16.5
    

    Melden Sie sich ab, indem Sie exit eingeben.

Löschen einer VM

Sie löschen die VM nun, um weitere Befehle auszuprobieren. Zuerst müssen wir die VM herunterfahren (geben Sie Y ein, wenn Sie zum Fortfahren aufgefordert werden):

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

Wenn die VM beendet wurde, führen Sie das Cmdlet Remove-AzVM aus, um sie zu löschen (geben Sie Y ein, wenn Sie zum Fortfahren aufgefordert werden):

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

Führen Sie diesen Befehl aus, um alle Ressourcen in Ihrer Ressourcengruppe aufzulisten:

Get-AzResource -ResourceGroupName $vm.ResourceGroupName | Format-Table

Daraufhin sollten verschiedene Ressourcen (z. B. Datenträger und virtuelle Netzwerke) angezeigt werden, die alle noch vorhanden sind.

Microsoft.Compute/disks
Microsoft.Network/networkInterfaces
Microsoft.Network/networkSecurityGroups
Microsoft.Network/publicIPAddresses
Microsoft.Network/virtualNetworks

Der Remove-AzVM-Befehl löscht nur die VM. Andere Ressourcen werden hierdurch nicht gelöscht. An dieser Stelle möchten Sie nur die Ressourcengruppe löschen. Lassen Sie uns jedoch die Übung durchlaufen, um sie manuell zu bereinigen. Sie sollten ein Muster in den Befehlen erkennen.

  1. Löschen Sie die Netzwerkschnittstelle:

    $vm | Remove-AzNetworkInterface –Force
    
  2. Löschen Sie die verwalteten Betriebssystemdatenträger:

    Get-AzDisk -ResourceGroupName $vm.ResourceGroupName -DiskName $vm.StorageProfile.OSDisk.Name | Remove-AzDisk -Force
    
  3. Löschen Sie anschließend das virtuelle Netzwerk:

    Get-AzVirtualNetwork -ResourceGroupName $vm.ResourceGroupName | Remove-AzVirtualNetwork -Force
    
  4. Löschen Sie die Netzwerksicherheitsgruppe:

    Get-AzNetworkSecurityGroup -ResourceGroupName $vm.ResourceGroupName | Remove-AzNetworkSecurityGroup -Force
    
  5. Löschen Sie abschließend die öffentliche IP-Adresse:

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

Damit sollten alle erstellten Ressourcen berücksichtigt worden sein. Überprüfen Sie die Ressourcengruppe, um ganz sicherzugehen. Sie haben hier einige manuelle Befehle ausgeführt, aber ein besserer Ansatz wäre das Schreiben eines Skripts gewesen. In diesem Fall könnten Sie diese Logik später verwenden, um eine VM zu erstellen oder zu löschen. Sehen wir uns die Skripterstellung mit PowerShell an.