Terraform som Infrastructure as Code · leksjon

Introduksjon til Terraform-moduler

Forstå fordelene ved å bruke moduler til å kapsle inn og gjenbruke vanlige infrastrukturmønstre, og dermed forbedre kodeorganisering og vedlikeholdbarhet.

Leksjon 1 av 411 trinn

Introduksjon til Terraform-moduler er en gratis leksjon i Terraform som Infrastructure as Code på CoddyKit. Dette er leksjon 1 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Terraform som Infrastructure as Code, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Terraform som Infrastructure as Code inneholder totalt 4 leksjoner.

Hva er Terraform-moduler?

En Terraform-modul er en selvstendig pakke med Terraform-konfigurasjoner. Tenk på den som en funksjon eller klasse i programmeringsspråk. Den lar Dem gruppere relaterte ressurser og administrere dem som én enhet.

Moduler hjelper Dem med å organisere infrastrukt Kundenkode og gjør den enklere å administrere, spesielt i større prosjekter.

Hvorfor bruke Terraform-moduler?

Moduler gir flere viktige fordeler for infrastruktur som kode:

  • Gjenbruk: Definer en del av infrastrukturen én gang og bruk den flere ganger på tvers av ulike prosjekter eller miljøer.
  • Organisering: Del komplekse konfigurasjoner opp i mindre, håndterbare og logiske komponenter.
  • Konsistens: Sørg for at ressurser klargjøres på en standardisert måte hver gang, slik at konfigurasjonsavvik og feil reduseres.
  • Samarbeid: Team kan utvikle og dele moduler, noe som øker utviklingshastigheten og opprettholder standarder.

Forklaring av modulstruktur

En Terraform-modul er i hovedsak en katalog som inneholder én eller flere .tf-filer. Strukturen er fleksibel, men en vanlig struktur omfatter:

  • main.tf: Definerer de primære ressursene modulen oppretter.
  • variables.tf: Deklarerer inndatavariabler som tilpasser modulens virkemåte.
  • outputs.tf: Definerer utdata som modulen gjør tilgjengelig for kallende konfigurasjoner.
  • versions.tf: Angir versjonsbegrensninger for Terraform og provider for modulen.

Denne organiserte strukturen bidrar til å holde koden ryddig og forståelig.

Deres første modul-kode

La oss definere en svært enkel modul som oppretter en AWS S3-bøtte. Denne koden vil vanligvis ligge i sin egen katalog, for eksempel modules/my_s3_bucket/main.tf.

Denne komplette filen kan kjøres som en rotmodul for å se den i praksis, men hovedformålet her er å vise den interne strukturen til en modul.

provider "aws" {
  region = "us-east-1" # Example region
}

variable "bucket_name" {
  description = "Name for the S3 bucket."
  type        = string
}

variable "acl_setting" {
  description = "ACL for the S3 bucket."
  type        = string
  default     = "private"
}

resource "aws_s3_bucket" "example_bucket" {
  bucket = var.bucket_name
  acl    = var.acl_setting

  tags = {
    Environment = "Dev" # Example tag
  }
}

output "bucket_id" {
  description = "The ID of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.id
}

output "bucket_arn" {
  description = "The ARN of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.arn
}

Modulinndata: Variabler

Inndatavariabler lar Dem tilpasse modulens virkemåte uten å endre kjernekoden. De defineres i en variables.tf-fil i modulens katalog.

Når De kaller en modul, sender De verdier til disse variablene, noe som gjør modulen svært gjenbrukbar i ulike situasjoner og miljøer. Tenk på dem som funksjonsargumenter.

variable "bucket_name" {
  description = "Name for the S3 bucket."
  type        = string
}

variable "acl_setting" {
  description = "ACL for the S3 bucket."
  type        = string
  default     = "private"
}

Modulutdata: Eksponering av data

Utdata brukes til å gjøre data fra en modul tilgjengelige for konfigurasjonen som kaller den. Slik får De tilgang til viktig informasjon om ressursene modulen har opprettet.

Utdata defineres i en outputs.tf-fil i modulens katalog og kan refereres til fra andre deler av Terraform-konfigurasjonen eller til og med fra andre moduler.

output "bucket_id" {
  description = "The ID of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.id
}

