Tutorial: Erstellen von Windows-VM-Images mit Azure PowerShell

Gilt für: ✔️ Windows-VMs ✔️ Flexible Skalierungsgruppen

Images können für das Bootstrapping von Bereitstellungen verwendet werden und sorgen für VM-übergreifende Konsistenz. In diesem Tutorial erstellen Sie mithilfe von PowerShell ein eigenes spezialisiertes Image eines virtuellen Azure-Computers und speichern es in einer Azure Compute Gallery-Instanz (früher als „Shared Image Gallery“ bezeichnet). Folgendes wird vermittelt:

  • Erstellen einer Azure Compute Gallery-Instanz
  • Erstellen einer Imagedefinition
  • Erstellen einer Imageversion
  • Erstellen eines virtuellen Computers aus einem Image
  • Freigeben eines Katalogs

Voraussetzungen

In den folgenden Schritten wird erläutert, wie Sie eine vorhandene VM in ein wiederverwendbares benutzerdefiniertes Image umwandeln, mit dem Sie neue VMs erstellen können.

Für das Beispiel in diesem Tutorial muss ein virtueller Computer vorhanden sein. Sehen Sie sich ggf. die Schnellstartanleitung zu PowerShell an, um einen virtuellen Computer für dieses Tutorial zu erstellen. Ersetzen Sie beim Durcharbeiten des Tutorials bei Bedarf die Ressourcennamen.

Übersicht

Eine Azure Compute Gallery-Instanz vereinfacht das Freigeben benutzerdefinierter Images in Ihrer Organisation. Benutzerdefinierte Images sind wie Marketplace-Images, Sie erstellen sie jedoch selbst. Benutzerdefinierte Images können zum Starten von Konfigurationen verwendet werden, z.B. zum Vorabladen von Anwendungen, Anwendungskonfigurationen und anderen Betriebssystemkonfigurationen.

Mithilfe von Azure Compute Gallery können Sie Ihre benutzerdefinierten VM-Images für andere Benutzer freigeben. Wählen Sie aus, welche Images Sie teilen möchten, in welchen Regionen Sie sie verfügbar machen möchten, und mit wem Sie sie teilen möchten.

Die Funktion „Azure Compute Gallery“ verfügt über mehrere Ressourcentypen:

Resource BESCHREIBUNG
Imagequelle Dies ist eine Ressource, die zum Erstellen einer Imageversion in einem Katalog verwendet werden kann. Eine Imagequelle kann eine vorhandene Azure-VM, die entweder generalisiert oder spezialisiert ist, ein verwaltetes Image, eine Momentaufnahme oder eine Imageversion in einem anderen Katalog sein.
Galerie Wie der Azure Marketplace ist ein Katalog ein Repository zum Verwalten und Teilen von Images und VM-Anwendungen, aber Sie kontrollieren, wer Zugriff hat.
Imagedefinition Imagedefinitionen werden in einem Katalog erstellt und enthalten Informationen zum Image und zu den Anforderungen für seine interne Verwendung. Dies schließt ein, ob das Image Windows oder Linux ist, Anmerkungen zu dieser Version und Anforderungen an den minimalen und maximalen Arbeitsspeicher. Es ist eine Definition eines Imagetyps.
Imageversion Eine Imageversion ist, was Sie verwenden, um einen virtuellen Computer zu erstellen, wenn Sie einen Katalog verwenden. Sie können nach Bedarf mehrere Versionen eines Images für Ihre Umgebung haben. Wie bei einem verwalteten Image wird, wenn Sie eine Imageversion zum Erstellen einer VM verwenden, wird die Imageversion verwendet, um neue Datenträger für den virtuellen Computer zu erstellen. Imageversionen können mehrmals verwendet werden.

Starten von Azure Cloud Shell

Azure Cloud Shell ist eine kostenlose interaktive Shell, mit der Sie die Schritte in diesem Artikel ausführen können. Sie verfügt über allgemeine vorinstallierte Tools und ist für die Verwendung mit Ihrem Konto konfiguriert.

Wählen Sie zum Öffnen von Cloud Shell oben rechts in einem Codeblock einfach die Option Ausprobieren. Sie können Cloud Shell auch auf einem separaten Browsertab starten, indem Sie zu https://shell.azure.com/powershell navigieren. Wählen Sie Kopieren, um die Blöcke mit dem Code zu kopieren. Fügen Sie ihn anschließend in Cloud Shell ein, und drücken Sie die EINGABETASTE, um ihn auszuführen.

