Tutorial: Erstellen und Verwenden eines benutzerdefinierten Images für Virtual Machine Scale Sets mit der Azure CLI

Wenn Sie eine Skalierungsgruppe erstellen, geben Sie ein Image an, das beim Bereitstellen der VM-Instanzen verwendet wird. Sie können ein benutzerdefiniertes VM-Image verwenden, um die Anzahl von Aufgaben zu reduzieren, nachdem VM-Instanzen bereitgestellt wurden. Dieses benutzerdefinierte VM-Image enthält alle erforderlichen Anwendungsinstallationen oder -konfigurationen. Für alle VM-Instanzen, die in der Skalierungsgruppe erstellt werden, wird das benutzerdefinierte VM-Image verwendet, und die VM-Instanzen sind für die Bereitstellung Ihres Anwendungsdatenverkehrs bereit. In diesem Tutorial lernen Sie Folgendes:

  • Erstellen einer Azure Compute Gallery
  • Erstellen der Definition eines spezialisierten Images
  • Erstellen einer Imageversion
  • Erstellen einer Skalierungsgruppe auf der Grundlage eines spezialisierten Images
  • Freigeben eines Imagekatalogs

Wenn Sie kein Azure-Abonnement haben, erstellen Sie ein kostenloses Azure-Konto, bevor Sie beginnen.

Voraussetzungen

  • Verwenden Sie die Bash-Umgebung in Azure Cloud Shell. Weitere Informationen finden Sie unter Schnellstart für Bash in Azure Cloud Shell.

  • Wenn Sie CLI-Referenzbefehle lieber lokal ausführen, installieren Sie die Azure CLI. Wenn Sie Windows oder macOS ausführen, sollten Sie die Azure CLI in einem Docker-Container ausführen. Weitere Informationen finden Sie unter Ausführen der Azure CLI in einem Docker-Container.

    • Wenn Sie eine lokale Installation verwenden, melden Sie sich mithilfe des Befehls az login bei der Azure CLI an. Führen Sie die in Ihrem Terminal angezeigten Schritte aus, um den Authentifizierungsprozess abzuschließen. Informationen zu anderen Anmeldeoptionen finden Sie unter Anmelden mit der Azure CLI.

    • Installieren Sie die Azure CLI-Erweiterung beim ersten Einsatz, wenn Sie dazu aufgefordert werden. Weitere Informationen zu Erweiterungen finden Sie unter Verwenden von Erweiterungen mit der Azure CLI.

    • Führen Sie az version aus, um die installierte Version und die abhängigen Bibliotheken zu ermitteln. Führen Sie az upgrade aus, um das Upgrade auf die aktuelle Version durchzuführen.

  • Für diesen Artikel ist mindestens Version 2.4.0 der Azure CLI erforderlich. Bei Verwendung von Azure Cloud Shell ist die aktuelle Version bereits installiert.

Übersicht

Eine Azure Compute Gallery 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.

Erstellen und Konfigurieren einer Quell-VM

Erstellen Sie zunächst mit az group create eine Ressourcengruppe und dann mit az vm create eine VM. Diese VM wird dann als Quelle für das Image verwendet.

Im folgenden Beispiel wird eine Linux-VM mit dem Namen myVM in der Ressourcengruppe myResourceGroup erstellt.

export RANDOM_ID=$(openssl rand -hex 3)
export MY_RESOURCE_GROUP_NAME="myResourceGroup$RANDOM_ID"
export REGION="eastus"
export MY_VM_NAME="myVM"

az group create --name $MY_RESOURCE_GROUP_NAME --location $REGION

az vm create \
  --resource-group $MY_RESOURCE_GROUP_NAME \
  --name $MY_VM_NAME \
  --image debian11 \
  --admin-username azureuser \
  --generate-ssh-keys

Tipp

Die ID Ihrer VM wird in der Ausgabe des Befehls az vm create angezeigt. Kopieren und speichern Sie sie an einem sicheren Ort, damit Sie sie später in diesem Tutorial verwenden können.

Ein Imagekatalog ist die primäre Ressource, die zur Ermöglichung des Teilens von Images verwendet wird.

Zulässige Zeichen für Katalognamen sind Groß- und Kleinbuchstaben, Zahlen und Punkte. Der Katalogname darf keine Gedankenstriche enthalten. Katalognamen müssen innerhalb Ihres Abonnements eindeutig sein.

Erstellen Sie einen Imagekatalog mit az sig create.

Im folgenden Beispiel:

  • Sie erstellen eine Ressourcengruppe für den Katalog myGalleryRG in der Region USA, Osten.
  • Der Katalog heißt myGallery.
export MY_GALLERY_RG_NAME="myGalleryRG$RANDOM_ID"
export MY_GALLERY_NAME="myGallery$RANDOM_ID"

