Articles

Overfør tilstand til Terraform Cloud

Posted by admin

som en nuværende bruger af Terraform CLI er du ansvarlig for at opretholde en tilstandsfil som en sandhedskilde for din skyinfrastruktur. Du kan migrere din lokale stat fil til Terraform Cloud uden at afbryde eller genskabe din eksisterende infrastruktur.

advarsel: når du uploader en tilstandsfil til Terraform Cloud ved hjælp af trinnene i denne vejledning, skal du altid bruge den samme version af Terraform CLI, som du brugte til at oprette ressourcerne. Ved hjælp af en nyere version af Terraform kan opdatere staten fil og forårsage tilstand fil korruption.

“forudsætninger

denne tutorial antager, at du har følgende:

  • Terraform CLI installeret lokalt
  • en Terraform Cloud-konto

Bemærk: da remote backend ikke blev understøttet i ældre version af Terraform, skal du bruge 0.11.13 eller højere for at migrere din tilstand til Terraform Cloud. Uddragene i denne tutorial bruger 0.12 syntaks.

hvis du ikke har Terraform installeret lokalt, kan du gennemføre denne tutorial i et interaktivt laboratorium. Start det her.

“opret tilstand

Start med at klone dette GitHub-arkiv.

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

Kopier

skift derefter til mappen.

$ cd learn-state-migration

Kopier

gennemgå main.tf filen i arbejdsmappen for at få et overblik over de ressourcer, du skal oprette. Denne konfiguration bruger random_pet – ressourcen til at generere og udsende et tilfældigt kæledyrsnavn med et givet antal ord. Længden af navnet bestemmes af værdien af name_length variablen, som standard 3.

i en konfiguration i den virkelige verden kan du have yderligere variabler som f.eks cloud platform legitimationsoplysninger defineret i en .tfvars fil. Vi dækker, hvordan du indstiller disse værdier i Terraform Cloud-arbejdsområdet senere i denne vejledning, efter at du har migreret tilstandsfilen.

## 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}

Kopier

Initialiser mappen.

$ terraform init

Kopier

når Terraform initialiserer, skal du anvende konfigurationen og godkende kørslen ved at skrive “ja” ved prompten.

$ terraform apply

kopi

Terraform udsender et tre ord tilfældigt genereret kæledyrsnavn.

“Indstil remote backend

nu hvor du har en lokal tilstandsfil, skal du oprette en backend-kodeblok i din konfiguration. Backends fortælle Terraform hvor at indlæse og gemme sin tilstand fil.

Terraform bruger som standard den lokale backend, hvis du ikke eksplicit definerer en backend-kodeblok i din konfiguration. Den lokale backend gemmer din tilstand som en terraform.tfstate fil i den mappe, hvor du kører terraform apply. For at migrere tilstandsfiler til Terraform Cloud skal du definere en remote backend i din konfiguration ved at tilføje en ny kodeblok til begyndelsen af din main.tf fil.

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" } }}

Kopier

Erstat attributværdierne organisation og arbejdsområder med navnet på din Terraform Cloud-organisation og det ønskede arbejdsområdenavn. Mens den organisation, der er defineret i backend-strofen, allerede skal eksistere, behøver arbejdsområdet ikke; Terraform Cloud opretter det om nødvendigt. Hvis du vælger at bruge et arbejdsområde, der allerede findes, må arbejdsområdet ikke have nogen eksisterende tilstande.

Bemærk: Hvis du er bekendt med at køre Terraform ved hjælp af CLI, har du muligvis brugt Terraform-arbejdsområder. Terraform Cloud-arbejdsområder opfører sig anderledes end Terraform CLI-arbejdsområder. Terraform CLI-arbejdsområder tillader, at der findes flere tilstandsfiler i en enkelt mappe, så du kan bruge en konfiguration til flere miljøer. Terraform Cloud-arbejdsområder indeholder alt, hvad der er nødvendigt for at styre et givet sæt infrastruktur, og fungerer som separate arbejdsmapper.

