Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
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.
Terraform konfigurieren: Wenn Sie dies noch nicht getan haben, konfigurieren Sie Terraform mit einer der folgenden Optionen:
- GitHub-Konto: Sie brauchen ein GitHub-Konto, um das GitHub-Test-Repository zu forken und zu verwenden.
2. Erstellen und Anwenden des Terraform-Plans
Navigieren Sie zum Azure-Portal.
Öffnen Sie Azure Cloud Shell. Wenn Sie zuvor keine Umgebung ausgewählt haben, wählen Sie Bash als Ihre Umgebung aus.
Wechseln Sie in das Verzeichnis
clouddrive
.cd clouddrive
Erstelle ein Verzeichnis namens
deploy
.mkdir deploy
Erstelle ein Verzeichnis namens
swap
.mkdir swap
Verwenden Sie den
ls
Bash-Befehl, um zu überprüfen, ob Sie beide Verzeichnisse erfolgreich erstellt haben.Wechseln Sie in das Verzeichnis
deploy
.cd deploy
Erstellen Sie in Cloud Shell eine Datei mit dem Namen
deploy.tf
.code deploy.tf
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 }
Speichern Sie die Datei (<STRG>S), und beenden Sie den Editor (<STRG>Q).
Nachdem Sie die Datei erstellt haben, überprüfen Sie den Inhalt.
cat deploy.tf
Terraform initialisieren.
terraform init
Erstellen Sie den Terraform-Plan.
terraform plan
Stellen Sie die Ressourcen bereit, die in der
deploy.tf
Konfigurationsdatei definiert sind. (Bestätigen Sie die Aktion, indem Sie an der Eingabeaufforderung eingebenyes
.)terraform apply
Schließen Sie das Cloud Shell-Fenster.
Wählen Sie im Hauptmenü des Azure-Portals "Ressourcengruppen" aus.
Wählen Sie auf der Registerkarte RessourcengruppenslotDemoResourceGroup aus.
Jetzt sehen Sie alle Ressourcen, die Terraform erstellt hat.
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.
Navigieren Sie zu dem fantastischen Terraform-Repo auf GitHub.
Forken Sie das Repository awesome-terraform.
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:
Wählen Sie im Hauptmenü des Azure-Portals "Ressourcengruppen" aus.
Wählen Sie "slotDemoResourceGroup" aus.
Wählen Sie "slotAppService" aus.
Wählen Sie "Bereitstellungsoptionen" aus.
Wählen Sie auf der Registerkarte "Bereitstellungsoption " die Option " Quelle auswählen" und dann "GitHub" aus.
Nachdem Azure die Verbindung hergestellt hat und alle Optionen anzeigt, wählen Sie "Autorisierung" aus.
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.
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.
Wählen Sie "Ihre Organisation auswählen" und wählen Sie Ihre Organisation aus.
Wählen Sie "Projekt auswählen" aus.
Wählen Sie auf der Registerkarte Projekt auswählen das Projekt awesome-terraform aus.
Klicken Sie auf Verzweigung auswählen.
Wählen Sie auf der Registerkarte Branch auswählenMaster aus.
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.
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.
Wählen Sie im Hauptmenü des Azure-Portals "Ressourcengruppen" aus.
Wählen Sie "slotDemoResourceGroup" aus.
Wählen Sie "slotAppService " oder "slotAppServiceSlotOne" aus.
Wählen Sie auf der Übersichtsseite die URL aus.
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.
6. Tauschen Sie die beiden Bereitstellungsplätze aus.
Führen Sie die folgenden Schritte aus, um den Austausch der beiden Bereitstellungsplätze zu testen:
Wechseln Sie zur Browserregisterkarte, auf der slotAppService ausgeführt wird (die App mit der blauen Seite).
Kehren Sie auf einer separaten Registerkarte zum Azure-Portal zurück.
Öffnen Sie Cloud Shell.
Ändern Sie Verzeichnisse in das CloudDrive/Swap-Verzeichnis .
cd clouddrive/swap
Erstellen Sie in Cloud Shell eine Datei mit dem Namen
swap.tf
.code swap.tf
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" }
Speichern Sie die Datei (<STRG>S), und beenden Sie den Editor (<STRG>Q).
Terraform initialisieren.
terraform init
Erstellen Sie den Terraform-Plan.
terraform plan
Stellen Sie die Ressourcen bereit, die in der
swap.tf
Konfigurationsdatei definiert sind. (Bestätigen Sie die Aktion, indem Sie an der Eingabeaufforderung eingebenyes
.)terraform apply
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.
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