Articles

migrera tillstånd till Terraform Cloud

Posted by admin

som en aktuell användare av Terraform CLI är du ansvarig för att upprätthålla en tillståndsfil som en källa till sanning för din molninfrastruktur. Du kan migrera din lokala statliga fil till Terraform Cloud utan att avbryta eller återskapa din befintliga infrastruktur.

varning: när du laddar upp en tillståndsfil till Terraform Cloud med hjälp av stegen i denna handledning, använd alltid samma version av Terraform CLI som du använde för att skapa resurserna. Att använda en nyare version av Terraform kan uppdatera statsfilen och orsaka statlig filkorruption.

”förutsättningar

denna handledning förutsätter att du har följande:

  • Terraform CLI installeras lokalt
  • ett Terraform Cloud-konto

Obs!: eftersom remote backend inte stöds i äldre version av Terraform, måste du använda 0.11.13 eller senare för att migrera ditt tillstånd till Terraform Cloud. Snippets i denna handledning använder 0.12 syntax.

om du inte har Terraform installerat lokalt kan du slutföra den här handledningen i ett interaktivt laboratorium från din webbläsare. Starta den här.

”Skapa tillstånd

börja med att klona detta GitHub-arkiv.

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

kopiera

byt sedan till katalogen.

$ cd learn-state-migration

kopiera

granska filen main.tf i arbetskatalogen för att få en översikt över de resurser du ska skapa. Denna konfiguration använder resursen random_pet för att generera och mata ut ett slumpmässigt husdjursnamn med ett visst antal ord. Namnets längd bestäms av värdet på variabeln name_length, som standard 3.

i en verklig konfiguration kan du ha ytterligare variabler som Cloud platform-referenser definierade i en .tfvars – fil. Vi kommer att täcka hur du ställer in dessa värden i Terraform Cloud workspace senare i den här handledningen, efter att du har migrerat tillståndsfilen.

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

kopiera

initiera katalogen.

$ terraform init

kopiera

efter Terraform initialiserar, tillämpa konfigurationen och godkänna körningen genom att skriva ”ja” vid prompten.

$ terraform apply

kopiera

Terraform kommer att mata ut ett tre ord slumpmässigt genererat husdjursnamn.

”Ställ in fjärrbackend

nu när du har en lokal tillståndsfil måste du skapa ett backend-kodblock i din konfiguration. Backends berätta Terraform var att ladda och spara dess tillstånd fil.

Terraform använder den lokala backend som standard om du inte uttryckligen definierar ett backend-kodblock i din konfiguration. Den lokala backend sparar ditt tillstånd som en terraform.tfstatefil i katalogen där du kör terraform apply. För att migrera tillståndsfiler till Terraform Cloud, definiera en remote backend i din konfiguration genom att lägga till ett nytt kodblock i början av 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" } }}

kopiera

ersätt attributvärdena för organisation och arbetsytor med namnet på din Terraform Cloud-organisation och önskat arbetsytanamn. Medan organisationen som definieras i backend-strofen redan måste finnas, behöver arbetsytan inte; Terraform Cloud skapar det om det behövs. Om du väljer att använda en arbetsyta som redan finns får arbetsytan inte ha några befintliga tillstånd.

Obs: Om du är bekant med att köra Terraform med CLI kan du ha använt Terraform-arbetsytor. Terraform Cloud-arbetsytor beter sig annorlunda än Terraform CLI-arbetsytor. Terraform CLI-arbetsytor tillåter att flera tillståndsfiler finns i en enda katalog, så att du kan använda en konfiguration för flera miljöer. Terraform Cloud-arbetsytor innehåller allt som behövs för att hantera en viss uppsättning infrastruktur och fungerar som separata arbetskataloger.

”autentisera med Terraform Cloud

nu när du har definierat din backend måste du autentisera med Terraform Cloud för att kunna fortsätta med initialisering. För att autentisera med Terraform Cloud, kör underkommandot terraform login och följ anvisningarna för att logga in.

Obs: Om du använder en version av Terraform före 0.12.21 är kommandot terraform login inte tillgängligt. Ställ istället in en CLI-konfigurationsfil för att autentisera.

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

kopiera

svara på bekräftelseprompten med en yes.

för mer detaljerade instruktioner om inloggning, se inloggningshandledningen.

”migrera tillståndsfilen

när du har autentiserat remote backend är du redo att migrera din lokala tillståndsfil till Terraform Cloud. För att börja migrationen, initiera igen. Detta gör att Terraform känner igen din ändrade 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:

kopiera

under återinitiering presenterar Terraform en prompt som säger att den kommer att kopiera tillståndsfilen till den nya backend. Ange yes och Terraform kommer att migrera tillståndet från din lokala maskin till Terraform Cloud.

”konfigurera Terraform Cloud workspace

när du har migrerat ditt tillstånd till Terraform Cloud loggar du in på Terraform Cloud web UI, hittar ditt workspace-namn enligt definitionen i din backend-konfiguration och klickar på den. Navigera till fliken” stater ” i arbetsytan och se din första åtgärd i arbetsytan.

en vy av fliken "stater" i Terraform Cloud workspace

kom ihåg att din konfiguration har en variabel som du behöver lägga till i newworkspace. Klicka på fliken ” variabler ”i arbetsytan och sedan på”Lägg till variabel”.Ange variabelns namn, name_length, som nyckel. Ange sedan en nyvärde, 5, och spara variabeln.

Terraform Cloud workspace ' s Variables tab med en variabel tillagd

för verkliga konfigurationer, Lägg till cloud platform-referenser och andra konfigurationsvariabler till arbetsytan också.

”starta en körning i den nya arbetsytan

efter att ha verifierat att tillståndet migrerades till Terraform Cloud workspace, ta bort den lokala tillståndsfilen.

$ rm terraform.tfstate

kopiera

tillämpa en ny körning.

$ terraform apply

kopiera

Terraform kommer att strömma loggar från Terraform Cloud och ger en länk till körningen i Terraform Cloud UI. Du ställer in ett nytt värde för variabeln name_length, så resursen kommer att ersättas med en som matchar de nya parametrarna.

 bild av en kör väntar bekräftelse, anger loggen att resursen kommer att ersättas

”nästa steg

förstör de resurser du skapade för denna handledning genom att först klicka på alternativet”Inställningar” i Terraform Cloud workspace, välja ”Destruction andDeletion”, se till att kryssrutan ”Tillåt förstör planer” är markerad och sedanklicka på ”kö förstör plan”.

när resurserna har förstörts, återgå till sidan ”Destruction andDeletion” och klicka på ”Ta bort från Terraform Cloud” för att ta bort arbetsytan.

i den här handledningen migrerade du en tillståndsfil från din lokala maskin till en Terraform Cloud workspace. Om du vill veta hur du migrerar tillståndsfilerna för flera lokala arbetsytor eller begränsar åtkomst till arbetsytan till ett visst team finns i följande dokumentation.

  • migrera tillstånd från flera lokala arbetsytor
  • hantera åtkomst till arbetsytan

om du har ett stort antal statliga filer som du vill migrera till Terraform Cloud, överväg att använda Terraform Cloud API för att göra det. För information om hur du laddar upp Statliga versioner Med hjälp av API, se dokumentationen för State Version API.

Related Post

Leave A Comment