Intensiv DevOps-uddannelse · Lektion

Introduktion til Terraform-moduler

Forstå fordelene ved at bruge moduler til at indkapsle og genbruge almindelige infrastrukturmønstre, så kodeorganisation og vedligeholdelse forbedres.

Lektion 1 af 411 trin

Introduktion til Terraform-moduler er en gratis Intensiv DevOps-uddannelse-lektion på CoddyKit. Dette er lektion 1 af 4. Du kan læse alle 3 lektioner i dette læringsspor gratis i deres fulde længde — derefter låser CoddyKit PRO alle lektioner op samt praktiske øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Den er en del af læringsforløbet i Intensiv DevOps-uddannelse, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Hvad er Terraform-moduler?

Et Terraform-modul er en selvstændig pakke med Terraform-konfigurationer. Tænk på det som en funktion eller en klasse i programmeringssprog. Det giver dig mulighed for at samle relaterede ressourcer og administrere dem som en samlet enhed.

Moduler hjælper dig med at organisere din infrastrukturkode og gøre den mere håndterbar, især i større projekter.

Hvorfor bruge Terraform-moduler?

Moduler giver flere vigtige fordele for din infrastruktur som kode:

  • Genanvendelighed: Definer et stykke infrastruktur én gang, og brug det flere gange på tværs af forskellige projekter eller miljøer.
  • Organisering: Opdel komplekse konfigurationer i mindre, håndterbare og logiske komponenter.
  • Konsistens: Sørg for, at ressourcer altid klargøres på en standardiseret måde, så konfigurationsafvigelser og fejl reduceres.
  • Samarbejde: Teams kan udvikle og dele moduler, hvilket fremskynder udviklingen og opretholder standarder.

Forklaring af modulstruktur

Et Terraform-modul er grundlæggende en mappe, der indeholder en eller flere .tf-filer. Strukturen er fleksibel, men indeholder ofte:

  • main.tf: Definerer de primære ressourcer, som modulet opretter.
  • variables.tf: Erklærer inputvariabler, der tilpasser modulets funktion.
  • outputs.tf: Definerer outputværdier, som modulet stiller til rådighed for dem, der kalder det.
  • versions.tf: Angiver versionsbegrænsninger for Terraform og provider'en i modulet.

Denne organiserede struktur hjælper med at holde din kode overskuelig og forståelig.

Din første modul-kode

Lad os definere et meget enkelt modul, der opretter en AWS S3-bucket. Denne kode vil typisk ligge i sin egen mappe, f.eks. modules/my_s3_bucket/main.tf.

Denne komplette fil kan køres som et rodmodul, så du kan se den i funktion, men dens primære formål her er at vise den interne struktur i et 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
}

Modulinput: Variabler

Inputvariabler giver dig mulighed for at tilpasse modulets funktion uden at ændre dets kernekode. De defineres i en variables.tf-fil i modulmappen.

Når du kalder et modul, sender du værdier til disse variabler, hvilket gør modulet meget genanvendeligt i forskellige scenarier og miljøer. Tænk på dem som funktionsargumenter.

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

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

Moduloutput: Eksponering af data

Outputværdier bruges til at eksponere data fra et modul til den konfiguration, der kalder det. På den måde kan du få adgang til vigtige oplysninger om de ressourcer, modulet har oprettet.

Output defineres i en outputs.tf-fil i modulmappen og kan refereres til fra andre dele af din Terraform-konfiguration eller endda 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
}

Kald af dit brugerdefinerede modul

Nu hvor vi har defineret vores my_s3_bucket-modul, lad os kalde det fra en rod konfiguration. Attributten source angiver, hvor Terraform kan finde modulet.

For lokale moduler er dette en relativ sti til modulets mappe. Vi sender værdier til modulets inputvariabler og kan få adgang til dets eksponerede output.

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
}

Forskellige modulkilder

Moduler er ikke kun lokale! Terraform kan hente moduler fra forskellige kilder, hvilket giver dig fleksibilitet:

  • Lokale stier: ./modules/my_module (som i vores eksempel)
  • Terraform Registry: hashicorp/vpc/aws (offentligt tilgængelige moduler)
  • Git-arkiver: git::https://example.com/repo.git
  • S3-buckets: s3::https://s3-us-west-2.amazonaws.com/example-bucket/module.zip

Terraform Registry er et godt sted at finde færdigbyggede, fællesskabsgodkendte moduler til almindelige infrastrukturmønstre.

Modulernes praktiske betydning

Forestil dig, at du administrerer hundredvis af ressourcer på tværs af flere miljøer (udvikling, test og produktion). Uden moduler ville du have enorme, gentagende konfigurationsfiler.

Moduler giver dig mulighed for at definere et mønster for en "webserver" eller en "database" én gang. Derefter kalder du blot modulet for hver instans og sender forskellige variabler til miljøspecifikke indstillinger. Det reducerer fejl markant, forenkler opdateringer og gør din infrastruktur virkelig skalerbar.

Hurtig kontrol

Du har lært om strukturen og fordelene ved Terraform-moduler. Lad os se, om du kan identificere en vigtig fordel.

Opsummering og næste trin

I denne lektion introducerede vi Terraform-moduler som effektive værktøjer til at organisere og genbruge din infrastrukturkode. Du lærte:

  • Moduler indkapsler ressourcer i genanvendelige enheder.
  • De forbedrer kodeorganisering, konsistens og genanvendelighed.
  • Moduler bruger variables.tf til input og outputs.tf til eksponerede data.
  • Du kan kalde moduler fra lokale stier, registre eller Git-arkiver.

Dernæst går vi mere i dybden med at oprette dine egne genanvendelige moduler og udforske mere avancerede mønstre og bedste praksis.

Gratis at komme i gang

Lær Intensiv DevOps-uddannelse med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
142
Lektioner
568

Ofte stillede spørgsmål

Er lektionen “Introduktion til Terraform-moduler” gratis?

Ja — alle 3 lektioner i læringssporet Intensiv DevOps-uddannelse, inklusive “Introduktion til Terraform-moduler”, kan læses gratis i deres fulde længde her på webstedet. Derefter låser CoddyKit PRO alle lektioner op samt interaktive øvelser med en indbygget kodeeditor og en AI-underviser døgnet rundt. Intensiv DevOps-uddannelse-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Introduktion til Terraform-moduler”?

Forstå fordelene ved at bruge moduler til at indkapsle og genbruge almindelige infrastrukturmønstre, så kodeorganisation og vedligeholdelse forbedres. Du øver dig i Intensiv DevOps-uddannelse med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Intensiv DevOps-uddannelse?

Der kræves ingen tidligere erfaring. Intensiv DevOps-uddannelse på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 1 af 4.

Hvor lang tid tager lektionen “Introduktion til Terraform-moduler”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Intensiv DevOps-uddannelse-lektion?

Ja. Alle Intensiv DevOps-uddannelse-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Introduktion til Terraform-moduler
  2. Oprettelse af genanvendelige moduler
  3. Brug af arbejdsområder til miljøer
  4. Udgivelse af moduler i et registry
← Tilbage til Intensiv DevOps-uddannelse