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. Mithilfe von Terraform erstellen Sie Konfigurationsdateien mit der 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.
Verwenden Sie azapi_resource_action als verwaltete Terraform-Ressource, um imperative, zustandsverändernde Vorgänge für Azure Ressourcen auszuführen. In diesem Beispiel erstellen Sie ein Azure Speicherkonto und drehen dann die Zugriffstasten.
azapi_resource_action hat zwei Verwendungsformulare:
-
Ressource: Führt während der
terraform applyeine Zustandsänderung durch. Terraform verfolgt die Aktion im Zustand und kann sie optionalterraform destroyumkehren. - Datenquelle: Führt während der Planung einen Lesevorgang aus. Für dieses Szenario finden Sie Informationen in der Schnellstartanleitung zur Datenquelle für Ressourcenaktionen.
Verwenden Sie das Ressourcenformular, wenn Terraform einen Azure Vorgang ausführen muss, der nicht auf einem standardmäßigen Erstellungs-/Lese-/Aktualisierungs-/Löschlebenszyklus basiert, z. B. Das Drehen von Anmeldeinformationen, das Starten oder Beenden eines virtuellen Computers oder das Auslösen eines Failovers.
- Erstellen eines Speicherkontos mit dem AzureRM-Anbieter
- Drehen des Zugriffsschlüssels für das Speicherkonto mit
azapi_resource_action
Voraussetzungen
- 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:
Wenn Sie sich mit einem Microsoft-Konto beim Azure-Portal anmelden, wird das Azure-Standardabonnement für dieses Konto verwendet.
Terraform authentifiziert sich automatisch mithilfe von Informationen aus dem Azure-Standardabonnement.
Führen Sie az account show aus , um das aktuelle Microsoft-Konto und das Azure-Abonnement zu überprüfen.
az account show
Alle Änderungen, die Sie über Terraform vornehmen, befinden sich im angezeigten Azure-Abonnement. Wenn Sie dies wünschen, überspringen Sie den Rest dieses Artikels.
Implementieren des Terraform-Codes
Erstellen Sie ein Verzeichnis, in dem der Terraform-Beispielcode getestet werden soll, und legen Sie es als aktuelles Verzeichnis fest.
Erstellen Sie eine Datei mit dem Namen
providers.tf, und fügen Sie den folgenden Code ein:terraform { required_providers { azapi = { source = "Azure/azapi" version = "~> 2.0" } azurerm = { source = "hashicorp/azurerm" version = "~> 4.0" } random = { source = "hashicorp/random" version = "~> 3.0" } } } provider "azurerm" { features {} } provider "azapi" {}Erstellen Sie eine Datei mit dem Namen
variables.tf, und fügen Sie den folgenden Code ein:variable "resource_group_location" { type = string default = "eastus" description = "Location of the resource group." } variable "resource_group_name_prefix" { type = string default = "rg" description = "Prefix of the resource group name that's combined with a random value to create a unique name." } variable "storage_account_name_prefix" { type = string default = "st" description = "Prefix of the storage account name that's combined with a random value to create a unique name." }Erstellen Sie eine Datei mit dem Namen
main.tf, und fügen Sie den folgenden Code ein:resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } resource "random_string" "storage_suffix" { length = 8 upper = false special = false } resource "azurerm_resource_group" "example" { location = var.resource_group_location name = random_pet.rg_name.id } resource "azurerm_storage_account" "example" { name = "${var.storage_account_name_prefix}${random_string.storage_suffix.result}" resource_group_name = azurerm_resource_group.example.name location = azurerm_resource_group.example.location account_tier = "Standard" account_replication_type = "LRS" } resource "azapi_resource_action" "regenerate_key" { type = "Microsoft.Storage/storageAccounts@2023-01-01" resource_id = azurerm_storage_account.example.id action = "regenerateKey" method = "POST" body = { keyName = "key1" } }Wichtige Punkte zur Verwendung
azapi_resource_actionals Ressource:- Das
actionFeld gibt den auszuführenden ARM-Vorgang an. Verwenden SieregenerateKeyfür die Drehung des Speicherkontoschlüssels . - Das
methodFeld gibt die HTTP-Methode an. Die meisten imperativen Aktionen verwendenPOST. - Das
bodyAttribut übergibt Daten an die Aktion. Geben Sie für die Schlüsselregenerierung an, welcher Schlüssel (key1oderkey2) gedreht werden soll. - Die Aktion wird während
terraform applyausgeführt und im Terraform-Zustand nachverfolgt.
- Das
Erstellen Sie eine Datei mit dem Namen
outputs.tf, und fügen Sie den folgenden Code ein:output "resource_group_name" { value = azurerm_resource_group.example.name } output "storage_account_name" { value = azurerm_storage_account.example.name }
Führen Sie terraform init aus, um die Terraform-Bereitstellung zu initialisieren. Dieser Befehl lädt den Azure-Anbieter herunter, 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.
Führen Sie terraform plan aus, um einen Ausführungsplan zu erstellen.
terraform plan -out main.tfplan
Wichtige Punkte:
- Der Befehl
terraform planerstellt einen Ausführungsplan, führt ihn aber nicht aus. Stattdessen wird bestimmt, welche Aktionen 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 tatsächlichen Ressourcen vornehmen. - Mit dem optionalen
-out-Parameter können Sie eine Ausgabedatei für den Plan angeben. Durch die Verwendung des Parameters-outwird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.
Führen Sie terraform apply 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
Nach terraform apply Abschluss des Vorgangs wurde der Speicherkontoschlüssel gedreht. Sie können die Schlüsseldrehung überprüfen, indem Sie die Speicherkontoschlüssel in Azure überprüfen.
Führen Sie az storage account keys list aus, um die Speicherkontoschlüssel anzuzeigen.
```azurecli
az storage account keys list \
--resource-group <resource_group_name> \
--account-name <storage_account_name>
```
The `value` field shows the current key.
Beispiele für andere Ressourcenaktionen
Die Ressource azapi_resource_action funktioniert mit vielen Azure Vorgängen. Hier sind allgemeine Beispiele:
-
Virtual Machines:
deallocate,start,restart,powerOff,reimage -
Key Vaults:
purge(für vorläufig gelöschte Tresore),rotate(für verwaltete Schlüssel) -
App-Dienste:
swap(für Bereitstellungs-Slots),restart -
Datenbanken:
failover,promote - Compute resources: Jeder Vorgang, der von der Azure REST-API verfügbar gemacht wird, die den Zustand ändert, ohne eine Ressource zu erstellen oder zu zerstören
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 das Flag
destroyan.terraform plan -destroy -out main.destroy.tfplanWichtige Punkte:
- Der Befehl
terraform planerstellt einen Ausführungsplan, führt ihn aber nicht aus. Stattdessen wird bestimmt, welche Aktionen 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 tatsächlichen Ressourcen vornehmen. - Mit dem optionalen
-out-Parameter können Sie eine Ausgabedatei für den Plan angeben. Durch die Verwendung des Parameters-outwird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.
- Der Befehl
Führen Sie den Befehl terraform apply aus, um den Ausführungsplan anzuwenden.
terraform apply main.destroy.tfplan
Problembehandlung von Terraform auf Azure
Behebung häufiger Probleme bei der Verwendung von Terraform in Azure