Funktionsweise von Azure Export für Terraform
In diesem Artikel werden Sie in den Azure Export für Terraform-Workflows vorgestellt. In diesem Artikel erfahren Sie mehr über die Best Practice-Anleitungen des Tools, aktuelle Einschränkungen und wie Sie diese Einschränkungen mindern.
Interaktiver Modus
Standardmäßig wird Azure Export für Terraform im interaktiven Modus ausgeführt. Wenn Sie im interaktiven Modus ausgeführt werden, werden die verfügbaren Tastenkombinationen am unteren Rand der Anzeige aufgeführt.
Task | Tastenkombinationen |
---|---|
Navigation | |
Wählen Sie das vorherige Element in der Ressourcenliste aus. | ^ -oder- k |
Wählen Sie das nächste Element in der Ressourcenliste aus. | (') -oder- j |
Wechseln zur vorherigen Seite in der Ressourcenliste. | ← -oder- h -oder- Bild-Aufwärts |
Wechseln zur nächsten Seite in der Ressourcenliste. | → -or- l -or- Page Down |
Springen Sie zum Anfang der Ressourcenliste. | g -oder- Start |
Springen Sie zum Ende der Ressourcenliste. | G -oder- Ende |
Auswählen der zu überspringenden Ressourcen | |
Ressource überspringen (oder unskip, wenn als "Überspringen" gekennzeichnet) | Delete |
Filtervorgänge | |
Definieren Sie einen Filter nach Text in der Ressourcenliste. | / |
Löschen eines aktuellen Filters | ESC |
Speichervorgänge | |
Speichern Sie eine Zuordnungsdatei der Ressourcenliste. Die Ausgabedatei wird durch überspringen (aber nicht filtern) beeinflusst. | s |
Exportieren Sie Ressourcen in den Zustand (falls --hcl-only nicht angegeben), und generiert die Konfiguration. |
a |
Benutzerfreundlichkeit | |
Zeigt Empfehlungen für die aktuelle Ressource an. | r |
Fehler beim Ressourcenexport anzeigen (falls vorhanden). | e |
Hilfe anzeigen. | ? |
Beenden | |
Beenden Sie den interaktiven Modus. | Q |
Für jede Ressource versucht Azure Export für Terraform, den entsprechenden Terraform-Ressourcentyp zu erkennen. Wenn eine Übereinstimmung gefunden wird, wird die Zeile mit dem folgenden Indikator markiert: 💡
Wenn die Ressource nicht aufgelöst werden kann, müssen Sie die Terraform-Ressourcenadresse in der folgenden Form eingeben: <resource type>.<resource name>
Verweist beispielsweise auf einen Terraform-Ressourcentyp von azurerm_linux_virtual_machine, während sich der test
Name für den virtuellen Computer bezieht, azurerm_linux_virtual_machine.test
der in den Konfigurationsdateien verwendet wird.
Um die verfügbaren Ressourcentypen für die ausgewählte Ressource anzuzeigen, drücken Sie R.
In einigen Fällen gibt es Azure-Ressourcen, die keine entsprechenden Terraform-Ressourcen aufweisen, z. B. wenn die Ressource terraform-Unterstützung fehlt. Einige Ressourcen können auch als Nebeneffekt der Bereitstellung einer anderen Ressource erstellt werden , z. B. die Betriebssystemdatenträgerressource, die beim Bereitstellen eines virtuellen Computers erstellt wird. In diesen Fällen können Sie die Ressourcen überspringen, ohne etwas zuzuweisen.
Nachdem Sie alle zu importierenden Ressourcen durchlaufen haben, drücken Sie w , um mit der Generierung der Terraform-Konfiguration zu beginnen und (wenn --hcl-only
nicht ausgewählt) in den Terraform-Zustand zu importieren.
Nicht interaktiver Modus
Standardmäßig wird Azure Export für Terraform im interaktiven Modus ausgeführt. Um anzugeben, dass das Tool im nicht interaktiven Modus ausgeführt werden soll, geben Sie das --non-interactive
Flag an.
aztfexport [command] --non-interactive <scope>
Wichtig
Wenn das Verzeichnis, in dem Sie Azure Export für Terraform ausführen, nicht leer ist, müssen Sie die --overwrite
Kennzeichnung hinzufügen, um die --hcl-only
Kennzeichnung zu verwenden.
Bewährte Methoden für Kernworkflows
Auf grundlegender Ebene sieht jeder Benutzer von Azure Export eine Entscheidung zwischen zwei Optionen vor:
In den folgenden Unterabschnitten finden Sie Anleitungen dazu, welche Option auf der Grundlage des Szenarios verwendet werden soll.
Verwalten der Infrastruktur
Möglicherweise müssen Sie nicht in den Zustand exportieren, wenn Sie die konfigurierten Ressourcen nicht auf die gewünschte Weise innerhalb Ihrer Umgebung überprüft haben.
Wenn Sie sicher sind, dass Sie den Satz von Ressourcen in Terraform mit terraform init plan apply
Workflows verwalten möchten, ist das Exportieren in den Zustand von wesentlicher Bedeutung.
Wenn Sie nicht sicher sind, dass Sie die Ressourcen noch verwalten möchten, wird das Übergeben des --hcl-only
Flags empfohlen.
Vorhandene Infrastruktur
In Szenarien, in denen Sie in vorhandene Terraform-Umgebungen exportieren, kann es hilfreich sein, sich als terraform-Planäquivalentvor allem vor dem Anfügen an vorhandene Umgebungen zu vorstellen--hcl-only
.
Der terraform apply
Befehl entspricht dem Exportieren von Ressourcen , während deren Konfiguration mit dem bereits vorhandenen Zustand verknüpft ist. In diesem Szenario spart die Verwendung einer Zuordnungsdatei Die Laufzeit für die Liste und Zuordnung von Ressourcen.
Ermitteln der Infrastruktur
Wenn Sie nicht sicher sind, welche Ressourcen in einer Umgebung vorhanden sind, können Sie überprüfen, indem Sie das --generate-mapping-file
Flag angeben. Weitere Informationen zu diesem Thema finden Sie unter Erkunden der benutzerdefinierten Ressourcenauswahl und Benennung mithilfe von Azure Export für Terraform.
Begrenzungen
Azure Export for Terraform ist ein komplexes Tool, das versucht, die Azure-Infrastruktur in Terraform-Code und -Zustand umzuwandeln. Die aktuellen bekannten Einschränkungen werden in den folgenden Unterabschnitten erläutert.
Schreibgeschützte Eigenschaften
Bestimmte Eigenschaften innerhalb von AzureRM sind schreibgeschützt und nicht im generierten Code enthalten, den Azure Export für Terraform erstellt. Das Problem wird behoben, indem die Eigenschaft nach dem Export in HCL-Code definiert wird.
Eigenschaftenübergreifende Einschränkungen
Der AzureRM-Anbieter kann zwei Eigenschaften festlegen, die miteinander in Konflikt stehen. Wenn Azure Export für Terraform widersprüchliche Eigenschaften liest, kann es beide Eigenschaften auf denselben Wert festlegen, obwohl der Benutzer nur eine konfiguriert hat. Weitere Komplikationen ergeben sich, wenn mehrere eigenschaftsübergreifende Einschränkungen innerhalb derselben generierten Konfiguration vorhanden sind. Sie müssen wissen, wo eigenschaftsübergreifende Konflikte in Ihrer Konfiguration vorhanden sind, um dieses Problem zu beheben.
Infrastruktur außerhalb des Ressourcenbereichs
Wenn Sie Azure Export für Terraform zum Ziel von Ressourcenbereichen verwenden, sind ressourcenbezogene Ressourcen möglicherweise außerhalb des angegebenen Bereichs vorhanden. Ein Beispiel ist eine Rollenzuweisung. Der Benutzer muss Ressourcen identifizieren, die sich außerhalb des Gültigkeitsbereichs befinden.
Schreibgeschützte Eigenschaften
Azure Export kann keine schreibgeschützten Eigenschaften (z. B. Kennwörter) innerhalb der Konfiguration generieren. Sie müssen die schreibgeschützten Eigenschaften kennen und in einer Konfiguration definieren, um neue Ressourcengruppen zu erstellen.
Ändern von Code zur Übereinstimmung mit Codierungsstandards
Es gibt einige erforderliche Vorgänge, wenn der Benutzer seinen Code ändern möchte, um die Codierungsstandards einzuhalten. Diese Schritte wären nur erforderlich, wenn der Benutzer den Code in Nicht-Posteingangsumgebungen verwenden möchte.
Eigenschaftendefinierte Ressourcen
Bestimmte Ressourcen in Azure können entweder als Eigenschaft in einer übergeordneten Terraform-Ressource oder als einzelne Terraform-Ressource definiert werden. Ein Beispiel ist ein Subnetz. Azure Export für Terraform definiert die Ressource als einzelne Ressource, aber es empfiehlt sich, Ihre vorhandene Codierungskonfiguration abzugleichen.
Explizite Abhängigkeiten
Azure Export für Terraform kann derzeit nur explizite Abhängigkeiten deklarieren. Sie müssen die Zuordnung der Beziehungen zwischen Ressourcen kennen, um den Code umzugestalten, um alle erforderlichen impliziten Abhängigkeiten einzuschließen.
Hartcodierte Werte
Azure Export für Terraform generiert derzeit hartcodierte Zeichenfolgen. Als bewährte Methode sollten Sie diese Werte auf Variablen umgestalten. Wenn Sie auch das --full-properties
Flag verwenden, um alle Eigenschaften verfügbar zu machen, können einige vertrauliche Informationen (z. B. geheime Schlüssel) in der generierten Konfiguration angezeigt werden. Verwenden Sie empfohlene Methoden, um die Sichtbarkeit dieses Codes zu schützen.