Articles

Migrate State to Terraform Cloud

Posted by admin

Als aktueller Benutzer der Terraform-CLI sind Sie für die Verwaltung einer Statusdatei als Wahrheitsquelle für Ihre Cloud-Infrastruktur verantwortlich. Sie können Ihre lokale Statusdatei in Terraform Cloud migrieren, ohne Ihre vorhandene Infrastruktur zu unterbrechen oder neu zu erstellen.

Warnung: Wenn Sie eine Statusdatei mithilfe der Schritte in diesem Lernprogramm in Terraform Cloud hochladen, verwenden Sie immer dieselbe Version der Terraform-CLI, die Sie zum Erstellen der Ressourcen verwendet haben. Die Verwendung einer neueren Version von Terraform kann die Statusdatei aktualisieren und zu einer Beschädigung der Statusdatei führen.

“ Voraussetzungen

In diesem Lernprogramm wird davon ausgegangen, dass Sie über Folgendes verfügen:

  • Die Terraform CLI lokal installiert
  • Ein Terraform Cloud-Konto

Hinweis: Da das remote -Backend in älteren Versionen von Terraform nicht unterstützt wurde, müssen Sie 0.11.13 oder höher verwenden, um Ihren Status in Terraform Cloud zu migrieren. Die Snippets in diesem Tutorial verwenden die Syntax 0.12.

Wenn Terraform nicht lokal installiert ist, können Sie dieses Lernprogramm in einem interaktiven Labor über Ihren Webbrowser ausführen. Starten Sie es hier.

“ Create state

Beginnen Sie mit dem Klonen dieses GitHub-Repositorys.

$ git clone https://github.com/hashicorp/learn-state-migration

Kopieren Sie

Wechseln Sie als nächstes in das Verzeichnis.

$ cd learn-state-migration

Kopieren Sie

Überprüfen Sie die main.tf -Datei im Arbeitsverzeichnis, um einen Überblick über die Ressourcen zu erhalten, die Sie erstellen möchten. Diese Konfiguration verwendet die Ressource random_pet, um einen zufälligen Kosenamen mit einer bestimmten Anzahl von Wörtern zu generieren und auszugeben. Die Länge des Namens wird durch den Wert der Variablen name_length bestimmt, die standardmäßig 3 ist.

In einer realen Konfiguration können zusätzliche Variablen wie Cloud Platform-Anmeldeinformationen in einer .tfvars -Datei definiert sein. Wie Sie diese Werte im Terraform Cloud-Arbeitsbereich festlegen, erfahren Sie später in diesem Lernprogramm, nachdem Sie die Statusdatei migriert haben.

## Terraform configurationterraform { required_providers { random = { source = "hashicorp/random" version = "3.0.1" } } required_version = "~> 0.14"}variable "name_length" { description = "The number of words in the pet name" default = "3"}resource "random_pet" "pet_name" { length = var.name_length separator = "-"}output "pet_name" { value = random_pet.pet_name.id}

Kopieren

Initialisieren Sie das Verzeichnis.

$ terraform init

Kopieren Sie

Nachdem Terraform initialisiert wurde, wenden Sie die Konfiguration an und genehmigen Sie den Lauf, indem Sie an der Eingabeaufforderung „Ja“ eingeben.

$ terraform apply

Copy

Terraform gibt einen zufällig generierten Kosenamen mit drei Wörtern aus.

„Remote-Backend einrichten

Nachdem Sie eine lokale Statusdatei haben, müssen Sie in Ihrer Konfiguration einen Backend-Codeblock erstellen. Backends teilen Terraform mit, wo die Statusdatei geladen und gespeichert werden soll.

Terraform verwendet standardmäßig das lokale Backend, wenn Sie in Ihrer Konfiguration keinen Backend-Codeblock explizit definieren. Das lokale Backend speichert Ihren Status als terraform.tfstate -Datei in dem Verzeichnis, in dem Sie terraform apply ausführen. Um Statusdateien in Terraform Cloud zu migrieren, definieren Sie in Ihrer Konfiguration ein remote -Backend, indem Sie am Anfang Ihrer main.tf -Datei einen neuen Codeblock hinzufügen.

terraform { required_providers { random = { source = "hashicorp/random" version = "3.0.1" } } required_version = "~> 0.14" backend "remote" { hostname = "app.terraform.io" organization = "<YOUR-ORG-NAME>" workspaces { name = "state-migration" } }}

Kopieren

Ersetzen Sie die Attributwerte Organisation und Arbeitsbereiche durch den Namen Ihrer Terraform Cloud-Organisation und den gewünschten Arbeitsbereichsnamen. Während die in der Backend-Zeilengruppe definierte Organisation bereits vorhanden sein muss, muss der Arbeitsbereich nicht vorhanden sein. Wenn Sie einen bereits vorhandenen Arbeitsbereich verwenden, darf der Arbeitsbereich keine vorhandenen Zustände aufweisen.

Hinweis: Wenn Sie mit der Ausführung von Terraform über die CLI vertraut sind, haben Sie möglicherweise Terraform-Arbeitsbereiche verwendet. Terraform Cloud-Arbeitsbereiche verhalten sich anders als Terraform CLI-Arbeitsbereiche. Terraform CLI-Workspaces ermöglichen das Vorhandensein mehrerer Statusdateien in einem einzigen Verzeichnis, sodass Sie eine Konfiguration für mehrere Umgebungen verwenden können. Terraform Cloud Workspaces enthalten alles, was zur Verwaltung einer bestimmten Infrastruktur erforderlich ist, und funktionieren wie separate Arbeitsverzeichnisse.

“ Authentifizieren mit Terraform Cloud

