Articles

migrați starea în Terraform Cloud

Posted by admin

ca utilizator curent al Terraform CLI, sunteți responsabil pentru menținerea unui fișier de stare ca sursă de adevăr pentru infrastructura dvs. cloud. Puteți migra fișierul dvs. de stat local în Terraform Cloud fără a întrerupe sau a recrea infrastructura existentă.

avertisment: când încărcați un fișier de stare în Terraform Cloud folosind pașii din acest tutorial, utilizați întotdeauna aceeași versiune a Terraform CLI pe care ați folosit-o pentru a crea resursele. Folosind o versiune mai nouă a Terraform poate actualiza fișierul de stat și cauza corupției fișier de stat.

„cerințe preliminare

acest tutorial presupune că aveți următoarele:

  • Terraform CLI a instalat local
  • un cont Cloud Terraform

notă: deoarece backend-ul remote nu a fost acceptat în versiunea mai veche a Terraform, trebuie să utilizați 0.11.13 sau o versiune superioară pentru a migra starea dvs. în Terraform Cloud. Fragmentele din acest tutorial folosesc sintaxa 0.12.

dacă nu aveți Terraform instalat local, puteți completa acest tutorial într-un laborator interactiv din browserul dvs. web. Lansați-l aici.

„creați starea

începeți prin clonarea acestui depozit GitHub.

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

copiați

apoi, schimbați în director.

$ cd learn-state-migration

copiați

examinați fișierul main.tf din Directorul de lucru pentru a obține o imagine de ansamblu asupra resurselor pe care urmează să le creați. Această configurație utilizează random_pet resursă pentru a genera și de ieșire un nume de companie aleatoare cu un anumit număr de cuvinte. Lungimea numelui este determinată de valoarea variabilei name_length, care implicit 3.

într-o configurație din lumea reală este posibil să aveți variabile suplimentare, cum ar fi acreditările platformei cloud definite într-un fișier .tfvars. Vom acoperi cum să setați aceste valori în spațiul de lucru Terraform Cloud mai târziu în acest tutorial, după ce ați migrat fișierul de stare.

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

copiați

inițializați directorul.

$ terraform init

Copiere

după ce Terraform inițializează, aplicați configurația și aprobați rularea tastând „da” la prompt.

$ terraform apply

Copy

Terraform va emite un nume de animal de companie generat aleatoriu de trei cuvinte.

„configurați backend-ul la distanță

acum că aveți un fișier de stare locală, trebuie să creați un bloc de cod backend în configurația dvs. Backend-urile spun Terraform unde să încarce și să salveze fișierul de stare.

Terraform utilizează backend-ul local în mod implicit dacă nu definiți în mod explicit un bloc de cod backend în configurația dvs. Backend-ul local salvează starea dvs. ca fișier terraform.tfstateîn directorul în care executați terraform apply. Pentru a migra fișierele de stare în Terraform Cloud, definiți un backend remote în configurația dvs. adăugând un nou bloc de cod la începutul fișierului main.tf.

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

copiați

înlocuiți valorile atributului organizație și spații de lucru cu numele organizației dvs. În timp ce organizația definită în strofa backend trebuie să existe deja, Spațiul de lucru nu trebuie; Terraform Cloud îl va crea dacă este necesar. Dacă optați să utilizați un spațiu de lucru care există deja, Spațiul de lucru nu trebuie să aibă stări existente.

Notă: Dacă sunteți familiarizat cu rularea Terraform folosind CLI, este posibil să fi utilizat spații de lucru Terraform. Spațiile de lucru Terraform Cloud se comportă diferit față de spațiile de lucru Terraform CLI. Spațiile de lucru Terraform CLI permit existența mai multor fișiere de stare într-un singur director, permițându-vă să utilizați o configurație pentru mai multe medii. Spațiile de lucru Terraform Cloud conțin tot ce este necesar pentru a gestiona un anumit set de infrastructură și funcționează ca directoare de lucru separate.

„Autentificați-vă cu Terraform Cloud