Abrufen des virtuellen Computers

Mit Get-AzVM können Sie eine Liste der VMs abrufen, die in einer Ressourcengruppe verfügbar sind. Wenn Sie den Namen und die Ressourcengruppe des virtuellen Computers kennen, können Sie erneut Get-AzVM verwenden, um das VM-Objekt abzurufen und für die spätere Verwendung in einer Variablen zu speichern. Dieses Beispiel ruft die VM sourceVM aus der Ressourcengruppe myResourceGroup ab und weist es der Variablen $sourceVM zu.

$sourceVM = Get-AzVM `
   -Name sourceVM `
   -ResourceGroupName myResourceGroup

Erstellen einer Ressourcengruppe

Erstellen Sie mit dem Befehl New-AzResourceGroup eine Ressourcengruppe.

Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden. Im folgenden Beispiel wird eine Ressourcengruppe mit dem Namen myGalleryRG in der Region EastUS erstellt:

$resourceGroup = New-AzResourceGroup `
   -Name 'myGalleryRG' `
   -Location 'EastUS'

Ein Katalog ist die primäre Ressource, die zur Ermöglichung der Imagefreigabe verwendet wird. Zulässige Zeichen für Katalognamen sind Groß- und Kleinbuchstaben, Zahlen und Punkte. Der Katalogname darf keine Bindestriche enthalten. Katalognamen müssen innerhalb Ihres Abonnements eindeutig sein.

Erstellen Sie mithilfe von New-AzGallery einen Katalog. Im folgenden Beispiel wird der Katalog myGallery in der Ressourcengruppe myGalleryRG erstellt.

$gallery = New-AzGallery `
   -GalleryName 'myGallery' `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $resourceGroup.Location `
   -Description 'Azure Compute Gallery for my organization'	

Erstellen einer Imagedefinition

Imagedefinitionen erstellen eine logische Gruppierung von Images. Sie werden verwendet, um Informationen über die Imageversionen zu verwalten, die in ihnen erstellt werden. Namen für Imagedefinition können aus Groß- und Kleinbuchstaben, Zahlen, Punkten und (Binde)Strichen bestehen. Weitere Informationen zu den Werten, die Sie für eine Imagedefinition angeben können, finden Sie unter Imagedefinitionen.

Erstellen Sie die Imagedefinition mit New-AzGalleryImageDefinition. In diesem Beispiel hat das Katalogimage den Namen myGalleryImage und wird für ein spezialisiertes Image erstellt.

$galleryImage = New-AzGalleryImageDefinition `
   -GalleryName $gallery.Name `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $gallery.Location `
   -Name 'myImageDefinition' `
   -OsState specialized `
   -OsType Windows `
   -Publisher 'myPublisher' `
   -Offer 'myOffer' `
   -Sku 'mySKU'

Erstellen einer Imageversion

Erstellen Sie mit New-AzGalleryImageVersion eine Imageversion aus einem virtuellen Computer.

Zulässige Zeichen für die Imageversion sind Zahlen und Punkte. Zahlen müssen im Bereich einer ganzen 32-Bit-Zahl liegen. Format: Hauptversion.Nebenversion.Patch.

In diesem Beispiel lautet die Imageversion 1.0.0. Sie wird in den Rechenzentren USA, Osten und USA, Süden-Mitte repliziert. Bei der Auswahl der Zielregionen für die Replikation müssen Sie die Quellregion als Ziel für die Replikation angeben.

Verwenden Sie $vm.Id.ToString() für -Source, um eine Imageversion des virtuellen Computers zu erstellen.

   $region1 = @{Name='South Central US';ReplicaCount=1}
   $region2 = @{Name='East US';ReplicaCount=2}
   $targetRegions = @($region1,$region2)

New-AzGalleryImageVersion `
   -GalleryImageDefinitionName $galleryImage.Name`
   -GalleryImageVersionName '1.0.0' `
   -GalleryName $gallery.Name `
   -ResourceGroupName $resourceGroup.ResourceGroupName `
   -Location $resourceGroup.Location `
   -TargetRegion $targetRegions  `
   -Source $sourceVM.Id.ToString() `
   -PublishingProfileEndOfLifeDate '2030-12-01'

Es kann eine Weile dauern, bis das Image in alle Zielregionen repliziert ist.

Erstellen einer VM

Wenn Sie ein spezialisiertes Image erstellt haben, können Sie eine neue VM oder mehrere neue VMs erstellen. Mithilfe des Cmdlets New-AzVM. Verwenden Sie zur Nutzung des Images Set-AzVMSourceImage, und legen Sie -Id auf die Imagedefinitions-ID (in diesem Fall „$galleryImage.Id“) fest, damit stets die aktuelle Imageversion verwendet wird.

Ersetzen Sie bei Bedarf die Ressourcennamen in diesem Beispiel.

# Create some variables for the new VM.
$resourceGroup = "myResourceGroup"
$location = "South Central US"
$vmName = "mySpecializedVM"

# Create a resource group
New-AzResourceGroup -Name $resourceGroup -Location $location

# Create the network resources.
$subnetConfig = New-AzVirtualNetworkSubnetConfig -Name mySubnet -AddressPrefix 192.168.1.0/24
$vnet = New-AzVirtualNetwork -ResourceGroupName $resourceGroup -Location $location `
  -Name MYvNET -AddressPrefix 192.168.0.0/16 -Subnet $subnetConfig