Nachdem Sie Ihr Backend definiert haben, müssen Sie sich mit Terraform Cloud authentifizieren, um mit der Initialisierung fortzufahren. Um sich bei Terraform Cloud zu authentifizieren, führen Sie den Unterbefehl terraform login aus und folgen Sie den Anweisungen, um sich anzumelden.

Hinweis: Wenn Sie eine Version von Terraform vor 0.12.21 verwenden, ist der Befehl terraform login nicht verfügbar. Richten Sie stattdessen eine CLI-Konfigurationsdatei zur Authentifizierung ein.

$ terraform loginTerraform will request an API token for app.terraform.io using your browser.If login is successful, Terraform will store the token in plain text inthe following file for use by subsequent commands: /Users/username/.terraform.d/credentials.tfrc.jsonDo you want to proceed? Only 'yes' will be accepted to confirm. Enter a value:

Kopieren

Antworten Sie auf die Bestätigungsaufforderung mit einem yes.

Detaillierte Anweisungen zum Anmelden finden Sie im Tutorial Anmelden.

„Migrieren der Statusdatei

Sobald Sie das remote -Backend authentifiziert haben, können Sie Ihre lokale Statusdatei in Terraform Cloud migrieren. Um mit der Migration zu beginnen, initialisieren Sie sie erneut. Dadurch erkennt Terraform Ihre geänderte Backend-Konfiguration.

$ terraform initInitializing the backend...Do you want to copy existing state to the new backend? Pre-existing state was found while migrating the previous "local" backend to the newly configured "remote" backend. No existing state was found in the newly configured "remote" backend. Do you want to copy this state to the new "remote" backend? Enter "yes" to copy and "no" to start with an empty state. Enter a value:

Copy

Während der Neuinitialisierung zeigt Terraform eine Eingabeaufforderung an, die besagt, dass die Statusdatei in das neue Backend kopiert wird. Geben Sie yes ein und Terraform migriert den Status von Ihrem lokalen Computer in Terraform Cloud.

„Konfigurieren des Terraform Cloud-Arbeitsbereichs

Melden Sie sich nach der Migration Ihres Status zu Terraform Cloud bei der Terraform Cloud-Webbenutzeroberfläche an, suchen Sie Ihren Arbeitsbereichsnamen, wie in Ihrer Backend-Konfiguration definiert, und klicken Sie darauf. Navigieren Sie zur Registerkarte „Status“ des Arbeitsbereichs und sehen Sie Ihre erste Aktion im Arbeitsbereich.

Eine Ansicht der Registerkarte "Status" im Terraform Cloud-Arbeitsbereich

Denken Sie daran, dass Ihre Konfiguration eine Variable enthält, die Sie dem newworkspace hinzufügen müssen. Klicken Sie im Arbeitsbereich auf die Registerkarte „Variablen“ und dann auf „Variable hinzufügen“.Geben Sie den Namen der Variablen name_length als Schlüssel ein. Geben Sie dann einen neuen Wert 5 ein und speichern Sie die Variable.

Die Registerkarte Variablen des Terraform Cloud-Arbeitsbereichs mit einer hinzugefügten Variablen

Fügen Sie für reale Konfigurationen auch Cloud Platform-Anmeldeinformationen und andere Konfigurationsvariablen zum Arbeitsbereich hinzu.

„Starten Sie eine Ausführung im neuen Arbeitsbereich

Nachdem Sie überprüft haben, dass der Status in den Terraform Cloud-Arbeitsbereich migriert wurde, entfernen Sie die lokale Statusdatei.

$ rm terraform.tfstate

Kopieren

Einen neuen Lauf anwenden.

$ terraform apply

Kopieren

Terraform streamt Protokolle aus der Terraform Cloud und stellt einen Link zur Ausführung in der Terraform Cloud-Benutzeroberfläche bereit. Sie legen einen neuen Wert für die Variable name_length fest, sodass die Ressource durch einen Wert ersetzt wird, der den neuen Parametern entspricht.

Bild einer Laufwartebestätigung, das Protokoll besagt, dass die Ressource ersetzt wird

“ Nächste Schritte

Zerstören Sie die Ressourcen, die Sie für dieses Lernprogramm erstellt haben, indem Sie zuerst im Terraform Cloud-Arbeitsbereich auf die Option „Einstellungen“ klicken, „Zerstörung und Löschung“ auswählen, sicherstellen, dass das Kontrollkästchen „Zerstörungspläne zulassen“ aktiviert ist, und dannKlicken Sie auf „Plan in der Warteschlange zerstören“.

Nachdem die Ressourcen zerstört wurden, kehren Sie zur Seite „Zerstörung und Löschung“ zurück und klicken Sie auf „Aus Terraform Cloud löschen“, um den Arbeitsbereich zu löschen.

In diesem Lernprogramm haben Sie eine Statusdatei von Ihrem lokalen Computer in einen Terraform Cloud-Arbeitsbereich migriert. Informationen zum Migrieren der Statusdateien mehrerer lokaler Arbeitsbereiche oder zum Einschränken des Arbeitsbereichszugriffs auf ein bestimmtes Team finden Sie in der folgenden Dokumentation.

  • Status von mehreren lokalen Arbeitsbereichen migrieren
  • Arbeitsbereichszugriff verwalten

Wenn Sie über eine große Anzahl von Statusdateien verfügen, die Sie in Terraform Cloud migrieren möchten, sollten Sie die Terraform Cloud-API verwenden. Informationen zum Hochladen von Statusversionen mithilfe der API finden Sie in der Dokumentation zur Statusversion-API.

Related Post

Leave A Comment