Articles

Migrer Tilstand Til Terraform Cloud

Posted by admin

som en gjeldende bruker Av Terraform CLI, er du ansvarlig for å opprettholde en tilstand fil som en kilde til sannhet for din sky infrastruktur. Du kan overføre den lokale statsfilen til Terraform Cloud uten å forstyrre eller gjenopprette den eksisterende infrastrukturen.

Advarsel: når du laster opp en tilstandsfil Til Terraform Cloud ved hjelp av trinnene i denne opplæringen, må du alltid bruke samme versjon Av Terraform CLI du brukte til å opprette ressursene. Ved hjelp av en nyere versjon Av Terraform kan oppdatere staten filen og forårsake staten fil korrupsjon.

«Forutsetninger

denne opplæringen forutsetter at du har følgende:

  • Terraform CLI installert lokalt
  • En Terraform Cloud-konto

Obs!: fordi remote backend ikke ble støttet i eldre versjon Av Terraform, må du bruke 0.11.13 eller høyere for å overføre staten Til Terraform Cloud. Utdrag i denne opplæringen bruker 0.12 syntaks.

Hvis Du ikke Har Terraform installert lokalt, kan du fullføre denne opplæringen i et interaktivt laboratorium fra nettleseren din. Start det her.

«Opprett tilstand

Start med å klone Dette GitHub-depotet.

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

Kopier

neste, endre til katalogen.

$ cd learn-state-migration

Kopier

Se gjennom main.tf – filen i arbeidskatalogen for å få en oversikt over ressursene du skal opprette. Denne konfigurasjonen bruker ressursen random_pet til å generere og skrive ut et tilfeldig kjælenavn med et gitt antall ord. Lengden på navnet bestemmes av verdien av name_length variabelen, som standard 3.

i en reell konfigurasjon kan du ha flere variabler som skyplattformlegitimasjon definert i en .tfvars – fil. Vi vil dekke hvordan du angir disse verdiene i Terraform Cloud-arbeidsområdet senere i denne opplæringen, etter at du har migrert statsfilen.

## 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 katalogen.

$ terraform init

Kopier

etter Terraform initialiserer, bruk konfigurasjonen og godkjenn kjøringen ved å skrive «ja» ved ledeteksten.

$ terraform apply

Copy

Terraform vil sende ut en tre ord tilfeldig generert kjælenavn.

«Sett opp den eksterne backend

Nå som du har en lokal stat fil, må du opprette en backend kodeblokk i konfigurasjonen. Backends fortelle Terraform hvor du skal laste og lagre sin tilstand fil.

Terraform bruker den lokale backend som standard hvis du ikke eksplisitt definerer en backend-kodeblokk i konfigurasjonen. Den lokale backend lagrer staten som en terraform.tfstate fil i katalogen der du kjører terraform apply. Hvis du vil overføre statsfiler til Terraform Cloud, definerer du en remote backend i konfigurasjonen ved å legge til en ny kodeblokk i begynnelsen av main.tf – filen.

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

Erstatt attributtverdiene organisasjon og arbeidsområder med navnet På Organisasjonen Terraform Cloud og ønsket arbeidsområde. Organisasjonen som er definert i backend-strofen, må allerede finnes, men arbeidsområdet trenger ikke Det. Hvis du velger å bruke et arbeidsområde som allerede finnes, må arbeidsområdet ikke ha noen eksisterende tilstander.

Merk: hvis Du er kjent med å kjøre Terraform ved HJELP AV CLI, kan Du ha brukt Terraform arbeidsområder. Terraform Cloud-arbeidsområder oppfører seg annerledes enn Terraform CLI-arbeidsområder. Terraform cli arbeidsområder tillate flere statlige filer å eksistere i en enkelt katalog, slik at du kan bruke en konfigurasjon for flere miljøer. Terraform Cloud-arbeidsområder inneholder alt som trengs for å administrere et gitt sett med infrastruktur, og fungerer som separate arbeidskataloger.

