Freigeben über


Bereitstellen der Infrastruktur mit Azure-Bereitstellungsplätzen mit Terraform

Terraform ermöglicht die Definition, Vorschau und Bereitstellung der Cloudinfrastruktur. Terraform ermöglicht das Erstellen von Konfigurationsdateien mit HCL-Syntax. Mit der HCL-Syntax können Sie den Cloudanbieter ( z. B. Azure ) und die Elemente angeben, aus denen Ihre Cloudinfrastruktur besteht. Nach der Erstellung Ihrer Konfigurationsdateien erstellen Sie einen Ausführungsplan, mit dem Sie eine Vorschau Ihrer Infrastrukturänderungen anzeigen können, bevor diese bereitgestellt werden. Nachdem Sie die Änderungen überprüft haben, wenden Sie den Ausführungsplan an, um die Infrastruktur bereitzustellen.

Sie können Azure-Bereitstellungsplätze verwenden, um zwischen verschiedenen Versionen Ihrer App zu wechseln. Diese Möglichkeit hilft Ihnen, die Auswirkungen fehlerhafter Bereitstellungen zu minimieren.

In diesem Artikel wird ein Beispiel für die Verwendung von Bereitstellungsplätzen veranschaulicht, indem Sie durch die Bereitstellung von zwei Apps über GitHub und Azure geführt werden. Eine App wird in einem Produktionsplatz gehostet. Die zweite App wird in einem Staging-Slot gehostet. (Die Namen "Produktion" und "Staging" sind beliebig. Sie können alles sein, was für Ihr Szenario geeignet ist.) Nachdem Sie Ihre Bereitstellungsplätze konfiguriert haben, verwenden Sie Terraform, um bei Bedarf zwischen den beiden Slots auszutauschen.

In diesem Artikel erfahren Sie, wie Sie:

  • Erstellen Sie einen App-Dienst
  • Erstellen eines App Service-Steckplatzes
  • Wechseln zwischen den Beispielbereitstellungsslots

1. Konfigurieren Ihrer Umgebung

  • Azure-Abonnement: Wenn Sie nicht über ein Azure-Abonnement verfügen, erstellen Sie ein kostenloses Konto , bevor Sie beginnen.
  • GitHub-Konto: Sie brauchen ein GitHub-Konto, um das GitHub-Test-Repository zu forken und zu verwenden.

2. Erstellen und Anwenden des Terraform-Plans

  1. Navigieren Sie zum Azure-Portal.

  2. Öffnen Sie Azure Cloud Shell. Wenn Sie zuvor keine Umgebung ausgewählt haben, wählen Sie Bash als Ihre Umgebung aus.

    Cloud Shell-Eingabeaufforderung

  3. Wechseln Sie in das Verzeichnis clouddrive.

    cd clouddrive
    
  4. Erstelle ein Verzeichnis namens deploy.

    mkdir deploy
    
  5. Erstelle ein Verzeichnis namens swap.

    mkdir swap
    
  6. Verwenden Sie den ls Bash-Befehl, um zu überprüfen, ob Sie beide Verzeichnisse erfolgreich erstellt haben.

    Cloud shell nach dem Erstellen von Verzeichnissen

  7. Wechseln Sie in das Verzeichnis deploy.

    cd deploy
    
  8. Erstellen Sie in Cloud Shell eine Datei mit dem Namen deploy.tf.

    code deploy.tf
    
  9. Fügen Sie den folgenden Code in den Editor ein:

    # Configure the Azure provider
    provider "azurerm" { 
        # The "feature" block is required for AzureRM provider 2.x. 
        # If you're using version 1.x, the "features" block is not allowed.
        version = "~>2.0"
        features {}
    }
    
    resource "azurerm_resource_group" "slotDemo" {
        name = "slotDemoResourceGroup"
        location = "westus2"
    }
    
    resource "azurerm_app_service_plan" "slotDemo" {
        name                = "slotAppServicePlan"
        location            = azurerm_resource_group.slotDemo.location
        resource_group_name = azurerm_resource_group.slotDemo.name
        sku {
            tier = "Standard"
            size = "S1"
        }
    }
    
    resource "azurerm_app_service" "slotDemo" {
        name                = "slotAppService"
        location            = azurerm_resource_group.slotDemo.location
        resource_group_name = azurerm_resource_group.slotDemo.name
        app_service_plan_id = azurerm_app_service_plan.slotDemo.id
    }
    
    resource "azurerm_app_service_slot" "slotDemo" {
        name                = "slotAppServiceSlotOne"
        location            = azurerm_resource_group.slotDemo.location
        resource_group_name = azurerm_resource_group.slotDemo.name
        app_service_plan_id = azurerm_app_service_plan.slotDemo.id
        app_service_name    = azurerm_app_service.slotDemo.name
    }
    
  10. Speichern Sie die Datei (<STRG>S), und beenden Sie den Editor (<STRG>Q).

  11. Nachdem Sie die Datei erstellt haben, überprüfen Sie den Inhalt.

    cat deploy.tf
    
  12. Terraform initialisieren.

    terraform init
    
  13. Erstellen Sie den Terraform-Plan.

    terraform plan
    
  14. Stellen Sie die Ressourcen bereit, die in der deploy.tf Konfigurationsdatei definiert sind. (Bestätigen Sie die Aktion, indem Sie an der Eingabeaufforderung eingeben yes .)

    terraform apply
    
  15. Schließen Sie das Cloud Shell-Fenster.

  16. Wählen Sie im Hauptmenü des Azure-Portals "Ressourcengruppen" aus.

    Auswahl

  17. Wählen Sie auf der Registerkarte RessourcengruppenslotDemoResourceGroup aus.

    Von Terraform erstellte Ressourcengruppe

