Verwenden von Terraform als Infrastruktur als Codetool für Azure Developer CLI

Azure Developer CLI (azd) unterstützt mehrere Infrastrukturen als Codeanbieter (IaC), einschließlich:

Standardmäßig setzt azd voraus, dass Bicep als IaC-Anbieter verwendet wird. Beziehen Sie sich auf den Artikel „Vergleich von Terraform und Bicep“, um Hilfe bei der Entscheidung zu erhalten, welcher IaC-Anbieter am besten für Ihr Projekt geeignet ist.

Hinweis

Terraform befindet sich noch in der Beta-Phase. Lesen Sie weitere Informationen zur Unterstützung von Alpha- und Beta-Funktionen auf der Seite Funktionsversionierung und Veröffentlichungsstrategie

Voraussetzungen

Important

Terraform-Bereitstellungen erfordern eine Anmeldung bei der Azure CLI, auch wenn Sie azd verwenden. Der Terraform-Anbieter azurerm authentifiziert sich standardmäßig über Azure CLI und liest keine Token aus dem azd Anmeldeinformationscache. Wenn Sie nur azd auth login ausführen, schlägt azd up beim Bereitstellungsschritt mit ERROR: Please run 'az login' to setup account fehl. Informationen zum empfohlenen Anmeldeablauf finden Sie unter "Authentifizieren bei Azure".

Authentifizieren bei Azure

Da Terraform Azure CLI für die Authentifizierung verwendet, müssen Sie bei beiden azd und az vor der Ausführung azd upangemeldet sein. Sie können dies auf eine von zwei Arten tun.

Konfigurieren Sie azd so, dass die Authentifizierung an Azure CLI delegiert wird. Mit dieser Einstellung können Sie sich mit az login einmal anmelden und für beide Tools dieselben Anmeldedaten verwenden.

azd config set auth.useAzCliAuth true
az login

Wenn Sie mit mehreren Mandanten arbeiten, fügen Sie den Parameter --tenant hinzu:

az login --tenant <tenant-id>

Option 2: Anmelden bei jedem Tool separat

Wenn Sie die Authentifizierung von azd und der Azure CLI lieber voneinander getrennt halten möchten, melden Sie sich bei jedem Tool mit dem jeweiligen Befehl an:

azd auth login
az login

Sie müssen beide Sitzungen aktualisieren, wenn ein Token abläuft.

Konfiguration von Terraform als IaC-Anbieter

  1. Öffnen Sie die Datei azure.yaml im Stammverzeichnis Des Projekts, und stellen Sie sicher, dass die folgenden Zeilen zum Überschreiben des Standardwerts vorhanden sind, der Bicep ist:

    infra:
      provider: terraform
    
  2. Fügen Sie alle Ihre .tf Dateien dem infra Verzeichnis hinzu, das Sie im Stammverzeichnis Ihres Projekts finden.

  3. Führen Sie azd up aus.

Hinweis

Schauen Sie sich diese beiden azd-Vorlagen mit Terraform als IaC-Anbieter an: Node.js und Terraform und Python und Terraform.

azd pipeline config für Terraform

Terraform speichert Informationen über Ihre verwaltete Infrastruktur und Konfiguration. Aufgrund dieser Statusdatei müssen Sie den Remote-Zustand aktivieren bevor Sie azd pipeline config ausführen, um die Bereitstellungspipeline in GitHub einzurichten.

Standardmäßig verwendet azd die lokale Statusdatei. Wenn Sie azd up ausgeführt haben, bevor Sie den Remote-Status aktiviert haben, müssen Sie azd down ausführen und zur Remote-Statusdatei wechseln.

Lokaler vs. entfernter Zustand

Terraform verwendet persistente Zustandsdaten, um die von ihm verwalteten Ressourcen zu verfolgen.

Szenarien für die Aktivierung des Remote-Zustands:

  • Um gemeinsamen Zugriff auf die Zustandsdaten zu ermöglichen und die Zusammenarbeit mehrerer Personen an dieser Sammlung von Infrastrukturressourcen zu erlauben
  • Um zu vermeiden, dass sensible Informationen in der Statusdatei offengelegt werden
  • Um die Wahrscheinlichkeit eines versehentlichen Löschens zu verringern, weil der Speicherstatus lokal gespeichert wird

Aktiviert den Remote-Status

  1. Stellen Sie sicher, dass Sie ein Remote-Zustand-Speicherkonto konfigurieren.

  2. Fügen Sie eine neue Datei namens provider.conf.json im Ordner infra hinzu.

    {
        "storage_account_name": "${RS_STORAGE_ACCOUNT}",
        "container_name": "${RS_CONTAINER_NAME}",
        "key": "azd/azdremotetest.tfstate",
        "resource_group_name": "${RS_RESOURCE_GROUP}"
    }
    
  3. Aktualisieren Sie provider.tf, das sich im Ordner infra befindet, um das Back-End auf „remote“ zu setzen

    # Configure the Azure Provider
    terraform {
      required_version = ">= 1.1.7, < 2.0.0"
      backend "azurerm" {
      }
    
  4. Führen Sie azd env set <key> <value> aus, um die Konfiguration in die .env-Datei hinzuzufügen. Zum Beispiel:

    azd env set RS_STORAGE_ACCOUNT your_storage_account_name
    azd env set RS_CONTAINER_NAME your_terraform_container_name
    azd env set RS_RESOURCE_GROUP your_storage_account_resource_group
    
  5. Führen Sie den nächsten azd-Befehl gemäß Ihrem üblichen Workflow aus. Wenn der Remote-Status erkannt wird, initialisiert azd Terraform mit dem konfigurierten Backend.

  6. Um die Umgebung mit Teamkollegen zu teilen, stellen Sie sicher, dass sie azd env refresh -e <environmentName> ausführen, um die Einstellungen im lokalen System zu aktualisieren, und führen Sie Schritt 4 aus, um die Konfiguration in der .env-Datei hinzuzufügen.

Siehe auch

Nächste Schritte

häufig gestellte Fragen Azure Developer CLI