Articles

Status migreren naar Terraform Cloud

Posted by admin

als huidige gebruiker van de Terraform CLI bent u verantwoordelijk voor het onderhouden van een statusbestand als bron van waarheid voor uw cloudinfrastructuur. U kunt uw lokale statusbestand migreren naar Terraform Cloud zonder uw bestaande infrastructuur te onderbreken of opnieuw aan te maken.

waarschuwing: bij het uploaden van een statusbestand naar Terraform Cloud met behulp van de stappen in deze tutorial, Gebruik altijd dezelfde versie van de Terraform CLI die u hebt gebruikt om de bronnen aan te maken. Met behulp van een nieuwere versie van Terraform kan de toestand bestand bij te werken en veroorzaken state file corruptie.

“vereisten

deze tutorial gaat ervan uit dat u het volgende hebt:

  • de Terraform CLI lokaal geïnstalleerd
  • een Terraform Cloud account

Opmerking: Omdat de remote backend niet werd ondersteund in oudere versie van Terraform, moet u 0.11.13 of hoger gebruiken om uw status naar Terraform Cloud te migreren. De fragmenten in deze tutorial gebruiken 0.12 syntaxis.

Als u Terraform niet lokaal hebt geïnstalleerd, kunt u deze tutorial in een interactief lab van uw webbrowser voltooien. Lanceer het hier.

“Create state

begin met het klonen van deze GitHub repository.

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

kopieer

volgende, Ga naar de map.

$ cd learn-state-migration

kopieer

Bekijk het main.tf bestand in de werkmap om een overzicht te krijgen van de bronnen die u gaat aanmaken. Deze configuratie gebruikt de random_pet bron om een willekeurige pet-naam met een bepaald aantal woorden te genereren en uit te voeren. De lengte van de naam wordt bepaald door de waarde van de variabele name_length, die standaard 3 is.

in een real-world configuratie kunt u extra variabelen zoals Cloud platform referenties gedefinieerd in een .tfvars bestand. We zullen later in deze tutorial bespreken hoe u deze waarden in de Terraform Cloud workspace kunt instellen, nadat u het statusbestand hebt gemigreerd.

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

kopieer

Initialiseer de map.

$ terraform init

Copy

nadat Terraform initialiseert, pas de configuratie toe en keur de run goed door “yes” achter de prompt te typen.

$ terraform apply

Copy

Terraform zal een willekeurig gegenereerde pet-naam met drie woorden uitvoeren.

” remote backend instellen

Nu u een lokaal statusbestand hebt, moet u een backend-codeblok aanmaken in uw configuratie. Backends vertellen Terraform waar het statusbestand moet worden geladen en opgeslagen.

Terraform gebruikt standaard de lokale backend als u niet expliciet een backend code blok in uw configuratie definieert. De lokale backend slaat uw status op als een terraform.tfstate bestand in de map waarin u terraform applyuitvoert. Om statusbestanden naar Terraform Cloud te migreren, definieert u een remote backend in uw configuratie door een nieuw codeblok toe te voegen aan het begin van uw main.tf bestand.

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

kopieer

Vervang de waarden van het attribuut organisatie en workspaces door de naam van uw Terraform cloudorganisatie en de gewenste naam van de werkruimte. Hoewel de organisatie gedefinieerd in de backend strofe al moet bestaan, hoeft de werkruimte niet te bestaan; Terraform Cloud zal het indien nodig creëren. Als u ervoor kiest om een reeds bestaande werkruimte te gebruiken, mag de werkruimte geen bestaande status hebben.

Opmerking: Als u bekend bent met het draaien van Terraform met behulp van de CLI, kunt u Terraform werkbladen hebben gebruikt. Terraform Cloud workspaces gedragen zich anders dan Terraform CLI workspaces. Terraform CLI workspaces staan toe dat er meerdere statusbestanden bestaan binnen een enkele map, zodat u één configuratie kunt gebruiken voor meerdere omgevingen. Terraform Cloud workspaces bevatten alles wat nodig is om een bepaalde set infrastructuur te beheren en te functioneren als aparte werkmappen.

