Konvertieren Sie und Migrieren Sie Ihre Ressourcen in eine Bicep-Datei

Abgeschlossen

Wenn Sie mit der Migration zu Bicep beginnen, ist es wichtig, einem strukturierten Prozess zu folgen, um sicherzustellen, dass Ihre Bicep-Datei Ihre Azure-Ressourcen richtig beschreibt. Sie müssen sicherstellen, dass Ihr Bicep-Code bewährte Methoden befolgt und dass er vollständig getestet und sicher für nachfolgende Bereitstellungen verwendet werden kann. In dieser Lerneinheit erfahren Sie mehr über die ersten beiden Phasen ihrer Bicep-Migration: die Konvertierungsphase und die Migrationsphase.

Diagramm, das die Konvertierungs- und Migrationsphase des empfohlenen Workflows zum Migrieren von Azure-Ressourcen zu Bicep zeigt.

Der Hauptfokus dieser beiden Phasen besteht darin, eine neue Bicep-Datei vorzubereiten, bevor Sie sie später umgestalten und testen.

Konvertierungsphase

Ziel der Konvertierungsphase der Migration Ihrer Ressourcen zu Bicep ist die Erfassung einer anfänglichen Darstellung Ihrer Azure-Ressourcen. Die Bicep-Datei, die Sie in dieser Phase erstellen, ist nicht vollständig und kann noch nicht verwendet werden. Die Datei bietet Ihnen jedoch einen Ausgangspunkt für Ihre Migration.

Die Konvertierungsphase besteht aus zwei möglichen Schritten, die Sie in Folge abschließen:

  1. Erfassen Sie eine Darstellung Ihrer Azure-Ressourcen.
  2. Konvertieren Sie bei Bedarf die JSON-Darstellung mithilfe des decompile Befehls in Bicep.

Diagramm, das eine JSON-Vorlage zeigt, die in JSON dekompiliert ist, und Azure-Ressourcen, die in eine JSON-Vorlage exportiert werden, die dann dekompiliert wird.

Wenn Sie über eine vorhandene JSON-Vorlage verfügen, die Sie in Bicep konvertieren, ist der erste Schritt einfach, da Sie bereits über ihre Quellvorlage verfügen. In dieser Einheit erfahren Sie, wie Sie es auf Bicep dekompilieren.

Wenn Sie Azure-Ressourcen konvertieren, die über das Azure-Portal oder ein anderes Tool bereitgestellt wurden, müssen Sie die Ressourcendefinitionen erfassen. Sie können die Ressourcendefinitionen exportieren und in Bicep konvertieren oder den Befehl "Ressource einfügen" in Visual Studio Code verwenden, um eine Bicep-Darstellung Ihrer Azure-Ressource einzufügen.

Darstellung von Ressourcen in Azure

Azure Resource Manager ist der Dienst zum Bereitstellen und Verwalten von Ressourcen in Azure. Alle in Azure bereitgestellten Ressourcen werden vom Ressourcen-Manager nachverfolgt, unabhängig von der Methode, die zum Bereitstellen der Ressource verwendet wurde. Sie können das Azure-Portal, die Azure CLI, Azure PowerShell, die REST-API des Ressourcen-Managers und Azure SDKs verwenden, um mit Dem Ressourcen-Manager zu interagieren.

Diagramm, das zeigt, wie Ressourcen-Manager Anforderungen von allen Azure-Clients und -Bibliotheken akzeptiert.

Es gibt zwei Arten von Vorgängen in Azure: Steuerungsebenenvorgänge und Datenebenenvorgänge. Steuerungsebenenvorgänge werden verwendet, um die Ressourcen in Ihrem Abonnement zu verwalten. Datenebenenvorgänge werden verwendet, um auf Features zuzugreifen, die von einer Ressource verfügbar gemacht werden. Das Erstellen eines virtuellen Computer ist z. B. ein Vorgang auf Steuerungsebene, aber das Herstellen einer Verbindung mit dem virtuellen Computer über RDP (Remotedesktopprotokoll) erfolgt auf Datenebene.