Jetzt sehen Sie alle Ressourcen, die Terraform erstellt hat.

Von Terraform erstellte Ressourcen

3. Forken des Testprojekts

Bevor Sie das Erstellen und das Ein- und Auswechseln der Bereitstellungs-Slots testen können, müssen Sie das Testprojekt von GitHub forken.

  1. Navigieren Sie zu dem fantastischen Terraform-Repo auf GitHub.

  2. Forken Sie das Repository awesome-terraform.

    Forken Sie das GitHub-Repository awesome-terraform

  3. Befolgen Sie alle Anweisungen zum Forken Ihrer Umgebung.

4. Bereitstellen über GitHub in Ihren Bereitstellungsslots

Nachdem Sie das Testprojekt-Repository geforkt haben, konfigurieren Sie die Deployment-Slots über die folgenden Schritte:

  1. Wählen Sie im Hauptmenü des Azure-Portals "Ressourcengruppen" aus.

  2. Wählen Sie "slotDemoResourceGroup" aus.

  3. Wählen Sie "slotAppService" aus.

  4. Wählen Sie "Bereitstellungsoptionen" aus.

    Bereitstellungsoptionen für eine App Service-Ressource

  5. Wählen Sie auf der Registerkarte "Bereitstellungsoption " die Option " Quelle auswählen" und dann "GitHub" aus.

    Bereitstellungsquelle auswählen

  6. Nachdem Azure die Verbindung hergestellt hat und alle Optionen anzeigt, wählen Sie "Autorisierung" aus.

  7. Wählen Sie auf der Registerkarte "Autorisierung" die Option "Autorisieren" aus, und geben Sie die Anmeldeinformationen an, die Azure für den Zugriff auf Ihr GitHub-Konto benötigt.

  8. Nachdem Azure Ihre GitHub-Anmeldeinformationen überprüft hat, wird eine Meldung angezeigt und besagt, dass der Autorisierungsprozess abgeschlossen ist. Wählen Sie 'OK ' aus, um die Registerkarte "Autorisierung " zu schließen.

  9. Wählen Sie "Ihre Organisation auswählen" und wählen Sie Ihre Organisation aus.

  10. Wählen Sie "Projekt auswählen" aus.

  11. Wählen Sie auf der Registerkarte Projekt auswählen das Projekt awesome-terraform aus.

    Wählen Sie das fantastische Terraform-Projekt aus

  12. Klicken Sie auf Verzweigung auswählen.

  13. Wählen Sie auf der Registerkarte Branch auswählenMaster aus.

    Wählen Sie die Verzweigung aus.

  14. Wählen Sie auf der Registerkarte "Bereitstellungsoption " "OK" aus.