$pip = New-AzPublicIpAddress -ResourceGroupName $resourceGroup -Location $location `
  -Name "mypublicdns$(Get-Random)" -AllocationMethod Static -IdleTimeoutInMinutes 4
$nsgRuleRDP = New-AzNetworkSecurityRuleConfig -Name myNetworkSecurityGroupRuleRDP  -Protocol Tcp `
  -Direction Inbound -Priority 1000 -SourceAddressPrefix * -SourcePortRange * -DestinationAddressPrefix * `
  -DestinationPortRange 3389 -Access Deny
$nsg = New-AzNetworkSecurityGroup -ResourceGroupName $resourceGroup -Location $location `
  -Name myNetworkSecurityGroup -SecurityRules $nsgRuleRDP
$nic = New-AzNetworkInterface -Name $vmName -ResourceGroupName $resourceGroup -Location $location `
  -SubnetId $vnet.Subnets[0].Id -PublicIpAddressId $pip.Id -NetworkSecurityGroupId $nsg.Id

# Create a virtual machine configuration using $imageVersion.Id to specify the image version.
$vmConfig = New-AzVMConfig -VMName $vmName -VMSize Standard_D1_v2 | `
Set-AzVMSourceImage -Id $galleryImage.Id | `
Add-AzVMNetworkInterface -Id $nic.Id

# Create a virtual machine
New-AzVM -ResourceGroupName $resourceGroup -Location $location -VM $vmConfig

Es wird empfohlen, den Zugriff auf der Katalogebene freizugeben. Verwenden Sie eine E-Mail-Adresse und das Cmdlet Get-AzADUser, um die Objekt-ID für den Benutzer abzurufen, und verwenden Sie dann New-AzRoleAssignment, um ihnen Zugriff auf den Katalog zu gewähren. Ersetzen Sie die Beispiel-E-Mail-Adresse alinne_montes@contoso.com in diesem Beispiel durch Ihre eigenen Informationen.

# Get the object ID for the user
$user = Get-AzADUser -StartsWith alinne_montes@contoso.com
# Grant access to the user for our gallery
New-AzRoleAssignment `
   -ObjectId $user.Id `
   -RoleDefinitionName Reader `
   -ResourceName $gallery.Name `
   -ResourceType Microsoft.Compute/galleries `
   -ResourceGroupName $resourceGroup.ResourceGroupName

Bereinigen von Ressourcen

Wenn die Ressourcengruppe und alle dazugehörigen Ressourcen nicht mehr benötigt werden, können Sie sie mit dem Cmdlet Remove-AzResourceGroup entfernen:

# Delete the gallery 
Remove-AzResourceGroup -Name myGalleryRG

# Delete the VM
Remove-AzResourceGroup -Name myResoureceGroup

Azure Image Builder

Azure bietet darüber hinaus den auf Packer basierenden Dienst Azure VM Image Builder. Beschreiben Sie einfach Ihre Anpassungen in einer Vorlage, und diese übernimmt die Imageerstellung.

Nächste Schritte

In diesem Tutorial haben Sie ein spezialisiertes VM-Image erstellt. Sie haben Folgendes gelernt:

  • Erstellen einer Azure Compute Gallery-Instanz
  • Erstellen einer Imagedefinition
  • Erstellen einer Imageversion
  • Erstellen eines virtuellen Computers aus einem Image
  • Freigeben eines Katalogs

Im nächsten Tutorial erhalten Sie Informationen zu VM-Skalierungsgruppen.