Exportieren vorhandener Ressourcen in eine JSON-Vorlage

Unabhängig davon, wie Ihre Azure-Ressourcen erstellt werden, stellt Der Ressourcen-Manager Informationen zu den einzelnen Ressourcen im JSON-Format zur Verfügung. Wenn Sie eine Kopie der JSON-Darstellung einer Ressource anfordern, exportieren Sie die Ressource. Die JSON-Datei, die Sie exportieren, kann in Bicep dekompiliert werden.

Der Ressourcen-Manager bietet mehrere Möglichkeiten zum Exportieren von Azure-Ressourcen in eine Vorlage. Sie können das Azure-Portal, die Azure CLI und azure PowerShell-Cmdlets verwenden, um einzelne Ressourcen, mehrere Ressourcen und ganze Ressourcengruppen zu exportieren.

Der Exportvorgang ist ein Steuerungsebenenvorgang, was bedeutet, dass er nur die Konfiguration der Azure-Ressourcen exportiert. Wenn Sie beispielsweise einen virtuellen Computer exportieren, werden die Daten auf der Festplatte des virtuellen Computers nicht exportiert. Und wenn Sie ein Speicherkonto exportieren, sind die BLOBs und andere Inhalte des Speicherkontos nicht im Exportprozess enthalten.

Beim Exportieren vorhandener Ressourcen müssen Sie einige Dinge berücksichtigen:

  • Die exportierte Ressourcendefinition ist eine Momentaufnahme des aktuellen Zustands dieser Ressource. Sie enthält alle Änderungen, die seit der ursprünglichen Bereitstellung an der Ressource vorgenommen wurden.
  • Die exportierte Vorlage enthält möglicherweise einige Standardressourceneigenschaften, die normalerweise aus einer Bicep-Definition weggelassen werden. Beispielsweise kann der Exportvorgang schreibgeschützte Eigenschaften hinzufügen, die Azure automatisch festlegt. Es ergibt keinen Sinn, diese Eigenschaften einzuschließen, da sie nur lesbar sind. Erwägen Sie, diese Eigenschaften aus den Ressourcendefinitionen zu entfernen, wenn Sie zu Bicep migrieren, um Ihre Bicep-Dateien frei von unnötigem Code zu halten, der zu Verwirrung führen kann.
  • Die exportierte Vorlage enthält wahrscheinlich nicht alle Parameter, die Sie benötigen, um die Vorlage wiederverwendbar zu machen. Wenn Sie eine Vorlage exportieren, werden viele der Eigenschaften fest einprogrammiert in die Vorlage. Sie erfahren, wie Sie später in diesem Modul Parameter hinzufügen.
  • Einige Ressourcen können nicht mithilfe dieses Ansatzes exportiert werden, und Sie müssen sie manuell in Ihrer Bicep-Datei definieren. Sie erfahren, wie Sie diese Ressourcen später in dieser Lektion neu erstellen.

Speichern von Bereitstellungen in einer JSON-Vorlage

Wenn Sie eine Ressource jemals manuell über das Azure-Portal bereitgestellt haben, haben Sie möglicherweise die Option zum Herunterladen einer Vorlage für die Automatisierung auf der Registerkarte "Überprüfen + Erstellen " bemerkt. Diese Option speichert eine JSON ARM-Vorlage, die auf den Namen und Eigenschaften basiert, die Sie beim Erstellen der Ressource im Portal festgelegt haben.

Resource Manager verfolgt auch Bereitstellungen von Ressourcen nach. Bereitstellungsvorgänge umfassen Änderungen, die von der Ressourcenerstellungsumgebung im Azure-Portal übermittelt werden, sowie alle ARM-Vorlagenbereitstellungen. Änderungen an vorhandenen Ressourcen, die über das Azure-Portal, Azure PowerShell-Cmdlets, Azure CLI oder andere Tools vorgenommen werden, erstellen in der Regel keine Bereitstellungen.

