Kesu - Fotolia

Snapshots zur Automatisierung nutzen

Mit Snapshots von Azure-VMs lassen sich neue virtuelle Disks und auf deren Basis neue Azure-VMs erstellen. Das geht auch mit Skripten und beschleunigt die Bereitstellung.

Azure-VMs unterstützen das Erstellen von Snapshots, um den aktuellen Zustand einer VM zu sichern. Darüber hinaus lassen sich mit Snapshots aber unproblematisch komplett neue virtuelle Disks erstellen. Diese Disks können nicht nur als Datenplatte genutzt werden, sondern auch zum Erstellen weiterer Azure-VMs. Es ist daher leicht möglich auf Basis einer einzelnen VM in Azure zahlreiche weitere, identisch konfigurierte Azure-VMs zu erstellen. Die Vorgänge lassen sich im Azure-Portal durchführen, aber auch mit PowerShell.

Nach dem Erstellen eines Snapshots einer VM, lassen sich die Vorgänge auch um Azure-Portal vornehmen. Nach dem Anklicken eines Snapshots steht der Menüpunkt Datenträger erstellen im Portal zur Verfügung. 

Abbildung 1: Azure Snapshots lassen sich neue virtuelle Datenträger und Azure-VMs erstellen.
Abbildung 1: Azure Snapshots lassen sich neue virtuelle Datenträger und Azure-VMs erstellen.

Administratoren können die Vorgänge ebenso in der PowerShell skripten. Darauf gehen wir nachfolgend ebenfalls ein. 

Snapshots von Azure-VMs nutzen

Snapshots sind essenziell für die Verwaltung des Zustands virtueller Maschinen, bieten eine Momentaufnahme des Disk-Zustandes und ermöglichen das Zurücksetzen oder Klonen von VMs bei Bedarf. Administratoren nutzen das Azure-Portal, die PowerShell und die Azure Cloud Shell, um diese Prozesse effizient zu steuern.

Die Azure PowerShell Module lassen sich über den Befehl

Install-Module -Name Az -AllowClobber -Scope CurrentUser

 installieren, während die Azure Cloud Shell direkt über das Azure Portal zugänglich ist.

Um einen Snapshot einer Azure-VM zu erstellen, wählt man zunächst die entsprechende VM aus. Dies geschieht in der PowerShell mit dem Befehl:

$vm = Get-AzVM -ResourceGroupName "ResourceGroup" -Name "VMName"
Anschließend wird der Snapshot mit folgenden Befehlen erstellt:
$disk = Get-AzDisk -ResourceGroupName "ResourceGroup" -DiskName $vm.StorageProfile.OsDisk.Name
$snapshotConfig = New-AzSnapshotConfig -SourceUri $disk.Id -CreateOption Copy -Location "Location"
$snapshot = New-AzSnapshot -Snapshot $snapshotConfig -SnapshotName "SnapshotName" -ResourceGroupName "ResourceGroup"

Neue virtuelle Festplatte aus einem Snapshot erstellen

Mit dem erstellten Snapshot kann eine neue virtuelle Festplatte erstellt werden. Der entsprechende Befehl in der PowerShell sieht wie folgt aus:

$diskConfig = New-AzDiskConfig -Location "Location" -SourceResourceId $snapshot.Id -CreateOption Copy
$newDisk = New-AzDisk -Disk $diskConfig -ResourceGroupName "ResourceGroup" -DiskName "NewDiskName"

Diese neue Festplatte kann wiederum für die Erstellung einer neuen VM verwendet werden. Die Erstellung einer neuen VM aus der Snapshot-basierten Festplatte erfolgt durch das Festlegen der VM-Konfiguration und das Einbinden der neuen Festplatte als OS-Disk:

$vmConfig = New-AzVMConfig -VMName "NewVMName" -VMSize "Standard_D2s_v3"
$vmConfig = Set-AzVMOSDisk -VM $vmConfig -ManagedDiskId $newDisk.Id -CreateOption Attach -Windows
New-AzVM -ResourceGroupName "ResourceGroup" -Location "Location" -VM $vmConfig

Dieser Prozess initiiert eine neue VM, die die Daten und Konfiguration des originalen Snapshots verwendet.

Bei der Arbeit mit Snapshots ist es wichtig, Sicherheitsaspekte und Kostenkontrolle zu berücksichtigen. Snapshots sollten regelmäßig überprüft und alte, unnötige Snapshots zur Kostenreduktion gelöscht werden. Bei Fehlern in der Snapshot-Erstellung ist es oft hilfreich, die Berechtigungen zu überprüfen und sicherzustellen, dass die Regionen von Snapshot und Ressourcen identisch sind. 

Praktische Anwendungen von Snapshots für erweiterte Szenarien