“authenticeren met Terraform Cloud

Nu u uw backend hebt gedefinieerd, moet u authenticeren met Terraform Cloud om verder te gaan met initialisatie. Om te authenticeren met Terraform Cloud, voert u de terraform login subopdracht uit en volgt u de aanwijzingen om in te loggen.

Opmerking: Als u een versie van Terraform vóór 0.12.21 gebruikt, is het commando terraform login niet beschikbaar. Stel in plaats daarvan een CLI-configuratiebestand in om te verifiëren.

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

kopie

antwoord op de bevestiging met een yes.

voor meer gedetailleerde instructies over inloggen, zie de login tutorial.

” het statusbestand migreren

zodra u de backend remote hebt geverifieerd, bent u klaar om uw lokale statusbestand te migreren naar Terraform Cloud. Om de migratie te beginnen, herinitialiseren. Dit zorgt ervoor dat Terraform uw gewijzigde backend configuratie herkent.

$ 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

tijdens het herinitialiseren presenteert Terraform een prompt die zegt dat het het statusbestand naar de nieuwe backend zal kopiëren. Voer yes in en Terraform zal de status van uw lokale machine naar Terraform Cloud migreren.

” Configureer de Terraform Cloud workspace

na het migreren van uw status naar Terraform Cloud, log in op de Terraform Cloud Web UI, zoek de naam van uw werkruimte zoals gedefinieerd in uw backend configuratie, en klik erop. Navigeer naar het tabblad “Staten” van het werkblad en zie uw eerste actie in het werkblad.

een weergave van het tabblad" States " in de Terraform Cloud workspace

onthoud dat uw configuratie een variabele heeft die u aan de newworkspace moet toevoegen. Klik op het tabblad” variabelen “in de werkruimte en vervolgens op”variabele toevoegen”.Voer de naam van de variabele name_length in als de sleutel. Voer vervolgens een newvalue in, 5, en sla de variabele op.

het tabblad variabelen van Terraform Cloud workspace met een variabele toegevoegd

voeg voor real-world configuraties cloud platform-referenties en andere configuratievariabelen ook toe aan de werkruimte.

” Start een run in de nieuwe werkruimte

nadat u hebt geverifieerd dat de status is gemigreerd naar de Terraform Cloud workspace, verwijdert u het lokale statusbestand.

$ rm terraform.tfstate

kopiëren

een nieuwe run toepassen.

$ terraform apply

Copy

Terraform streamt logs van Terraform Cloud en geeft een link naar de run in de Terraform Cloud UI. U stelt een nieuwe waarde in voor de variabele name_length, zodat de bron wordt vervangen door een die overeenkomt met de nieuwe parameters.

Image of a run waiting confirmation, the log states that the resource will be replaced

“volgende stappen

vernietig de resources die u voor deze tutorial hebt aangemaakt door eerst op de”Settings” optie in de Terraform Cloud workspace te klikken, selecteer “Destruction andDeletion”, zorg ervoor dat het selectievakje “Allow destroy plans” is aangevinkt, en klik vervolgens op “Queue destroy plan”.

nadat de resources zijn vernietigd, ga terug naar de” Destruction and deletion “pagina en klik op” Delete from Terraform Cloud ” om de werkruimte te verwijderen.

in deze tutorial migreerde u een statusbestand van uw lokale machine naar een Terraform Cloud workspace. Zie de volgende documentatie voor meer informatie over het migreren van statusbestanden van meerdere lokale werkbladen of het beperken van de toegang tot werkruimten tot een bepaald team.

  • Status migreren vanuit meerdere lokale werkruimten
  • toegang tot werkruimte beheren

als u een groot aantal statusbestanden hebt die u naar Terraform Cloud wilt migreren, overweeg dan om hiervoor de Terraform Cloud API te gebruiken. Voor informatie over het uploaden van statusversies met behulp van de API, raadpleegt u de API-documentatie over Statusversie.

Related Post

Leave A Comment