Mester Terraform: 28 Spørsmål & Svar for Intervjuet ditt

Her presenteres 28 spørsmål og svar om Terraform som ofte stilles i intervjuer, sammen med en liste og forklaring av viktige kommandoer. Denne samlingen gir deg et solid grunnlag for å forberede deg til intervjuer innen DevOps og skyinfrastruktur.

Med økende bruk av skyteknologier åpnes det stadig nye muligheter innen DevOps. Kunnskap om skyen og infrastruktur som kode (IaC) verktøy, som Terraform, er essensielt for alle som jobber med DevOps. Forvent at disse temaene vil være sentrale i fremtidige intervjuer.

Hva er Terraform?

Terraform er et populært IaC-verktøy som brukes av skyingeniører. Det lar deg definere både skybaserte og lokale ressurser i konfigurasjonsfiler som er enkle å lese, og dermed administrere ressursene programmatisk. En av de viktigste fordelene med Terraform er at det ikke er begrenset til en enkelt skyleverandør, i motsetning til mange andre IaC-verktøy. Dette betyr at du kan bruke Terraform for å administrere applikasjoner på flere skyplattformer samtidig.

Her er en oversikt over noen av teknologiene Terraform støtter:

For å utvikle din karriere som DevOps-ingeniør, skyarkitekt, utvikler eller administrator, er det viktig å være forberedt på Terraform-relaterte intervjuspørsmål. Vi har satt sammen en liste over de mest relevante spørsmålene for å hjelpe deg med å styrke dine Terraform-kunnskaper.

Generelle Terraform-intervjuspørsmål og svar

#1. Hva forstår du med Terraform?

Terraform er et åpen kildekode IaC-verktøy utviklet av HashiCorp. Det brukes til å opprette, oppdatere, slette og versjonskontrollere infrastrukturen din på tvers av ulike skyplattformer.

#2. Hva er grunnene til å velge Terraform for DevOps?

Terraform eliminerer risikoen for menneskelige feil ved infrastrukturadministrasjon, noe som fører til økt kvalitet, konsistens og effektivitet i sky- og lokal infrastruktur. Terraform bruker HCL-språket (HashiCorp Configuration Language), som er enkelt å lære og bruke, og ligner på JSON. I motsetning til skyleverandørens egne IaC-verktøy, som AWS Cloudformation, kan Terraform brukes på tvers av en rekke skyplattformer. Dette reduserer behovet for å lære flere IaC-verktøy og forbedrer samarbeidsmulighetene.

#3. Hvordan fungerer Terraform?

Terraform bruker plugins, kjent som Terraform-leverandører, for å samhandle med API-er på skyplattformer og administrere ressursene dine. Som bruker består Terraform-arbeidsflyten av tre trinn:

Skriv: Definer infrastrukturen din som kode.

Plan: Forhåndsvis endringene Terraform vil gjøre før implementering.

Bruk: Implementer infrastrukturen og de foreslåtte endringene.

#4. Hva mener du med Terraform Cloud?

Terraform Cloud er en ekstern plattform optimalisert for Terraform-arbeidsflyten. Den tilbyr funksjoner som arbeidsområder og tilstandslåsing, som er essensielle for samarbeid i større team.

#5. Hva forstår du med tilstand (state) i Terraform?

Som et IaC-verktøy må Terraform være klar over den gjeldende tilstanden til konfigurasjoner og infrastruktur. Terraform lagrer denne informasjonen i en fil som kalles tilstandsfilen.

#6. Hva er fordelen med Terraform State?

Terraform State gjør det mulig for Terraform å kartlegge virkelige ressurser til din konfigurasjon, spore metadata og forbedre ytelsen når du planlegger endringer i komplekse infrastrukturer. Det er en avgjørende del av Terraform.

#7. Hva forstår du med Terraform Backend?

Terraform backend er plattformen der Terraform State-øyeblikksbilder (snapshots) lagres. Som standard bruker Terraform en backend kalt «lokal» for å lagre tilstanden som en lokal fil på disken din. Andre støttede backends er en form for eksterne lagringstjenester.

#8. Hva er en leverandør (provider) i Terraform?

Leverandører i Terraform er plugins som gjør at Terraform kan samhandle med skyleverandører, SaaS-leverandører og andre API-er. For eksempel, hvis du skal bruke Terraform for å levere infrastruktur på AWS, må du deklarere en AWS-leverandør i konfigurasjonsfilene.

