Schnellstart: Konfigurieren von Terraform mithilfe von Azure Cloud ShellQuickstart: Configure Terraform using Azure Cloud Shell

Mit Terraform können Sie eine Cloudinfrastruktur definieren, eine Vorschau der Cloudinfrastruktur anzeigen und die Cloudinfrastruktur bereitstellen.Terraform enables the definition, preview, and deployment of cloud infrastructure. Terraform ermöglicht das Erstellen von Konfigurationsdateien mit HCL-Syntax.Using Terraform, you create configuration files using HCL syntax. Mit der HCL-Syntax können Sie den Cloudanbieter (beispielsweise Azure) und die Elemente angeben, aus denen sich Ihre Cloudinfrastruktur zusammensetzt.The HCL syntax allows you to specify the cloud provider - such as Azure - and the elements that make up your cloud infrastructure. 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.After you create your configuration files, you create an execution plan that allows you to preview your infrastructure changes before they're deployed. Nach der Überprüfung der Änderungen wenden Sie den Ausführungsplan an, um die Infrastruktur bereitzustellen.Once you verify the changes, you apply the execution plan to deploy the infrastructure.

In diesem Artikel werden die ersten Schritte mit Terraform in Azure beschrieben.This article describes how to get started with Terraform on Azure.

In diesem Artikel werden folgende Vorgehensweisen behandelt:In this article, you learn how to:

  • Authentifizierung bei AzureAuthenticate to Azure
  • Erstellen eines Azure-Dienstprinzipals mit der Azure CLICreate an Azure service principal using the Azure CLI
  • Authentifizieren bei Azure mit einem DienstprinzipalAuthenticate to Azure using a service principal
  • Festlegen des aktuellen Azure-Abonnements für die Verwendung, wenn Sie über mehrere Abonnements verfügenSet the current Azure subscription - for use if you have multiple subscriptions
  • Erstellen einer grundlegenden Terraform-KonfigurationsdateiCreate a base Terraform configuration file
  • Erstellen und Anwenden eines Terraform-AusführungsplansCreate and apply a Terraform execution plan
  • Umkehren eines AusführungsplansReverse an execution plan

VoraussetzungenPrerequisites

  • Azure-Abonnement: Wenn Sie über kein Azure-Abonnement verfügen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.Azure subscription: If you don't have an Azure subscription, create a free account before you begin.

Konfigurieren Ihrer UmgebungConfigure your environment

  1. Navigieren Sie zum Azure-Portal.Browse to the Azure portal.

  2. Falls Sie noch nicht angemeldet sind, wird im Azure-Portal eine Liste verfügbarer Microsoft-Konten angezeigt.If you aren't already logged in, the Azure portal displays a list of available Microsoft accounts. Wählen Sie ein Microsoft-Konto aus, das mit mindestens einem aktiven Azure-Abonnement verknüpft ist, und geben Sie Ihre Anmeldeinformationen ein, um fortzufahren.Select a Microsoft account associated with one or more active Azure subscriptions and enter your credentials to continue.

  3. Öffnen Sie Cloud Shell.Open Cloud Shell.

    Zugreifen auf Cloud Shell

  4. Falls Sie Cloud Shell bislang noch nicht verwendet haben, konfigurieren Sie die Umgebungs- und Speichereinstellungen.If you haven't previously used Cloud Shell, configure the environment and storage settings. In diesem Artikel wird die Bash-Umgebung verwendet.This article uses the Bash environment.

Hinweise:Notes:

  • Für Cloud Shell wird automatisch die neueste Version von Terraform installiert.Cloud Shell automatically has the latest version of Terraform installed. Darüber hinaus werden von Terraform automatisch Informationen aus dem aktuellen Azure-Abonnement verwendet.Also, Terraform automatically uses information from the current Azure subscription. Daher ist keine Installation oder Konfiguration erforderlich.As a result, there's no installation or configuration required.

Authentifizierung bei AzureAuthenticate to Azure

Cloud Shell wird automatisch unter dem Microsoft-Konto authentifiziert, mit dem Sie sich beim Azure-Portal angemeldet haben.Cloud Shell is automatically authenticated under the Microsoft account you used to log into the Azure portal. Wenn Ihr Konto mehrere Azure-Abonnements enthält, können Sie zu einem anderen Abonnements wechseln.If your account has multiple Azure subscriptions, you can switch to one of your other subscriptions.

Terraform unterstützt verschiedene Optionen für die Authentifizierung bei Azure.Terraform supports several options for authenticating to Azure. In diesem Artikel werden die folgenden Methoden behandelt:The following techniques are covered in this article:

Authentifizierung über ein Microsoft-KontoAuthenticate via Microsoft account

Wenn Sie az login ohne Parameter ausführen, werden eine URL und ein Code angezeigt.Calling az login without any parameters displays a URL and a code. Navigieren Sie zu der URL, geben Sie den Code ein, und befolgen Sie die Anweisungen, um sich mit Ihrem Microsoft-Konto bei Azure anzumelden.Browse to the URL, enter the code, and follow the instructions to log into Azure using your Microsoft account. Sobald Sie angemeldet sind, kehren Sie zum Portal zurück.Once you're logged in, return to the portal.

az login

Hinweise:Notes:

  • Nach erfolgreicher Anmeldung zeigt az login eine Liste der Azure-Abonnements an, die mit dem angemeldeten Microsoft-Konto verknüpft sind.Upon successful login, az login displays a list of the Azure subscriptions associated with the logged-in Microsoft account.
  • Für die einzelnen verfügbaren Azure-Abonnements wird jeweils eine Liste mit Eigenschaften angezeigt.A list of properties displays for each available Azure subscription. Die Eigenschaft isDefault gibt das verwendete Azure-Abonnement an.The isDefault property identifies which Azure subscription you're using. Im Abschnitt Festlegen des aktuellen Azure-Abonnements erfahren Sie, wie Sie zu einem anderen Azure-Abonnement wechseln.To learn how to switch to another Azure subscription, see the section, Set the current Azure subscription.

Authentifizieren über den Azure-DienstprinzipalAuthenticate via Azure service principal

Erstellen Sie einen Azure-Dienstprinzipal: Wenn Sie sich mithilfe eines Dienstprinzipals bei einem Azure-Abonnement anmelden möchten, benötigen Sie zunächst Zugriff auf einen Dienstprinzipal.Create an Azure service principal: To log into an Azure subscription using a service principal, you first need access to a service principal. Wenn Sie bereits über einen Dienstprinzipal verfügen, können Sie diesen Teil des Abschnitts überspringen.If you already have a service principal, you can skip this part of the section.

Automatisierte Tools wie Terraform, die Azure-Dienste bereitstellen oder verwenden, sollten stets über eingeschränkte Berechtigungen verfügen.Automated tools that deploy or use Azure services - such as Terraform - should always have restricted permissions. Azure bietet Dienstprinzipale, um zu vermeiden, dass sich Anwendungen als Benutzer mit uneingeschränkten Berechtigungen anmelden.Instead of having applications log in as a fully privileged user, Azure offers service principals. Sollten Sie noch nicht über einen Dienstprinzipal für die Anmeldung verfügen,But, what if you don't have a service principal with which to log in? können Sie sich mit Ihren Benutzeranmeldeinformationen anmelden und anschließend einen Dienstprinzipal erstellen.In that scenario, you can log in using your user credentials and then create a service principal. Nach Erstellung des Dienstprinzipals können Sie dessen Informationen für zukünftige Anmeldungen verwenden.Once the service principal is created, you can use its information for future login attempts.

Beim Erstellen eines Dienstprinzipals mit der Azure CLI stehen zahlreiche Optionen zur Verfügung.There are many options when creating a service principal with the Azure CLI. In diesem Artikel wird mit az ad sp create-for-rbac ein Dienstprinzipal mit einer Rolle Mitwirkender erstellt.For this article, we'll create use az ad sp create-for-rbac to create a service principal with a Contributor role. Die Rolle Mitwirkender (die Standardeinstellung) verfügt über uneingeschränkte Berechtigungen für Lese- und Schreibvorgänge in einem Azure-Konto.The Contributor role (the default) has full permissions to read and write to an Azure account. Weitere Informationen zur rollenbasierten Zugriffssteuerung (Role-Based Access Control, RBAC) finden Sie unter Integrierte Integrierte Rollen.For more information about Role-Based Access Control (RBAC) and roles, see RBAC: Built-in roles.

Geben Sie den folgenden Befehl ein, und ersetzen Sie dabei <subscription_id> durch die ID des Abonnementkontos, das Sie verwenden möchten.Enter the following command, replacing <subscription_id> with the ID of the subscription account you want to use.

az ad sp create-for-rbac --role="Contributor" --scopes="/subscriptions/<subscription_id>"

Hinweise:Notes:

  • Nach dem erfolgreichen Abschluss werden von az ad sp create-for-rbac verschiedene Werte angezeigt.Upon successful completion, az ad sp create-for-rbac displays several values. Die Werte name, password und tenant werden im nächsten Schritt verwendet.The name, password, and tenant values are used in the next step.
  • Dieses Kennwort kann nicht erneut abgerufen werden.The password can't be retrieved if lost. Es empfiehlt sich daher, das Kennwort an einem sicheren Ort zu speichern.As such, you should store your password in a safe place. Sollten Sie Ihr Kennwort vergessen, müssen Sie die Anmeldeinformationen des Dienstprinzipals zurücksetzen.If you forget your password, you'll need to reset the service principal credentials.

