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.
Zum Verständnis der Konformität in Azure müssen Sie zunächst wissen, wie Sie den Status Ihrer Ressourcen ermitteln. Diese Schnellstartanleitung führt Sie schrittweise durch die Erstellung einer Richtlinienzuweisung zur Identifizierung von virtuellen Computern, die keine verwalteten Datenträger verwenden.
Beim Zuweisen einer integrierten Richtlinien- oder Initiativendefinition ist der Verweis auf eine Version optional. Richtlinienzuweisungen von integrierten Definitionen entsprechen standardmäßig der aktuellen Version und erben automatisch Nebenversionsänderungen, sofern nicht anders angegeben.
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.
In diesem Artikel erfahren Sie, wie Sie:
- Rufen Sie die aktuelle Azure-Clientkonfiguration ab.
- Erstellen Sie eine Azure-Ressourcengruppe mit dem generierten zufälligen Namen.
- Erstellen einer Abonnementrichtlinienzuweisung zum Identifizieren virtueller Computer, die keine verwalteten Datenträger verwenden
Voraussetzungen
Erstellen Sie ein Azure-Konto mit einem aktiven Abonnement. Sie können ein Konto kostenlos erstellen.
Implementieren des Terraform-Codes
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. Sehen Sie sich mehr Artikel und Beispielcode an, die zeigen, wie man Terraform zur Verwaltung von Azure-Ressourcen verwendet
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
providers.tf, und fügen Sie den folgenden Code ein:terraform { required_providers { azurerm = { source = "hashicorp/azurerm" version = "~>4.0" } random = { source = "hashicorp/random" version = "~>3.0" } } } provider "azurerm" { features {} }Erstellen Sie eine Datei namens
main.tf, und fügen Sie den folgenden Code ein:# Create a random pet name to ensure unique resource group name resource "random_pet" "rg_name" { prefix = var.resource_group_name_prefix } # Create a resource group resource "azurerm_resource_group" "example" { ___location = var.resource_group_location name = random_pet.rg_name.id } # Get the current subscription data "azurerm_subscription" "current" {} # Create a subscription policy assignment resource "azurerm_subscription_policy_assignment" "auditvms" { name = "audit-vm-manageddisks" subscription_id = coalesce(var.scope, "/subscriptions/${data.azurerm_subscription.current.subscription_id}") policy_definition_id = "/providers/Microsoft.Authorization/policyDefinitions/06a78e20-9358-41c9-923c-fb736d382a4d" description = "Shows all virtual machines not using managed disks" display_name = "Audit VMs without managed disks assignment" }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 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 ID so name is unique in your Azure subscription." } variable "scope" { type = string default = "" description = "Scope of the policy assignment." }Erstellen Sie eine Datei namens
outputs.tf, und fügen Sie den folgenden Code ein:output "resource_group_name" { value = azurerm_resource_group.example.name } output "assignment_id" { value = azurerm_subscription_policy_assignment.auditvms.id } output "subscription_id" { value = data.azurerm_subscription.current.subscription_id }
Bereich angeben
Ein Bereich bestimmt, für welche Ressourcen oder Ressourcengruppe die Richtlinienzuweisung erzwungen wird. Ein solcher Bereich kann eine Verwaltungsgruppe oder auch nur eine einzelne Ressource sein. Um einen der folgenden Bereiche zu verwenden, aktualisieren Sie die scope Variable in der variables.tf Datei. Wenn Sie den scope Variablenwert leer lassen, wird der Bereich Abonnement verwendet.
- Abonnement:
/subscriptions/<subscription_id> - Ressourcengruppe:
/subscriptions/<subscription_id>/resourceGroups/<resource_group_name> - Ressource:
/subscriptions/<subscription_id>/resourceGroups/<resource_group_name>/providers/<resource_provider_namespace>/[{parentResourcePath}/]
Initialisieren Sie Terraform
Von Bedeutung
Wenn Sie den 4.x azurerm-Anbieter verwenden, müssen Sie explizit die Azure-Abonnement-ID angeben , die bei Azure authentifiziert werden soll, bevor Sie die Terraform-Befehle ausführen.
Eine Möglichkeit, die Azure-Abonnement-ID anzugeben, ohne sie in den providers Block einzufügen, besteht darin, die Abonnement-ID in einer Umgebungsvariable namens ARM_SUBSCRIPTION_IDanzugeben.
Weitere Informationen finden Sie in der Referenzdokumentation zu Azure-Anbietern.
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
Die wichtigsten 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
Die wichtigsten 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.
Anwenden eines Terraform-Ausführungsplans
Führen Sie terraform apply aus, um den Ausführungsplan auf Ihre Cloudinfrastruktur anzuwenden.
terraform apply main.tfplan
Die wichtigsten 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
Holen Sie sich die von
_assignment\_id_zurückgegebeneterraform apply.Führen Sie den folgenden Befehl aus, um die Ressourcen anzuzeigen, die unter Ihrer neuen Richtlinienzuweisung nicht konform sind.
armclient post "/subscriptions/<subscription_id>/providers/Microsoft.PolicyInsights/policyStates/latest/queryResults?api-version=2019-10-01&$filter=IsCompliant eq false and PolicyAssignmentId eq '<policyAssignmentID>'&$apply=groupby((ResourceId))" > <json file to direct the output with the resource IDs into>Die Ergebnisse sind vergleichbar mit dem, was üblicherweise in der Azure-Portalansicht unter Nicht konforme Ressourcen zu sehen ist.
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.tfplanDie wichtigsten 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
Lösen Sie allgemeine Probleme bei der Verwendung von Terraform in Azure.