Nun haben Sie den Produktionsslot bereitgestellt. Führen Sie die obigen Schritte zum Bereitstellen des Stagingslots mit den folgenden Änderungen aus:

  • Wählen Sie in Schritt 3 die SlotAppServiceSlotOne-Ressource aus.

  • Wählen Sie in Schritt 13 die Arbeitszweige aus.

    Auswählen der Arbeitszweige

5. Testen der App-Bereitstellungen

In den vorherigen Abschnitten richten Sie zwei Slots --slotAppService und slotAppServiceSlotOne--so ein, dass sie aus verschiedenen Zweigen in GitHub bereitgestellt werden. Lassen Sie uns eine Vorschau der Web-Apps anzeigen, um zu überprüfen, ob sie erfolgreich bereitgestellt wurden.

  1. Wählen Sie im Hauptmenü des Azure-Portals "Ressourcengruppen" aus.

  2. Wählen Sie "slotDemoResourceGroup" aus.

  3. Wählen Sie "slotAppService " oder "slotAppServiceSlotOne" aus.

  4. Wählen Sie auf der Übersichtsseite die URL aus.

    Wählen Sie die URL auf der Registerkarte

  5. Je nach ausgewählter App werden die folgenden Ergebnisse angezeigt:

    • slotAppService-Web-App - Blaue Seite mit einem Seitentitel von Slot Demo App 1.
    • slotAppServiceSlotOne Web App - Grüne Seite mit einem Seitentitel der Slot Demo App 2.

    Anzeigen einer Vorschau der Apps, um zu testen, dass sie ordnungsgemäß bereitgestellt wurden

6. Tauschen Sie die beiden Bereitstellungsplätze aus.

Führen Sie die folgenden Schritte aus, um den Austausch der beiden Bereitstellungsplätze zu testen:

  1. Wechseln Sie zur Browserregisterkarte, auf der slotAppService ausgeführt wird (die App mit der blauen Seite).

  2. Kehren Sie auf einer separaten Registerkarte zum Azure-Portal zurück.

  3. Öffnen Sie Cloud Shell.

  4. Ändern Sie Verzeichnisse in das CloudDrive/Swap-Verzeichnis .

    cd clouddrive/swap
    
  5. Erstellen Sie in Cloud Shell eine Datei mit dem Namen swap.tf.

    code swap.tf
    
  6. Fügen Sie den folgenden Code in den Editor ein:

    # Configure the Azure provider
    provider "azurerm" { 
        # The "feature" block is required for AzureRM provider 2.x. 
        # If you're using version 1.x, the "features" block is not allowed.
        version = "~>2.0"
        features {}
    }
    
    # Swap the production slot and the staging slot
    resource "azurerm_app_service_active_slot" "slotDemoActiveSlot" {
        resource_group_name   = "slotDemoResourceGroup"
        app_service_name      = "slotAppService"
        app_service_slot_name = "slotappServiceSlotOne"
    }
    
  7. Speichern Sie die Datei (<STRG>S), und beenden Sie den Editor (<STRG>Q).

  8. Terraform initialisieren.

    terraform init
    
  9. Erstellen Sie den Terraform-Plan.

    terraform plan
    
  10. Stellen Sie die Ressourcen bereit, die in der swap.tf Konfigurationsdatei definiert sind. (Bestätigen Sie die Aktion, indem Sie an der Eingabeaufforderung eingeben yes .)

    terraform apply
    
  11. Nachdem Terraform die Slots getauscht hat, kehren Sie zum Browser zurück. Aktualisieren Sie die Seite.

Die Web-App in Ihrem slotAppServiceSlotOne-Staging-Slot wurde mit dem Produktions-Slot ausgetauscht und wird jetzt in Grün dargestellt.

Die Bereitstellungsplätze wurden ausgetauscht.

Um zur ursprünglichen Produktionsversion der App zurückzukehren, müssen Sie den Terraform-Plan erneut anwenden, den Sie aus der swap.tf Konfigurationsdatei erstellt haben.

terraform apply

Nachdem die App ausgetauscht wurde, wird die ursprüngliche Konfiguration angezeigt.

Problembehandlung für Terraform in Azure

Behebung häufiger Probleme bei der Verwendung von Terraform in Azure

Nächste Schritte