az group create --name $MY_GALLERY_RG_NAME --location $REGION
az sig create --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME

Erstellen einer Imagedefinition

Imagedefinitionen erstellen eine logische Gruppierung von Images. Sie werden verwendet, um Informationen zu den Imageversionen zu verwalten, die in ihnen erstellt werden.

Namen für Imagedefinition können aus Groß- und Kleinbuchstaben, Zahlen, Punkten und (Binde)Strichen bestehen.

Stellen Sie sicher, dass die Imagedefinition den richtigen Typ aufweist:

  • Zustand: Wenn Sie die VM generalisiert haben (über Sysprep für Windows oder „waagent -deprovision“ für Linux) sollten Sie mit --os-state generalized eine generalisierte Imagedefinition erstellen. Wenn Sie die VM verwenden möchten, ohne vorhandene Benutzerkonten zu entfernen, erstellen Sie mithilfe von --os-state specialized eine spezialisierte Imagedefinition.
  • Sicherheitstyp: Neue Azure-VMs werden standardmäßig mit „Vertrauenswürdiger Start“ erstellt. Dieses Tutorial enthält aufeinanderfolgende Codebeispiele, die die Konfiguration für „Vertrauenswürdiger Start“ beim Erstellen der Imagedefinition und der Skalierungsgruppe widerspiegeln. Wenn Sie ein Image mit einer VM erstellen, auf der „Vertrauenswürdiger Start“ nicht aktiviert ist, sollten Sie den richtigen Sicherheitstyp angeben, wenn Sie beide Ressourcen erstellen. Weitere Informationen zu „Vertrauenswürdiger Start“ finden Sie unter „Vertrauenswürdiger Start“ für Azure-VMs.

Weitere Informationen zu den Werten, die Sie für eine Imagedefinition angeben können, finden Sie unter Imagedefinitionen.

Erstellen Sie mithilfe von az sig image-definition create eine Imagedefinition im Katalog.

Im folgenden Beispiel lautet die Imagedefinition wie folgt:

  • Name: myImageDefinition
  • Konfiguriert für ein spezialisiertes Image mit dem Betriebssystem Linux Verwenden Sie --os-type Windows, um eine Definition für Images zu erstellen, die ein Windows-Betriebssystem verwenden.
  • Konfiguriert für „Vertrauenswürdiger Start“
export MY_IMAGE_DEF_NAME="myImageDefinition$RANDOM_ID"
MY_PUBLISHER_NAME="myPublisher$RANDOM_ID"

az sig image-definition create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --publisher $MY_PUBLISHER_NAME \
   --offer myOffer \
   --sku mySKU \
   --os-type Linux \
   --os-state specialized \
   --features SecurityType=TrustedLaunch

Tipp

Die ID Ihrer Imagedefinition wird in der Ausgabe des Befehls angezeigt. Kopieren und speichern Sie sie an einem sicheren Ort, damit Sie sie später in diesem Tutorial verwenden können.

Erstellen der Imageversion

Erstellen Sie mithilfe von az image gallery create-image-version eine Imageversion der VM.

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.

Im folgenden Beispiel:

  • Die Version des Images ist 1.0.0.
  • Sie erstellen ein Replikat in der Region USA, Süden-Mitte und ein Replikat in der Region USA, Osten. Die Replikationsregionen müssen die Region beinhalten, in der sich der virtuelle Quellcomputer befindet.
  • --virtual-machine ist die ID der VM, die Sie zuvor erstellt haben.
export MY_VM_ID=$(az vm show --name $MY_VM_NAME --resource-group $MY_RESOURCE_GROUP_NAME --query "id" --output tsv)

az sig image-version create \
   --resource-group $MY_GALLERY_RG_NAME \
   --gallery-name $MY_GALLERY_NAME \
   --gallery-image-definition $MY_IMAGE_DEF_NAME \
   --gallery-image-version 1.0.0 \
   --target-regions "southcentralus=1" "eastus=1" \
   --virtual-machine $MY_VM_ID

Hinweis

Sie müssen warten, bis die Imageversion vollständig erstellt und repliziert wurde, bevor Sie dieses Image verwenden können, um eine weitere Imageversion zu erstellen.

Fügen Sie beim Erstellen der Imageversion entweder --storage-account-type premium_lrs hinzu, um Ihr Image in Premium-Speicher zu speichern, oder --storage-account-type standard_zrs, um Ihr Image in zonenredundantem Speicher zu speichern.

Erstellen einer Skalierungsgruppe auf der Grundlage des Images

Sie erstellen mit az vmss create eine Skalierungsgruppe. Wenn Sie eine spezialisierte Quell-VM verwenden, fügen Sie den --specialized-Parameter hinzu, um anzugeben, dass es sich um ein spezialisiertes Image handelt.