«Autentisere Med Terraform Cloud

Nå som du har definert backend, må du godkjenne Med Terraform Cloud for å fortsette med initialisering. For å godkjenne Med Terraform Cloud, kjør underkommandoen terraform login, og følg instruksjonene for å logge inn.

Merk: hvis Du bruker En Versjon Av Terraform før 0.12.21, er kommandoen terraform login ikke tilgjengelig. Sett i stedet opp EN CLI-konfigurasjonsfil for å godkjenne.

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

Kopier

Svar på bekreftelsesprompten med en yes.

for mer detaljerte instruksjoner om innlogging, se innloggingsveiledningen.

«Overfør statsfilen

Når du har godkjent remote – backend, er du klar til å migrere den lokale statsfilen Til Terraform Cloud. For å starte migrasjon, initialisere. Dette fører Til At Terraform gjenkjenner den endrede backend-konfigurasjonen.

$ 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

Under re-initialisering Presenterer Terraform en melding som sier At den vil kopiere statsfilen til den nye backend. Skriv inn yes Og Terraform vil migrere tilstanden fra din lokale maskin Til Terraform Cloud.

» Konfigurer Terraform Cloud-arbeidsområdet

etter å ha migrert staten til Terraform Cloud, logg inn På Terraform Cloud web UI, finn arbeidsområdenavnet ditt som definert i backend-konfigurasjonen, og klikk på det. Naviger til» Stater » – fanen i arbeidsområdet, og se din første handling i arbeidsområdet.

en visning av "Stater" - fanen i Terraform Cloud-arbeidsområdet

Husk at konfigurasjonen din har en variabel som du må legge til i newworkspace. Klikk på» Variabler «- fanen i arbeidsområdet og deretter «Legg til variabel».Skriv inn navnet på variabelen name_length som nøkkel. Skriv deretter inn en nyverdi, 5, og lagre variabelen.

Variabelfanen For Terraform Cloud workspace med en variabel lagt til

legg til skyplattformlegitimasjon og eventuelle andre konfigurasjonsvariabler til arbeidsområdet for virkelige konfigurasjoner.

«Start en kjøring i det nye arbeidsområdet

etter at du har bekreftet at tilstanden ble overført Til Terraform Cloud-arbeidsområdet, fjerner du den lokale tilstandsfilen.

$ rm terraform.tfstate

Kopier

Bruk en ny kjøring.

$ terraform apply

Copy

Terraform vil streame logger Fra Terraform Cloud og gi en link til kjør i Terraform Cloud UI. Du angir en ny verdi for name_length – variabelen, slik at ressursen erstattes med en som samsvarer med de nye parameterne.

 Bilde av en kjør venter bekreftelse, loggen sier at ressursen vil bli erstattet

«Neste trinn

Ødelegg ressursene du opprettet for denne opplæringen ved først å klikke på» Innstillinger «- alternativet i Terraform Cloud-arbeidsområdet, velg «Destruction andDeletion», og sørg for at» Tillat destroy plans «- boksen er merket, og deretterklikker du på «Queue destroy plan».

etter at ressursene er ødelagt, gå tilbake til Siden» Destruction andDeletion «og klikk» Slett Fra Terraform Cloud » for å slette arbeidsområdet.

i denne opplæringen migrerte du en tilstandsfil fra den lokale maskinen til Et Terraform Cloud-arbeidsområde. Hvis du vil lære hvordan du overfører statsfiler for flere lokale arbeidsområder, eller begrense arbeidsområdetilgang til et bestemt team, kan du se følgende dokumentasjon.

  • Migreringstilstand Fra Flere Lokale Arbeidsområder
  • Administrere Arbeidsområdetilgang

hvis du har et stort antall statsfiler som du vil overføre Til Terraform Cloud, bør Du vurdere Å bruke Terraform Cloud API for å gjøre dette. For informasjon om opplasting av statlige versjoner ved HJELP AV API, se State Version API-dokumentasjonen.

Related Post

Leave A Comment