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

Bereitstellung in Azure

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
  • Spezialisierte Imagedefinition erstellen
  • Erstellen einer Imageversion
  • Erstellen einer Skalierungsgruppe auf der Grundlage eines spezialisierten Images
  • Bildergalerie freigeben

Wenn Sie nicht über ein Azure-Konto verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.

Voraussetzungen

  • 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 Initialisieren von Konfigurationen verwendet werden, z. B. für das Vorabladen von Anwendungen, Anwendungskonfigurationen und weiteren 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.

Für Galerienamen sind Groß- und Kleinbuchstaben, Ziffern und Punkte zulässig. Der Galeriename darf keine Bindestriche enthalten. Galerienamen müssen innerhalb Ihres Abonnements einzigartig 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 Image-Definitionen können aus Groß- und Kleinbuchstaben, Ziffern, Punkten und Bindestrichen 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 nachfolgende Codebeispiele, die beim Erstellen der Imagedefinition und der Skalierungsgruppe die vertrauenswürdige Start-Konfiguration 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 in der Galerie.

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 Wertebereich einer 32-Bit-Ganzzahl liegen. Format: Hauptversion.Nebenversion.Patch.

Im folgenden Beispiel:

  • Die Bildversion 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.

Sie können Ihr Image beim Erstellen der Imageversion auch in Premium-Speicher speichern, indem Sie --storage-account-type premium_lrs hinzufügen, oder in Zone Redundant Storage, indem Sie --storage-account-type standard_zrs hinzufügen.

Skalierungsset aus dem Image erstellen

Sie erstellen ein Skalierungsset mithilfe von az vmss create. 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 ist der Skalierungssatz:

  • Mit dem Namen myScaleSet
  • Unter Verwendung der neuesten Version des Images 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

Das Erstellen und Konfigurieren aller Ressourcen und VMs des Skalierungssets 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.

Das folgende Beispiel:

  • Ruft die Objekt-ID der Galerie 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, stellen Sie bitte sicher, dass Sie den Zuweisungsempfänger entsprechend anpassen, damit nur die von Ihnen gewünschten Personen auf dieses Bild zugreifen können. 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, mithilfe von az role assignment create, um einem Benutzer Zugriff auf den freigegebenen Image-Katalog 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

Um Ihre Skalierungsgruppe und weitere Ressourcen zu entfernen, löschen Sie die Ressourcengruppe und alle darin enthaltenen Ressourcen mit az group delete. 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
  • Spezialisierte Imagedefinition erstellen
  • Erstellen einer Imageversion
  • Erstellen einer Skalierungsgruppe auf der Grundlage eines spezialisierten Images
  • Bildergalerie freigeben

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