Anmelden mit einem Azure-Dienstprinzipal: Ersetzen Sie im folgenden Aufruf von az login die Platzhalter durch Informationen Ihres Dienstprinzipals.Log in using an Azure service principal: In the following call to az login, replace the placeholders with the information from your service principal.

az login --service-principal -u <service_principal_name> -p "<service_principal_password>" --tenant "<service_principal_tenant>"

Festlegen des aktuellen Azure-AbonnementsSet the current Azure subscription

Ein Microsoft-Konto kann mehreren Azure-Abonnements zugeordnet sein.A Microsoft account can be associated with multiple Azure subscriptions. Die folgenden Schritte beschreiben, wie Sie zwischen Ihren Abonnements wechseln können:The following steps outline how you can switch between your subscriptions:

  1. Verwenden Sie az account show, um das aktuelle Azure-Abonnement anzuzeigen.To view the current Azure subscription, use az account show.

    az account show
    
  2. Wenn Sie Zugriff auf mehrere verfügbare Azure-Abonnements haben, verwenden Sie az account list, um eine Liste mit Abonnementnamen/-IDs anzuzeigen:If you have access to multiple available Azure subscriptions, use az account list to display a list of subscription name ID values:

    az account list --query "[].{name:name, subscriptionId:id}"
    
  3. Wenn Sie für die aktuelle Cloud Shell-Sitzung ein bestimmtes Azure-Abonnement verwenden möchten, verwenden Sie az account set.To use a specific Azure subscription for the current Cloud Shell session, use az account set. Ersetzen Sie den Platzhalter <subscription_id> durch die ID (oder den Namen) des gewünschten Abonnements:Replace the <subscription_id> placeholder with the ID (or name) of the subscription you want to use:

    az account set --subscription="<subscription_id>"
    

    Hinweise:Notes:

    • Die Ergebnisse des Wechsels zum angegebenen Azure-Abonnement werden durch den Aufruf von az account set nicht angezeigt.Calling az account set doesn't display the results of switching to the specified Azure subscription. Sie können sich jedoch mithilfe von az account show vergewissern, dass sich das aktuelle Azure-Abonnement geändert hat.However, you can use az account show to confirm that the current Azure subscription has changed.

Erstellen einer grundlegenden Terraform-KonfigurationsdateiCreate a base Terraform configuration file

Eine Terraform-Konfigurationsdatei beginnt mit der Angabe des Anbieters.A Terraform configuration file starts off with the specification of the provider. Bei Verwendung von Azure wird der Azure-Anbieter (azurerm) im Block provider angegeben.When using Azure, you'll specify the Azure provider (azurerm) in the provider block.

provider "azurerm" {
  version = "~>2.0"
  features {}
}

resource "azurerm_resource_group" "rg" {
  name = "<your_resource_group_name>"
  location = "<your_resource_group_location>"
}

# Your Terraform code goes here...

Hinweise:Notes:

  • Das Attribut version ist zwar optional, HashiCorp empfiehlt jedoch, eine bestimmte Version des Anbieters festzulegen.While the version attribute is optional, HashiCorp recommends pinning to a given version of the provider.
  • Bei Verwendung des Azure-Anbieters 1.x ist der Block features nicht zulässig.If you are using Azure provider 1.x, the features block is not allowed.
  • Bei Verwendung des Azure-Anbieters 2.x ist der Block features erforderlich.If you are using Azure provider 2.x, the features block is required.
  • Die Ressourcendeklaration von azurerm_resource_group hat zwei Argumente: name und location.The resource declaration of azurerm_resource_group has two arguments: name and location. Legen Sie die Platzhalter auf die entsprechenden Werte für Ihre Umgebung fest.Set the placeholders to the appropriate values for your environment.
  • Der lokale benannte Wert rg für die Ressourcengruppe wird in sämtlichen Anleitungen und Tutorials bei Verweisen auf die Ressourcengruppe verwendet.The local named value of rg for the resource group is used throughout the how-to and tutorial articles when referencing the resource group. Dies ist unabhängig vom Ressourcengruppennamen und bezieht sich nur auf den Variablennamen in Ihrem Code.This is independent of the resource group name and only refers to the variable name in your code. Wenn Sie diesen Wert in der Ressourcengruppendefinition ändern, müssen Sie ihn auch in dem Code ändern, von dem darauf verwiesen wird.If you change this value in the resource group definition, you'll need to also change it in the code that references it.