#9. Hvem vedlikeholder Terraform-leverandører?

Leverandører distribueres separat fra Terraform. Hvem som helst kan utvikle sine egne leverandører. Noen standardleverandører vedlikeholdes direkte av Hashicorp.

#10. Hva er Sentinel?

Sentinel er et policy-som-kode-verktøy som brukes for å håndheve standardkonfigurasjoner for ressurser som er implementert med Terraform. Det kan brukes av organisasjoner for overholdelse og styringsformål.

#11. Hva forstår du med moduler i Terraform?

En Terraform-modul er en standardisert container for flere ressurser som brukes sammen for å klargjøre og konfigurere ressurser. For eksempel kan du lage en «VPC-modul» for organisasjonen din som leverer en standard VPC med tilhørende ressurser som undernett og internettgatewayer. Moduler kan deles offentlig gjennom det offentlige modulregisteret og privat gjennom det private modulregisteret.

#12. Hva er fordelen med å bruke moduler i Terraform?

Terraform-moduler lar oss skape logisk abstraksjon over et sett med ressurser. Ved å bruke moduler kan vi vedlikeholde og gjenbruke en standardkonfigurasjon for ressurser. De kan versjonskontrolleres og deles med andre teammedlemmer for å levere ressurser på en standardisert måte.

#13. Hva er det private modulregisteret?

Private Module Registry er en Terraform Cloud-funksjon som gjør det mulig å dele Terraform-moduler internt i organisasjonen.

Avanserte Terraform-intervjuspørsmål og svar

#14. Hvordan kan vi eksportere data fra en modul til en annen?

Data kan eksporteres fra en modul ved å definere utdatablokker i modulkonfigurasjonsfilene. Disse dataene kan deretter sendes som en parameter til destinasjonsmodulen.

#15. Hvordan kan du definere avhengigheter i Terraform?

Terraform har innebygd avhengighetsstyring. Det finnes to typer avhengigheter mellom ressurser i Terraform – implisitte og eksplisitte avhengigheter.

Implisitte avhengigheter oppdages automatisk av Terraform. Dette skjer når utdata fra en «ressurs A» brukes i «ressurs B». Terraform vil automatisk oppdage at «ressurs B» må opprettes etter «ressurs A».

Eksplisitte avhengigheter kan spesifiseres i tilfeller der to ressurser er avhengige av hverandre internt, uten å dele utdata. Dette kan gjøres ved å bruke parameteren `depends_on` i konfigurasjonsblokken.

#16. Hva er provisjonsleverandører (provisioners) i Terraform?

Provisjonsleverandører er Terraform-ressurser som brukes til å utføre skript som en del av ressursopprettelsen eller ødeleggelsen. Det er to typer provisjonsleverandører i Terraform:

  • `local-exec`: Kjører et skript på maskinen der Terraform kjøres.
  • `remote-exec`: Kjører et skript på en ekstern ressurs etter at den er opprettet.

Provisjonsleverandører bør kun brukes som en siste utvei i Terraform.

#17. Hva er den eksterne datablokken i Terraform?

I likhet med `local-exec`-provisjonsleverandøren, kan den eksterne datablokken brukes til å kjøre skript på maskiner som kjører Terraform. Forskjellen er at skript i den eksterne datablokken kan returnere data i JSON-format, mens provisjonsleverandører ikke kan returnere utdata. Det er viktig å huske at eksterne datablokker bør brukes som en siste utvei, og ikke hvis det finnes et bedre alternativ.

#18. Hvordan kan to personer som bruker Terraform Cloud lage to forskjellige sett med infrastruktur fra samme arbeidsmappe?

Dette kan gjøres ved å bruke separate arbeidsområder. Hver bruker kan starte Terraform-kjøringer i sitt eget arbeidsområde. Hvert arbeidsområde har en separat tilstandsfil, slik at så lenge ressursene ikke overlapper, kan begge brukere opprette to forskjellige sett med infrastruktur ved hjelp av samme kode.

#19. Hva skjer når flere ingeniører begynner å implementere infrastruktur ved hjelp av den samme tilstandsfilen?

