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.
Führen Sie mithilfe von Azure Container Instances serverlose Docker-Container schnell und einfach in Azure aus. Sie stellen eine Anwendung bedarfsgesteuert in einer Containerinstanz bereit, wenn Sie keine vollständige Containerorchestrierungsplattform wie Azure Kubernetes Service benötigen. In diesem Artikel verwenden Sie Terraform , um einen isolierten Docker-Container bereitzustellen und seine Webanwendung mit einer öffentlichen IP-Adresse verfügbar zu machen.
Terraform ermöglicht die Definition, Vorschau und Bereitstellung der Cloudinfrastruktur. Mithilfe von Terraform erstellen Sie Konfigurationsdateien mit der HCL-Syntax. Mit der HCL-Syntax können Sie den Cloudanbieter (beispielsweise Azure) und die Elemente angeben, aus denen sich Ihre Cloudinfrastruktur zusammensetzt. Nachdem Sie Ihre Konfigurationsdateien erstellt haben, erstellen Sie einen Ausführungsplan , mit dem Sie eine Vorschau ihrer Infrastrukturänderungen anzeigen können, bevor sie bereitgestellt werden. Nach der Überprüfung der Änderungen wenden Sie den Ausführungsplan an, um die Infrastruktur bereitzustellen.
In diesem Artikel werden folgende Vorgehensweisen behandelt:
- Erstellen eines zufälligen Werts für den Namen der Azure-Ressourcengruppe mithilfe von random_pet
- Erstellen einer Azure-Ressourcengruppe mithilfe von azurerm_resource_group
- Erstellen eines Zufallswerts für den Containernamen mithilfe von random_string
- Erstellen einer Azure-Containergruppe mithilfe von azurerm_container_group
Voraussetzungen
Implementieren des Terraform-Codes
Hinweis
Der Beispielcode für diesen Artikel befindet sich im Azure Terraform GitHub-Repository. Sie können die Protokolldatei anzeigen, die die Testergebnisse aus den aktuellen und früheren Versionen von Terraform enthält.
Erstellen Sie ein Verzeichnis, in dem der Terraform-Beispielcode getestet und ausgeführt werden soll, und legen Sie es als aktuelles Verzeichnis fest.
Erstellen Sie eine Datei namens
main.tf, und fügen Sie den folgenden Code ein:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "azurerm_resource_group" "rg" { name = random_pet.rg_name.id ___location = var.resource_group_location } resource "random_string" "container_name" { length = 25 lower = true upper = false special = false } resource "azurerm_container_group" "container" { name = "${var.container_group_name_prefix}-${random_string.container_name.result}" ___location = azurerm_resource_group.rg.___location resource_group_name = azurerm_resource_group.rg.name ip_address_type = "Public" os_type = "Linux" restart_policy = var.restart_policy zones = var.zone != "" ? [ var.zone ] : null container { name = "${var.container_name_prefix}-${random_string.container_name.result}" image = var.image cpu = var.cpu_cores memory = var.memory_in_gb ports { port = var.port protocol = "TCP" } } }Erstellen Sie eine Datei namens
outputs.tf, und fügen Sie den folgenden Code ein:output "container_ipv4_address" { value = azurerm_container_group.container.ip_address }Erstellen Sie eine Datei namens
providers.tf, und fügen Sie den folgenden Code ein:terraform { required_version = ">=1.0" required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>3.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Erstellen Sie eine Datei namens
variables.tf, und fügen Sie den folgenden Code ein:variable "resource_group_location" { type = string default = "eastus" description = "Location for all resources." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random value so name is unique in your Azure subscription." } variable "container_group_name_prefix" { type = string description = "Prefix of the container group name that's combined with a random value so name is unique in your Azure subscription." default = "acigroup" } variable "container_name_prefix" { type = string description = "Prefix of the container name that's combined with a random value so name is unique in your Azure subscription." default = "aci" } variable "image" { type = string description = "Container image to deploy. Should be of the form repoName/imagename:tag for images stored in public Docker Hub, or a fully qualified URI for other registries. Images from private registries require additional registry credentials." default = "mcr.microsoft.com/azuredocs/aci-helloworld" } variable "port" { type = number description = "Port to open on the container and the public IP address." default = 80 } variable "cpu_cores" { type = number description = "The number of CPU cores to allocate to the container." default = 1 } variable "memory_in_gb" { type = number description = "The amount of memory to allocate to the container in gigabytes." default = 2 } variable "restart_policy" { type = string description = "The behavior of Azure runtime if container has stopped." default = "Always" validation { condition = contains(["Always", "Never", "OnFailure"], var.restart_policy) error_message = "The restart_policy must be one of the following: Always, Never, OnFailure." } } variable "zone" { type = string description = "The availability zone to deploy the container group into. If not specified, the container group is nonzonal and might be deployed into any zone." default = "" }Legen Sie den Wert der Variablen auf die logische Verfügbarkeitszone fest, auf die Sie bereitstellen möchten, um die
zone.Von Bedeutung
Zonencontainergruppen sind nur in Regionen verfügbar, die Verfügbarkeitszonen unterstützen. Informationen dazu, ob Ihre Region Verfügbarkeitszonen unterstützt, finden Sie unter Azure Regions List.
Initialisieren von Terraform
Führen Sie terraform init aus, um die Terraform-Bereitstellung zu initialisieren. Mit diesem Befehl wird der Azure-Anbieter heruntergeladen, der zum Verwalten Ihrer Azure-Ressourcen erforderlich ist.
terraform init -upgrade
Wichtige Punkte:
- Der Parameter
-upgradeaktualisiert die erforderlichen Anbieter-Plug-Ins auf die neueste Version, die den Versionseinschränkungen der Konfiguration entspricht.
Erstellen eines Terraform-Ausführungsplans
Führen Sie terraform Plan aus, um einen Ausführungsplan zu erstellen.
terraform plan -out main.tfplan
Wichtige Punkte:
- Durch den Befehl
terraform planwird ein Ausführungsplan erstellt, aber nicht ausgeführt. Stattdessen werden die Aktionen ermittelt, die erforderlich sind, um die in Ihren Konfigurationsdateien angegebene Konfiguration zu erstellen. Mit diesem Muster können Sie überprüfen, ob der Ausführungsplan Ihren Erwartungen entspricht, bevor Sie Änderungen an den eigentlichen Ressourcen vornehmen. - Der optionale Parameter
-outermöglicht die Angabe einer Ausgabedatei für den Plan. Durch die Verwendung des Parameters-outwird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.
Anwenden eines Terraform-Ausführungsplans
Führen Sie terraform aus , um den Ausführungsplan auf Ihre Cloudinfrastruktur anzuwenden.
terraform apply main.tfplan
Wichtige Punkte:
- Der Beispielbefehl
terraform applysetzt voraus, dass Sie zuvorterraform plan -out main.tfplanausgeführt haben. - Wenn Sie einen anderen Dateinamen für den Parameter
-outangegeben haben, verwenden Sie denselben Dateinamen im Aufruf vonterraform apply. - Wenn Sie den Parameter
-outnicht verwendet haben, rufen Sieterraform applyohne Parameter auf.
Überprüfen der Ergebnisse
Wenn Sie den Ausführungsplan anwenden, gibt Terraform die öffentliche IP-Adresse aus. Führen Sie die Terraform-Ausgabe aus, um die IP-Adresse erneut anzuzeigen.
terraform output -raw container_ipv4_addressGeben Sie die öffentliche IP-Adresse aus dem Beispiel in die Adressleiste Ihres Browsers ein.
Bereinigen von Ressourcen
Wenn Sie die über Terraform erstellten Ressourcen nicht mehr benötigen, führen Sie die folgenden Schritte aus:
Führen Sie terraform plan aus, und geben Sie die
destroyKennzeichnung an.terraform plan -destroy -out main.destroy.tfplanWichtige Punkte:
- Durch den Befehl
terraform planwird ein Ausführungsplan erstellt, aber nicht ausgeführt. Stattdessen werden die Aktionen ermittelt, die erforderlich sind, um die in Ihren Konfigurationsdateien angegebene Konfiguration zu erstellen. Mit diesem Muster können Sie überprüfen, ob der Ausführungsplan Ihren Erwartungen entspricht, bevor Sie Änderungen an den eigentlichen Ressourcen vornehmen. - Der optionale Parameter
-outermöglicht die Angabe einer Ausgabedatei für den Plan. Durch die Verwendung des Parameters-outwird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.
- Durch den Befehl
Führen Sie terraform apply aus, um den Ausführungsplan anzuwenden.
terraform apply main.destroy.tfplan
Problembehandlung für Terraform in Azure
Behandeln häufiger Probleme bei der Verwendung von Terraform in Azure