Wenn Sie zum Erstellen der Skalierungsgruppeninstanzen die Imagedefinitions-ID für --image verwenden, erstellen Sie eine Skalierungsgruppe, die die neueste Version des verfügbaren Image verwendet. Wenn Sie eine bestimmte Version des Image benötigen, stellen Sie sicher, dass Sie die Imageversions-ID einschließen, wenn Sie --image definieren.

  • Aktuelles Imagebeispiel: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage

  • Beispiel für ein spezialisiertes Image: /subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myRG/providers/Microsoft.Compute/galleries/myGallery/images/myImage/versions/1.0.0

Im folgenden Beispiel lautet die Skalierungsgruppe:

  • Name: myScaleSet
  • Verwendet die aktuelle Version des Image myImageDefinition
  • Konfiguriert für „Vertrauenswürdiger Start“
export MY_IMAGE_DEF_ID=$(az sig image-definition show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --gallery-image-definition $MY_IMAGE_DEF_NAME --query "id" --output tsv)
export MY_SCALE_SET_RG_NAME="myResourceGroup$RANDOM_ID"
export MY_SCALE_SET_NAME="myScaleSet$RANDOM_ID"

az group create --name $MY_SCALE_SET_RG_NAME --location eastus

az vmss create \
   --resource-group $MY_SCALE_SET_RG_NAME \
   --name $MY_SCALE_SET_NAME \
   --orchestration-mode flexible \
   --image $MY_IMAGE_DEF_ID \
   --specialized \
   --security-type TrustedLaunch

Die Erstellung und Konfiguration aller Ressourcen und virtuellen Computer der Skalierungsgruppe dauert einige Minuten.

Sie können Images über Abonnements hinweg freigeben, indem Sie die rollenbasierte Zugriffssteuerung (Azure RBAC) verwenden, und Sie können sie auf Katalog-, Imagedefinitions- oder Imageversionsebene freigeben. Jeder Benutzer, der Leseberechtigungen für eine Imageversion besitzt (auch über Abonnements hinweg), kann mithilfe der Imageversion eine VM bereitstellen.

Wir empfehlen, dass Sie mit anderen Benutzern auf Ebene des Katalogs teilen.

Im Beispiel unten geschieht Folgendes:

  • Ruft die Objekt-ID des Katalogs mit az sig show ab.
  • Ermöglicht den Zugriff auf den Katalog mithilfe von az role assignment create.
    • Verwendet die Objekt-ID als Geltungsbereich der Zuweisung.
    • Verwendet die ID des angemeldeten Benutzers für Demonstrationszwecke als zugewiesene Person. Wenn Sie diesen Code in Ihrem Test- oder Produktionscode verwenden, müssen Sie sicherstellen, dass Sie die zugewiesene Person in die Benutzer ändern, die auf dieses Image Zugriff erhalten sollen. Weitere Informationen zum Teilen von Ressourcen mithilfe der Azure RBAC finden Sie unter Hinzufügen oder Entfernen von Azure-Rollenzuweisungen mithilfe der Azure CLI. , zusammen mit einer E-Mail-Adresse und az role assignment create, um einem Benutzer Zugriff auf die Shared Image Gallery zu gewähren.
export MY_GALLERY_ID=$(az sig show --resource-group $MY_GALLERY_RG_NAME --gallery-name $MY_GALLERY_NAME --query "id" --output tsv)
export CALLER_ID=$(az ad signed-in-user show --query id -o tsv)

az role assignment create \
   --role "Reader" \
   --assignee $CALLER_ID \
   --scope $MY_GALLERY_ID

Bereinigen von Ressourcen

Löschen Sie die Ressourcengruppe und alle dazugehörigen Ressourcen mit az group delete, um Ihre Skalierungsgruppe und die weiteren Ressourcen zu entfernen. Der Parameter --no-wait gibt die Steuerung an die Eingabeaufforderung zurück, ohne zu warten, bis der Vorgang abgeschlossen ist. Der Parameter --yes bestätigt ohne eine zusätzliche Aufforderung, dass Sie die Ressourcen löschen möchten.

Nächste Schritte

In diesem Tutorial wurde beschrieben, wie Sie ein benutzerdefiniertes VM-Image für Ihre Skalierungsgruppen mit der Azure CLI erstellen und verwenden:

  • Erstellen einer Azure Compute Gallery
  • Erstellen der Definition eines spezialisierten Images
  • Erstellen einer Imageversion
  • Erstellen einer Skalierungsgruppe auf der Grundlage eines spezialisierten Images
  • Freigeben eines Imagekatalogs

Fahren Sie mit dem nächsten Tutorial fort, um zu erfahren, wie Sie Anwendungen in Ihrer Skalierungsgruppe bereitstellen.