acum că v-ați definit backend-ul, trebuie să vă autentificați cu Terraform Cloud pentru a continua cu inițializarea. Pentru a vă autentifica cu Terraform Cloud, executați subcomanda terraform login și urmați instrucțiunile pentru a vă conecta.

Notă: Dacă utilizați o versiune de Terraform înainte de 0.12.21, comanda terraform login nu este disponibilă. În schimb, configurați un fișier de configurare CLI pentru a vă autentifica.

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

copiați

răspundeți la promptul de confirmare cu un yes.

pentru instrucțiuni mai detaliate despre conectare, consultați tutorialul de conectare.

„migrați fișierul de stare

după ce ați autentificat backend-ul remote, sunteți gata să migrați fișierul de stare local în Terraform Cloud. Pentru a începe migrația, Reinițializați. Acest lucru face ca Terraform să recunoască configurația backend modificată.

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

copie

în timpul reinitializare, Terraform prezintă un prompt spunând că va copia fișierul de stat la noul backend. Introduceți yes și Terraform va migra starea de la mașina locală la Terraform Cloud.

„configurați spațiul de lucru Terraform Cloud

după migrarea stării dvs. în Terraform Cloud, conectați-vă la interfața web Terraform Cloud, găsiți numele spațiului de lucru așa cum este definit în configurația backend și faceți clic pe acesta. Navigați la fila” State ” a spațiului de lucru și vedeți prima acțiune în spațiul de lucru.

o vizualizare a filei "state" din spațiul de lucru Terraform Cloud

rețineți că configurația dvs. are o variabilă pe care trebuie să o adăugați la newworkspace. Faceți clic pe fila” variabile „din spațiul de lucru și apoi pe”Adăugați variabilă”.Introduceți numele variabilei, name_length, ca cheie. Apoi introduceți o valoare nouă, 5 și salvați variabila.

fila variabile Terraform cloud workspace cu o variabilă adăugată

pentru configurații din lumea reală, adăugați acreditările platformei cloud și orice alte variabile de configurare la spațiul de lucru.

„inițiați o rulare în Noul Spațiu de lucru

după verificarea faptului că starea a fost migrată în spațiul de lucru Terraform Cloud, Eliminați fișierul de stare locală.

$ rm terraform.tfstate

copiați

aplicați o nouă execuție.

$ terraform apply

Copy

Terraform va transmite jurnalele din Terraform Cloud și va furniza un link către run în interfața de utilizare Terraform Cloud. Setați o nouă valoare pentru variabila name_length, astfel încât resursa va fi înlocuită cu una care se potrivește cu noii parametri.

 imaginea unei confirmări de așteptare, Jurnalul afirmă că resursa va fi înlocuită

„următorii pași

distrugeți resursele pe care le-ați creat pentru acest tutorial făcând mai întâi clic pe opțiunea”Setări” din spațiul de lucru Terraform Cloud, selectând „distrugere șideletion”, asigurându-vă că este bifată caseta de selectare „Permiteți distrugerea planurilor” și apoifaceți clic pe „planul de distrugere a cozii”.

după ce resursele au fost distruse, reveniți la pagina „distrugere șideletion” și faceți clic pe „ștergeți din Terraform Cloud” pentru a șterge spațiul de lucru.

în acest tutorial, ați migrat un fișier de stare de pe mașina dvs. locală într-un spațiu de lucru Terraform Cloud. Pentru a afla cum să migrați fișierele de stare ale mai multor spații de lucru locale sau să restricționați accesul la spațiul de lucru la o anumită echipă, consultați următoarea documentație.

  • starea de migrare din mai multe spații de lucru locale
  • Gestionarea accesului la spațiul de lucru

dacă aveți un număr mare de fișiere de stare pe care doriți să le migrați la Terraform Cloud, luați în considerare utilizarea API-ului Terraform Cloud pentru a face acest lucru. Pentru informații despre încărcarea versiunilor de stare utilizând API, consultați documentația API pentru versiunea de stare.

Related Post

Leave A Comment