So erstellen Sie ein Packer-Image für Azure

Für Administratoren, die es vorziehen, trotz bester Absichten ein eigenes Windows Server-Image zu erstellen, können Probleme mit diesen handgefertigten Builds auftreten.

Um eine gewisse Konsistenz zu gewährleisten und unnötige Helpdesk-Tickets zu vermeiden, können Image-Management-Tools wie Packer beim Erstellen helfen goldene Bilder auf unterschiedliche Bedürfnisse zugeschnitten. Das Packer-Image-Tool automatisiert den Erstellungsprozess und hilft Administratoren bei der Verwaltung von Windows Server-Images. Packer bietet eine Möglichkeit, den Image-Konstruktionsprozess zu skripten, um Builds durch Automatisierung für mehrere Plattformen gleichzeitig zu erstellen. Administratoren können Code-Repositorys verwenden, um validierte Packer-Image-Konfigurationen zu speichern, die Administratoren an verschiedenen Standorten gemeinsam nutzen können, um die Stabilität zwischen Builds sicherzustellen.

Erstellen Sie ein Packer-Image für Azure

Um zu demonstrieren, wie Packer funktioniert, erstellen wir damit ein Windows Server-Image. Anfangen, Laden Sie Packer herunter und installieren Sie es für das Betriebssystem Ihrer Wahl. Packer bietet auf seiner Website eine Installationsanleitung an.
Als nächstes müssen wir herausfinden, wo das Bild erstellt werden soll. Eine Packer-Funktion namens Builder erstellt Images für verschiedene Dienste wie Azure, AWS, Docker, VMware und mehr. In diesem Lernprogramm wird erläutert, wie Sie ein Windows Server-Image für die Ausführung in Azure erstellen.
Um ein Image für Azure zu erstellen, müssen einige Voraussetzungen erfüllt sein. Du brauchst:

  • ein Dienstleister für Packer zur Authentifizierung bei Azure;
  • ein Speicherkonto zum Speichern des Bildes;
  • den Namen der Ressourcengruppe für das Speicherkonto;
  • das Azure-Abonnement ICH WÜRDE;
  • die Mandanten-ID für Ihr Azure Active Directory; und
  • einen Speichercontainer zum Platzieren des VHD-Images.

Überprüfen Sie die Build-Anweisungen für Windows Server

Eine Packer-Funktion namens Builder erstellt Images für verschiedene Dienste wie Azure, AWS, Docker, VMware und mehr.

Als nächstes ist es Zeit, die Bildvorlage einzurichten. Für jedes Packer-Image ist ein JSON Datei namens eine Vorlage, die teilt Packer mit, wie das Image erstellt werden soll und wo es hingelegt werden soll. Ein Beispiel für eine Vorlage, mit der ein Azure-Image erstellt wird, finden Sie im folgenden Code. Speichern Sie es unter dem Dateinamen WindowsServer.Azure.json.
{
“Variablen”: {
“Kunden ID”: “”,
“client_secret”: “”,
“Objekt Identifikation”: “”
},
“Bauherren”: [{
    “type”: “azure-arm”,

    “client_id”: “{{user `client_id`}}”,
    “object_id”: “{{user `object_id`}}”,
    “client_secret”: “{{user `client_secret`}}”,
    “resource_group_name”: “labtesting”,
    “storage_account”: “adblabtesting”,
    “subscription_id”: “d660a51f-031d-4b8f-827d-3f811feda5fc”,
    “tenant_id”: “bb504844-07db-4019-b1c4-7243dfc97121”,

    “capture_container_name”: “vhds”,
    “capture_name_prefix”: “packer”,

    “os_type”: “Windows”,
    “image_publisher”: “MicrosoftWindowsServer”,
    “image_offer”: “WindowsServer”,
    “image_sku”: “2016-Datacenter”,
    “location”: “East US”,
    “vm_size”: “Standard_D2S_v3”
  }]
}}
Sie sollten das validieren Schema bevor Sie mit dem beginnen Befehl zur Überprüfung des Packers. Wir möchten keine vertraulichen Informationen in der Vorlage, daher erstellen wir die Kunden ID und client_secret Variablen und übergeben Sie diese zur Laufzeit.
Packer validieren -var ‘client_id = Wert’ -var ‘client_secret = Wert’ WindowsServer.Azure.json

So beheben Sie Packer-Build-Probleme

Nachdem der Befehl bestätigt hat, dass die Vorlage gut ist, erstellen wir das Image mit nahezu derselben Syntax wie das Validierungsbefehl. Für die Zwecke dieses Artikels verwenden wir Platzhalter für die Kunden ID, client_secret und Objekt Identifikation Verweise.
> Packer Build -var ‘client_id = XXXX’ -var ‘client_secret = XXXX’ -var ‘object_id = XXXX’ WindowsServer.Azure.json
Wenn Sie den Build zum ersten Mal ausführen, können einige Fehler auftreten, wenn das Setup nicht abgeschlossen ist. Hier sind die Fehler, die beim Ausführen meines Builds aufgetreten sind:

    • “Build ‘Azure-Arm’ fehlerhaft: Das Speicherkonto befindet sich in eastus, aber der Build wird in West-USA stattfinden. Die Speicherorte müssen identisch sein.”
    • Build ‘azure-arm’ fehlerhaft: storage.AccountsClient # ListKeys: Fehler beim Beantworten der Anforderung: StatusCode = 404 – Ursprünglicher Fehler: autorest / azure: Der Dienst hat einen Fehler zurückgegeben. Status = 404 Code = “ResourceGroupNotFound” Message = “Ressourcengruppe ‘adblabtesting’ konnte nicht gefunden werden.”

Verwenden von Packer zum Erstellen eines Images von einer anderen VM.

  • “==> azure-arm: ERROR: -> VMSizeDoesntSupportPremiumStorage: Der angeforderte Vorgang kann nicht ausgeführt werden, da der Speicherkontotyp ‘Premium_LRS’ für die VM-Größe ‘Standard_A2’ nicht unterstützt wird.”

Die Fehlermeldungen sind unkompliziert und nicht schwer zu beheben.
Die folgende Fehlermeldung ist jedoch schwerwiegender:
==> Azure-Arm: FEHLER: -> Verboten: Zugriff verweigert
==> Azure-Arm:
==> azure-arm: … Zertifikat-URL konnte nicht abgerufen werden, erneut versuchen (0)
Dies zeigt die Verwendung des falschen an Objekt Identifikation. Suchen Sie die richtige in der Azure-Abonnementrolle.
Nach dem Hinzufügen der richtigen object_id finden Sie eine VHD-Image in Azure.

Similar Posts

Leave a Reply