output "bucket_arn" {
  description = "The ARN of the S3 bucket."
  value       = aws_s3_bucket.example_bucket.arn
}

Kalle den tilpassede modulen

Nå som vi har definert modulen my_s3_bucket, kan vi kalle den fra en rotkonfigurasjon. Attributtet source angir hvor Terraform finner modulen.

For lokale moduler er dette en relativ bane til modulens katalog. Vi sender verdier til modulens inndatavariabler og kan få tilgang til utdataene den eksponerer.

provider "aws" {
  region = "us-east-1"
}

module "my_website_bucket" {
  source      = "./modules/my_s3_bucket" # Path to your local module
  bucket_name = "my-unique-website-bucket-12345"
  acl_setting = "public-read"
}

output "website_bucket_arn" {
  description = "ARN of the website S3 bucket."
  value       = module.my_website_bucket.bucket_arn
}

output "website_bucket_id" {
  description = "ID of the website S3 bucket."
  value       = module.my_website_bucket.bucket_id
}

Ulike modulkilder

Moduler er ikke bare lokale! Terraform kan hente moduler fra ulike kilder, noe som gir Dem fleksibilitet:

  • Lokale baner: ./modules/my_module (som i eksempelet vårt)
  • Terraform Registry: hashicorp/vpc/aws (offentlig tilgjengelige moduler)
  • Git-repositorier: git::https://example.com/repo.git
  • S3-bøtter: s3::https://s3-us-west-2.amazonaws.com/example-bucket/module.zip

Terraform Registry er et godt sted å finne ferdigbygde moduler som er kvalitetssikret av fellesskapet, for vanlige infrastrukturmønstre.

Modulers praktiske betydning

Se for Dem at De administrerer hundrevis av ressurser på tvers av flere miljøer (utvikling, staging og produksjon). Uten moduler ville De hatt enorme, gjentakende konfigurasjonsfiler.

Moduler lar Dem definere et mønster for en «webserver» eller «database» én gang. Deretter kaller De ganske enkelt modulen for hver forekomst og sender inn ulike variabler for miljøspesifikke innstillinger. Dette reduserer feil betydelig, forenkler oppdateringer og gjør infrastrukturen virkelig skalerbar.

Hurtigtest

De har lært om strukturen og fordelene ved Terraform-moduler. La oss se om De kan identifisere en viktig fordel.

Oppsummering og neste steg

I denne leksjonen introduserte vi Terraform-moduler som kraftige verktøy for å organisere og gjenbruke infrastruktukode. De lærte:

  • Moduler kapsler inn ressurser i gjenbrukbare enheter.
  • De forbedrer kodeorganisering, konsistens og gjenbruk.
  • Moduler bruker variables.tf for inndata og outputs.tf for eksponerte data.
  • De kan kalle moduler fra lokale baner, registre eller Git-repositorier.

Deretter skal vi gå dypere inn i hvordan De oppretter egne gjenbrukbare moduler, og utforske mer avanserte mønstre og anbefalte fremgangsmåter.

Gratis å komme i gang

Lær deg Terraform som Infrastructure as Code med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Introduksjon til Terraform-moduler» gratis?

Ja – hele teksten i «Introduksjon til Terraform-moduler» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Terraform som Infrastructure as Code-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Terraform som Infrastructure as Code inneholder totalt 4 leksjoner.

Hva lærer jeg i «Introduksjon til Terraform-moduler»?

Forstå fordelene ved å bruke moduler til å kapsle inn og gjenbruke vanlige infrastrukturmønstre, og dermed forbedre kodeorganisering og vedlikeholdbarhet. Du øver på Terraform som Infrastructure as Code med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Terraform som Infrastructure as Code?

Ingen tidligere erfaring er nødvendig. Terraform som Infrastructure as Code på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 1 av 4.

Hvor lang tid tar leksjonen «Introduksjon til Terraform-moduler»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Terraform som Infrastructure as Code-leksjonen?

Ja. Alle Terraform som Infrastructure as Code-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Introduksjon til Terraform-moduler
  2. Oppretting av gjenbrukbare moduler
  3. Bruk av arbeidsområder for miljøer
  4. Publisering av moduler i et register
← Tilbake til Terraform som Infrastructure as Code