Wenn die Bereitstellungen mithilfe eines kompatiblen Tools erstellt wurden, können Sie über den Bereitstellungsverlauf der Ressourcengruppe auf die Bereitstellungsvorlage zugreifen. Sie können das Azure-Portal, die Azure CLI oder Azure PowerShell verwenden, um Bereitstellungen zu speichern.

Sie müssen einige Dinge berücksichtigen, wenn Sie Ihre Vorlagen mithilfe dieser Methode speichern:

  • Die gespeicherte Vorlage zeigt den Status der Ressourcen zum Zeitpunkt der Bereitstellung an. Sie enthält keine Änderungen, die nach der Bereitstellung vorgenommen wurden.
  • Wenn die Bereitstellung mehrere Ressourcen enthielt, können Sie keine bestimmten Ressourcen auswählen, die eingeschlossen und ausgeschlossen werden sollen. Dieser Vorgang lädt die Definition aller Ressourcen herunter, die Teil der ersten Bereitstellung waren. Wenn Sie jedoch zur Migrationsphase des Prozesses wechseln, können Sie Ressourcen, die Sie nicht benötigen, manuell ignorieren.
  • Die Vorlage enthält nur Ressourceneigenschaften, die für die Bereitstellung erforderlich sind.
  • Die Vorlage enthält möglicherweise Parameter, mit denen Sie die Vorlage in mehreren Umgebungen erneut bereitstellen können. Sie müssen jedoch bestätigen, dass diese Parameter Ihren Anforderungen entsprechen.
  • Die Vorlage enthält wahrscheinlich keine überflüssigen Eigenschaften, aber Sie sollten dennoch überprüfen, ob die Vorlage alles enthält, was Sie erwarten, und entfernen Sie alle nicht benötigten Eigenschaften.

Hinweis

Egal wie Sie Ressourcen exportieren, sei es durch Exportieren vorhandener Ressourcen oder durch Speichern von Bereitstellungen, behandeln Sie die exportierte Datei als Ausgangspunkt und verwenden Sie sie nicht direkt. Verwenden Sie sie stattdessen als Ausgangspunkt für Die endgültige Vorlage.

Einfügen vorhandener Ressourcen in Bicep

Die Bicep-Erweiterung für Visual Studio Code enthält den Befehl "Ressource einfügen ", der eine Bicep-Darstellung einer Azure-Ressource erfasst. Dieser Befehl liest die JSON-Definition der Ressource aus Azure, entfernt Eigenschaften, die als schreibgeschützt erkannt werden, und dekompiliert den JSON-Code in Bicep. Wie bei der Exportfunktion kann der resultierende Bicep-Code als Ausgangspunkt für die endgültige Bicep-Datei verwendet werden.

Sie können eine Ressource einfügen, indem Sie die Visual Studio Code-Befehlspalette öffnen. Verwenden Sie unter Windows und Linux STRG+UMSCHALT+P und unter macOS ⌘+UMSCHALT+P.

Dekompilieren der JSON-ARM-Quellvorlage

Der zweite Schritt bei der Migration Ihrer Azure-Ressourcen zu Bicep besteht darin, Ihre JSON ARM-Vorlagen und Azure-Ressourcen in Bicep-Vorlagen zu konvertieren. Die Bicep-Tools umfassen den decompile Befehl zum Konvertieren von Vorlagen. Sie können den decompile Befehl über Azure CLI oder die Bicep CLI aufrufen.

Der Dekompilierungsprozess garantiert keine vollständige Zuordnung von JSON zu Bicep. Möglicherweise müssen Sie die generierte Bicep-Datei überarbeiten, um die bewährten Methoden Ihrer Vorlage zu befolgen, bevor Sie die Datei verwenden, um Ressourcen bereitzustellen. Betrachten Sie dies als Ausgangspunkt für Ihre Migration. Später in diesem Modul erfahren Sie, wie Sie probleme beheben können, die während des Dekompilierungsprozesses auftreten.