In der Praxis können Snapshots auch für Szenarien wie Disaster Recovery, Tests und Entwicklungsumgebungen genutzt werden. Beispielsweise lässt sich durch die Erstellung eines Snapshots vor der Durchführung von Updates oder bedeutenden Änderungen an einer Anwendung eine Rückfallposition sichern. Falls das Update fehlschlägt oder unerwartete Nebenwirkungen hat, kann schnell auf den Snapshot zurückgegriffen und die VM auf ihren ursprünglichen Zustand zurückgesetzt werden.

Für Entwicklerteams ist es nützlich, mehrere Snapshots zu verschiedenen Entwicklungsstadien einer Anwendung zu erstellen. Diese Snapshots können verwendet werden, um verschiedene Versionen einer Anwendung parallel in unterschiedlichen Testumgebungen laufen zu lassen, ohne die Produktionssysteme zu beeinträchtigen. Der Befehl in der PowerShell, um einen Snapshot einer VM vor einem kritischen Update zu erstellen, könnte beispielsweise wie folgt aussehen:

# Vor dem Update Snapshot erstellen
$snapshotName = "PreUpdate_" + (Get-Date -Format "yyyyMMdd_HHmmss")
$snapshot = New-AzSnapshot -Snapshot $snapshotConfig -SnapshotName $snapshotName -ResourceGroupName "ResourceGroup"

Ein weiteres wichtiges Einsatzgebiet von Snapshots liegt in der Datenmigration. Wenn Daten von einer VM auf eine andere übertragen werden sollen, kann ein Snapshot der Disk erstellt und auf eine neue VM in einer anderen Region oder einem anderen Abonnement angewendet werden. Der Vorgang umfasst das Erstellen des Snapshots, das Übertragen der Snapshot-Daten und das Erzeugen einer neuen Disk in der Zielumgebung:

# Snapshot zur Datenmigration erstellen
$targetLocation = "NewLocation"
$diskCopyConfig = New-AzDiskConfig -Location $targetLocation -SourceResourceId $snapshot.Id -CreateOption Copy
$transferredDisk = New-AzDisk -Disk $diskCopyConfig -ResourceGroupName "NewResourceGroup" -DiskName "MigratedDiskName"

Innovative Einsatzmöglichkeiten von Snapshots zur VM-Erstellung

In komplexen IT-Umgebungen können Snapshots zur schnellen Skalierung von Anwendungen durch das Klonen bestehender VMs genutzt werden. Ein konkretes Beispiel ist das Management eines Webserver-Clusters. Ein Administrator kann einen Snapshot eines fehlerfrei laufenden Webservers verwenden und diesen Snapshot als Basis für weitere Server verwenden, um einen konsistenten und fehlerfreien Zustand über alle Instanzen sicherzustellen. Der Prozess kann folgendermaßen automatisiert werden:

# Erstellung eines Snapshots vom Master-Web-Server
$masterSnapshot = New-AzSnapshot -SnapshotConfig $snapshotConfig -SnapshotName "MasterWebServer" -ResourceGroupName "ResourceGroup"
# Erstellung neuer VMs basierend auf dem Master-Snapshot
for ($i = 1; $i -le 5; $i++) {
    $newDiskConfig = New-AzDiskConfig -Location "Location" -SourceResourceId $masterSnapshot.Id -CreateOption Copy
    $newDisk = New-AzDisk -Disk $newDiskConfig -ResourceGroupName "ResourceGroup" -DiskName "WebServerDisk$i"
    $vmConfig = New-AzVMConfig -VMName "WebServer$i" -VMSize "Standard_D2s_v3"
    $vmConfig = Set-AzVMOSDisk -VM $vmConfig -ManagedDiskId $newDisk.Id -CreateOption Attach -Windows
    New-AzVM -ResourceGroupName "ResourceGroup" -Location "Location" -VM $vmConfig
}

Die Aufgaben lassen sich problemlos in der grafischen Oberfläche des Azure-Portals erledigen. Sobald ein neuer Daten Datenträger auf Basis eines Snapshots erstellt wurde, reicht es aus diesen im Portal anzuklicken. Im oberen Bereich der Details eines Snapshots steht der Menüpunkt Virtuellen Computer erstellen zur Verfügung.

Abbildung 2: Erstellen einer neuen Azure-Vm auf Basis eines vorhandenen Datenträgers, der wiederum auf einen Snapshot basiert.
Abbildung 2: Erstellen einer neuen Azure-Vm auf Basis eines vorhandenen Datenträgers, der wiederum auf einen Snapshot basiert.

Die einzelnen Aufgaben lassen sich daher mit der PowerShell und der Azure Cloud Shell automatisieren und Skripten sowie im Azure-Portal in der grafischen Oberfläche erstellen. Im Azure-Portal sind das wenige Klicks, um identische Azure-VMs bereitzustellen und auch die Befehle in der PowerShell und Azure Cloud Shell sind nicht sehr komplex, bieten aber viele Möglichkeiten. Dadurch lassen sich in wenigen Minuten zahlreiche VMs erstellen, die eine identische Konfiguration aufweisen. 

Erfahren Sie mehr über Storage und Virtualisierung