Erstellen und Anwenden eines Terraform-AusführungsplansCreate and apply a Terraform execution plan

In diesem Abschnitt erfahren Sie, wie Sie einen Ausführungsplan erstellen und auf Ihre Cloudinfrastruktur anwenden.In this section, you learn how to create an execution plan and apply it to your cloud infrastructure.

  1. Führen Sie zum Initialisieren der Terraform-Bereitstellung terraform init aus.To initialize the Terraform deployment, run terraform init. Mit diesem Befehl werden die Azure-Module heruntergeladen, die zum Erstellen einer Azure-Ressourcengruppe erforderlich sind.This command downloads the Azure modules required to create an Azure resource group.

    terraform init
    
  2. Führen Sie nach der Initialisierung terraform plan aus, um einen Ausführungsplan zu erstellen.After initialization, you create an execution plan by running terraform plan.

    terraform plan -out <terraform_plan>.tfplan
    

    Hinweise:Notes:

    • Durch den Befehl terraform plan wird ein Ausführungsplan erstellt, aber nicht ausgeführt.The terraform plan command creates an execution plan, but doesn't execute it. Stattdessen werden die Aktionen ermittelt, die erforderlich sind, um die in Ihren Konfigurationsdateien angegebene Konfiguration zu erstellen.Instead, it determines what actions are necessary to create the configuration specified in your configuration files. Mit diesem Muster können Sie überprüfen, ob der Ausführungsplan Ihren Erwartungen entspricht, bevor Sie Änderungen an den eigentlichen Ressourcen vornehmen.This pattern allows you to verify whether the execution plan matches your expectations before making any changes to actual resources.
    • Der optionale Parameter -out ermöglicht die Angabe einer Ausgabedatei für den Plan.The optional -out parameter allows you to specify an output file for the plan. Durch die Verwendung des Parameters -out wird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.Using the -out parameter ensures that the plan you reviewed is exactly what is applied.
    • Weitere Informationen zum Speichern von Ausführungsplänen und zur Sicherheit finden Sie im Abschnitt mit der Sicherheitswarnung.To read more about persisting execution plans and security, see the security warning section.
  3. Wenn Sie so weit sind, können Sie den Ausführungsplan durch Ausführen von terraform apply auf Ihre Cloudinfrastruktur anwenden.Once you're ready to apply the execution plan to your cloud infrastructure, you run terraform apply.

    terraform apply <terraform_plan>.tfplan
    

Umkehren eines Terraform-AusführungsplansReverse a Terraform execution plan

  1. Wenn Sie den Ausführungsplan umkehren (also rückgängig machen) möchten, führen Sie terraform plan aus, und geben Sie dabei das Flag destroy an:To reverse, or undo, the execution plan, you run terraform plan and specify the destroy flag as follows:

    terraform plan -destroy -out <terraform_plan>.destroy.tfplan
    

    Hinweise:Notes:

    • Durch den Befehl terraform plan wird ein Ausführungsplan erstellt, aber nicht ausgeführt.The terraform plan command creates an execution plan, but doesn't execute it. Stattdessen werden die Aktionen ermittelt, die erforderlich sind, um die in Ihren Konfigurationsdateien angegebene Konfiguration zu erstellen.Instead, it determines what actions are necessary to create the configuration specified in your configuration files. Mit diesem Muster können Sie überprüfen, ob der Ausführungsplan Ihren Erwartungen entspricht, bevor Sie Änderungen an den eigentlichen Ressourcen vornehmen.This pattern allows you to verify whether the execution plan matches your expectations before making any changes to actual resources.
    • Der optionale Parameter -out ermöglicht die Angabe einer Ausgabedatei für den Plan.The optional -out parameter allows you to specify an output file for the plan. Durch die Verwendung des Parameters -out wird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.Using the -out parameter ensures that the plan you reviewed is exactly what is applied.
    • Weitere Informationen zum Speichern von Ausführungsplänen und zur Sicherheit finden Sie im Abschnitt mit der Sicherheitswarnung.To read more about persisting execution plans and security, see the security warning section.
  2. Führen Sie zum Anwenden des Ausführungsplans den Befehl terraform apply aus.Run terraform apply to apply the execution plan.

    terraform apply <terraform_plan>.destroy.tfplan
    

ProblembehandlungTroubleshooting

Verwenden Sie für Terraform-spezifischen Support einen Supportkanal der HashiCorp-Community zu Terraform:For Terraform-specific support, use one of HashiCorp's community support channels to Terraform:

Nächste SchritteNext steps