Terraform har en viktig funksjon som kalles «tilstandslåsing». Denne funksjonen sikrer at det ikke gjøres endringer i tilstandsfilen under en kjøring, noe som hindrer korrupsjon. Merk at ikke alle Terraform backends støtter tilstandslåsing. Velg en backend som støtter denne funksjonen hvis det er et krav.

#20. Hva er en null-ressurs i Terraform?

En Terraform null-ressurs er en konfigurasjon som kjører som en standard Terraform-ressursblokk, men som ikke oppretter noen ressurser. Selv om dette kan virke som en merkelig og ubrukelig ressurs, kan den være nyttig i ulike situasjoner der man vil omgå begrensninger i Terraform.

#21. Hvordan kan du bruke samme leverandør i Terraform med forskjellige konfigurasjoner?

Dette kan gjøres ved å bruke `alias`-argumentet i leverandørblokken.

#22. Du har en Terraform-konfigurasjonsfil uten ressurser. Hva skjer når du kjører kommandoen `terraform apply`?

Terraform vil ødelegge alle ressursene. Å starte en tom kjøring med kommandoen `terraform apply` tilsvarer å starte `terraform destroy`-kjøringen.

#23. Hva skjer hvis en ressurs opprettes i Terraform, men feiler under klargjøring?

Dette er et sjeldent scenario. Hvis det skjer, vil ressursen bli merket som «forurenset» og kan gjenskapes ved å starte Terraform-kjøringen på nytt.

#24. Hvilken verdi av `TF_LOG`-variabelen gir den mest detaljerte loggingen?

`TRACE` er den mest detaljerte verdien, og standardverdien for `TF_LOG`-variabelen.

#25. Hvordan kan du importere eksisterende ressurser under Terraform-administrasjon?

Dette gjøres med kommandoen `terraform import`.

#26. Hvilken kommando kan brukes til å forhåndsvise Terraform-utførelsesplanen?

Kommandoen `terraform plan` genererer utførelsesplanen for de endringene Terraform vil gjøre i infrastrukturen.

#27. Hvilken kommando kan brukes til å stemme overens Terraform-tilstanden med den faktiske infrastrukturen?

Kommandoen `terraform apply -refresh-only` brukes til å stemme overens Terraform-tilstanden med den faktiske infrastrukturen. Dette er det nye alternativet til kommandoen `terraform refresh`, som nå er utdatert.

#28. Hvilken kommando kan brukes til å bytte mellom arbeidsområder når du bruker Terraform Cloud?

Kommandoen `terraform workspace select ` brukes for å velge et annet arbeidsområde.

#29. Hvilken kommando brukes til å utføre syntaksvalidering på Terraform-konfigurasjonsfiler?

Kommandoen `terraform validate` brukes for å verifisere at en konfigurasjon er syntaktisk gyldig og intern konsistent.

#30. Hvilken kommando brukes til å lage nye arbeidsområder i Terraform Cloud?

Kommandoen `terraform workspace new ` brukes til å opprette et nytt arbeidsområde.

Noen andre viktige Terraform-kommandoer for tekniske intervjuer

  • `terraform init`: Initialiserer eksterne backends; laster ned leverandører og eksterne moduler som er definert i konfigurasjonen.
  • `terraform init -upgrade`: Brukes for å oppgradere de eksisterende nedlastede leverandørene.
  • `terraform plan`: Genererer utførelsesplanen for oppretting eller oppdatering av infrastruktur.
  • `terraform apply`: Oppretter eller oppdaterer infrastrukturen etter å ha bedt om bekreftelse fra brukeren.
  • `terraform apply –auto-approve`: Oppretter eller oppdaterer infrastrukturen; brukerbekreftelsessteget hoppes over.
  • `terraform destroy`: Sletter infrastrukturen etter å ha bedt om bekreftelse fra brukeren.
  • `terraform destroy –auto-approve`: Sletter infrastrukturen; brukerbekreftelsessteget hoppes over.
  • `terraform fmt`: Skanner gjeldende mappe etter konfigurasjonsfiler og formaterer dem i henhold til HashiCorp’s anbefalte stil og format.
  • `terraform fmt –recursive`: Skanner gjeldende mappe og undermapper etter konfigurasjonsfiler og formaterer dem i henhold til HashiCorp’s anbefalte stil og format.
  • `terraform show`: Gir en lesbar utskrift av en tilstands- eller planfil.

Vi håper informasjonen ovenfor vil hjelpe deg med å sikre deg en jobb innen Terraform.