Nachdem Sie die Vorlage dekompilieren, haben Sie die Konvertierungsphase abgeschlossen. Nun verfügen Sie über eine gültige Bicep-Datei, mit der Sie beginnen können.

Migrationsphase

Das Ziel der Migrationsphase der Migration Ihrer Ressourcen zu Bicep besteht darin, den ersten Entwurf Ihrer bereitstellungsfähigen Bicep-Datei zu erstellen und sicherzustellen, dass alle Azure-Ressourcen definiert werden, die für die Migration gelten.

Die Migrationsphase besteht aus drei Schritten, die Sie nacheinander ausführen:

  1. Erstellen Sie eine neue leere Bicep-Datei.
  2. Kopieren der jeweiligen Ressourcen aus der dekompilierten Vorlage.
  3. Ermitteln und Wiederherstellen aller fehlenden Ressourcen.

Diagramm, das die Schritte zum Migrieren einer Vorlage zu Bicep zeigt.

Erstellen Sie eine neue Bicep-Datei

Es hat sich bewährt, eine neue Bicep-Datei zu erstellen. Die in der Konvertierungsphase erstellte Datei ist ein Referenzpunkt, den Sie sich ansehen können, aber Sie sollten die Datei nicht als endgültig betrachten oder in diesem Zustand bereitstellen.

Kopiere Ressourcen in die neue Bicep-Datei

Kopieren Sie jede Ressource einzeln aus der konvertierten Bicep-Datei in die neue Bicep-Datei. Dieser Prozess hilft Ihnen, Probleme pro Ressource zu beheben und Verwirrung zu vermeiden, wenn Ihre Vorlage größer wird.

Nicht unterstützte Ressourcen neu erstellen

Nicht alle Azure-Ressourcentypen können über das Azure-Portal, die Azure CLI oder Azure PowerShell exportiert werden. Beispielsweise sind Erweiterungen virtueller Computer wie DependencyAgentWindows und MMAExtension (Microsoft Monitoring Agent) Ressourcentypen, die Sie nicht exportieren können.

Wenn Sie versuchen, eine Ressource mithilfe des Azure-Portals, der Azure CLI oder azure PowerShell zu exportieren und ein nicht unterstützter Ressourcentyp enthalten ist, wird eine detaillierte Fehlermeldung generiert. Sie müssen alle Ressourcen, die nicht exportiert wurden, wie z. B. Erweiterungen für virtuelle Maschinen, in Ihrer neuen Bicep-Datei erneut erstellen. Sie können aus mehreren Tools und Ansätzen auswählen, um Ressourcen neu zu erstellen, einschließlich Azure Resource Explorer, der ARM-Vorlagenreferenz und Azure-Schnellstartvorlagen.

Azure-Ressourcen-Explorer

Der Azure-Ressourcen-Explorer ist ein Tool, das im Azure-Portal eingebettet ist. Das Portal zeigt keine bestimmten Ressourcentypen an, aber Im Ressourcen-Explorer erhalten Sie eine JSON-Darstellung Ihrer Ressourcen. Um auf den Ressourcen-Explorer zuzugreifen, suchen Sie im Suchfeld danach:

Screenshot des Azure-Portals, das das Suchfeld mit eingegebenem Ressourcen-Explorer anzeigt.

Im Ergebnisfenster wird eine Liste der registrierten Ressourcenanbieter für Ihr Abonnement sowie Details für alle Ressourcen, Ressourcengruppen und Abonnements angezeigt, die Sie anzeigen dürfen. Um eine JSON-Darstellung einer Ressource anzuzeigen, wählen Sie die Hierarchie auf der linken Seite des Bereichs aus:

Screenshot des Azure-Portals, das den Azure-Ressourcen-Explorer zeigt.

Wenn Sie eine Ressource auswählen, können Sie die JSON-Darstellung wie in diesem Beispiel anzeigen:

{
    "name": "DependencyAgentWindows",
    "id": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/rg-app-prod-truckline/providers/Microsoft.Compute/virtualMachines/vm-prod-001/extensions/DependencyAgentWindows",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "eastus",
    "properties": {
        "autoUpgradeMinorVersion": true,
        "provisioningState": "Succeeded",
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.10"
    }
}

Sie können die JSON-Darstellung verwenden, um eine Bicep-Ressource zu definieren:

resource dependencyAgentWindows 'Microsoft.Compute/virtualMachines/extensions@2022-08-01' = {
  parent: virtualMachine
  name: 'DependencyAgentWindows'
  location: 'eastus'
  properties: {
    autoUpgradeMinorVersion: true
    publisher: 'Microsoft.Azure.Monitoring.DependencyAgent'
    type: 'DependencyAgentWindows'
    typeHandlerVersion: '9.10'
  }
}

Hinweis

Die JSON-Darstellung enthält eine Eigenschaft mit dem Namen provisioningState. Die provisioningState Eigenschaft ist schreibgeschützt und wird automatisch von Azure festgelegt, sodass sie nicht in der Bicep-Ressourcendefinition enthalten ist.

Tipp

Mit der Bicep-Erweiterung für Visual Studio Code können Sie Ihre Azure-Ressourcen in Bicep definieren. Beispielsweise enthält die Bicep-Darstellung der Ressource eine API-Version, die exportierte JSON-Version jedoch nicht. Wenn Sie mit der Eingabe des Ressourcentyps beginnen, wird in Visual Studio Code automatisch eine API-Version vorgeschlagen.

ARM-Template-Referenz

Die ARM-Vorlagenreferenz ist eine Quelle von Informationen zur ARM-Vorlagenstruktur, Ressourcentypen, API-Versionen und Eigenschaftendefinitionen für Azure-Ressourcen. Die Dokumentation enthält Beispiele in Bicep- und JSON-Formaten.

Sie können bestimmte Ressourcenanbieter und Ressourcentypen auswählen, wie Microsoft.Web/serverfarms und deren API-Versionen. Sie können überprüfen, welche Ressourceneigenschaften erforderlich sind und welche optional sind. Sie können auch Eigenschaftenbeschreibungen anzeigen, die Ihnen helfen, zu verstehen, was die Eigenschaften tun.

Azure Schnellstartvorlagen

Das Azure-Schnellstartvorlagen-Repository ist eine Sammlung von Vorlagen, die von der Community beigesteuert wurden. Dieses Repository von durchsuchbaren Vorlagen enthält Beispiele für viele Azure-Ressourcen und -Lösungen. In einigen Schnellstarts stehen sowohl eine JSON-ARM-Vorlage als auch eine Bicep ARM-Vorlage zum Anzeigen zur Verfügung. Sie können diese Vorlagen als Referenzpunkt verwenden, um Ihnen beim Erstellen und Überprüfen Ihrer Vorlagen für die Bereitstellung zu helfen.

Angenommen, Sie möchten eine Vorlage finden, die einen Azure App Service-Plan und eine App erstellt. Jede Schnellstartvorlage bietet Ihnen die Möglichkeit, die Vorlage direkt in Azure bereitzustellen oder die Vorlage auf GitHub anzuzeigen.

Screenshot einer Azure-Schnellstartvorlage, die eine einfache Linux-Web-App bereitstellt.

Denken Sie daran, dass die Azure-Schnellstartvorlagen Communitybeiträge sind. Einige Beispiele sind möglicherweise veraltet, da Features regelmäßig zu Azure-Diensten hinzugefügt werden. Die Beispiele können auch Ressourcen und Eigenschaften enthalten, die Sie für die Verwendung der Vorlage nicht benötigen. Das Repository von Schnellstartvorlagen ist jedoch eine nützliche Ressource, mit der Sie verstehen können, wie Sie Ihre Ressourcen mithilfe von ARM-Vorlagen bereitstellen können.