“godkend med Terraform Cloud

nu hvor du har defineret din backend, skal du godkende med Terraform Cloud for at fortsætte med initialisering. For at godkende med Terraform Cloud skal du køre underkommandoen terraform login og følge vejledningen for at logge ind.

Bemærk: Hvis du bruger en version af Terraform før 0.12.21, er kommandoen terraform login ikke tilgængelig. I stedet skal du oprette en CLI-konfigurationsfil, der skal godkendes.

$ 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:

kopi

svar på bekræftelsesprompten med en yes.

For mere detaljerede instruktioner om at logge ind, se login tutorial.

“Overfør tilstandsfilen

når du har godkendt remote backend, er du klar til at migrere din lokale tilstandsfil til Terraform Cloud. For at begynde migrationen skal du geninitialisere. Dette får Terraform til at genkende din ændrede 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:

kopi

under Reinitialisering præsenterer Terraform en prompt, der siger, at den vil kopiere tilstandsfilen til den nye backend. Indtast yes og Terraform vil migrere staten fra din lokale maskine til Terraform Cloud.

“Konfigurer Terraform Cloud-arbejdsområdet

når du har migreret din tilstand til Terraform Cloud, skal du logge ind på Terraform Cloud-brugergrænsefladen, finde dit arbejdsområdenavn som defineret i din backend-konfiguration og klikke på det. Naviger til fanen” stater ” i arbejdsområdet, og se din første handling i arbejdsområdet.

en visning af fanen "stater" i Terraform Cloud-arbejdsområdet

Husk, at din konfiguration har en variabel, som du skal tilføje til det nyearbejdsområde. Klik på fanen” variabler “i arbejdsområdet og derefter på”Tilføj variabel”.Indtast navnet på variablen, name_length, som nøglen. Indtast derefter en nyværdi, 5, og gem variablen.

Terraform Cloud-arbejdsområdets faneblad variabler med en variabel tilføjet

for konfigurationer i den virkelige verden skal du også tilføje cloud platform-legitimationsoplysninger og andre konfigurationsvariabler til arbejdsområdet.

“Start en kørsel i det nye arbejdsområde

efter at have verificeret, at tilstanden blev migreret til Terraform Cloud-arbejdsområdet, skal du fjerne den lokale tilstandsfil.

$ rm terraform.tfstate

Kopier

Anvend et nyt løb.

$ terraform apply

kopi

Terraform vil streame logfiler fra Terraform Cloud og give et link til kørslen i Terraform Cloud UI. Du indstiller en ny værdi for variablen name_length, så ressourcen erstattes med en, der matcher de nye parametre.

 billede af en run venter bekræftelse, loggen angiver, at ressourcen vil blive erstattet

“næste trin

Ødelæg de ressourcer, du oprettede til denne tutorial, ved først at klikke på”Indstillinger” i Terraform Cloud-arbejdsområdet, vælge “destruktion ogdeletion”, sikre afkrydsningsfeltet “Tillad destroy plans” er markeret, og derefterklik på “kø destroy plan”.

når ressourcerne er blevet ødelagt, skal du vende tilbage til siden “destruktion ogdeletion” og klikke på “Slet fra Terraform Cloud” for at slette arbejdsområdet.

i denne vejledning migrerede du en tilstandsfil fra din lokale maskine til et Terraform Cloud-arbejdsområde. Hvis du vil vide, hvordan du migrerer tilstandsfilerne for flere lokale arbejdsområder eller begrænser arbejdsområdeadgang til et bestemt team, skal du se følgende dokumentation.

  • migrerende tilstand fra flere lokale arbejdsområder
  • administration af Arbejdsområdeadgang

hvis du har et stort antal tilstandsfiler, som du gerne vil migrere til Terraform Cloud, kan du overveje at bruge Terraform Cloud API til at gøre det. Du kan finde oplysninger om upload af tilstandsversioner ved hjælp af API ‘ en i API-dokumentationen til Tilstandsversion.

Related Post

Leave A Comment