Terraform-quickguide – användbara kommandon och exempel
Listan över alla Terraform-kommandon
Här är en omfattande Terraform-kortförlista med nödvändiga kommandon, konfigurationselement, resurshantering, moduler, variabler, tillståndshantering och bästa praxis.
Terraform är ett öppen källkod-verktyg för infrastruktur som kod (IaC) utvecklat av HashiCorp, som möjliggör att användare definierar och levererar infrastruktur över flera molnleverantörer (t.ex. AWS, Azure, GCP) med deklarativa konfigurationsfiler. Dess huvudsakliga syfte är att automatisera infrastrukturleverans, säkerställa konsistens och minska manuella fel. Terraform stöder flermoln, modulära och tillståndsstyrda arbetsflöden, vilket gör det till en hörnsten i moderna DevOps-praktiker.
För fler utvecklarverktyg och arbetsflöden, titta på Utvecklarverktyg: Den kompletta guiden till moderna utvecklingsarbetsflöden.

Nyckelfördelar med Terraform:
- Deklarativ syntax: Definiera önskat infrastrukturstillstånd i kod.
- Leverantörsoskicklighet: Fungerar med AWS, Azure, GCP, Kubernetes och mer.
- Tillståndshantering: Spårar infrastrukturändringar för att undvika konflikter.
Installations- och inställningsguide
https://developer.hashicorp.com/terraform/tutorials#get-started
Installationsprocessen för Terraform är ganska enkel.
-
Linux (Ubuntu/Debian):
wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(grep -oP '(?<=UBUNTU_CODENAME=).*' /etc/os-release || lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list sudo apt update && sudo apt install terraform -
Windows (WSL):
wget -O terraform.zip https://releases.hashicorp.com/terraform/1.5.5/terraform_1.5.5_windows_amd64.zip unzip terraform.zip -
macOS (Homebrew):
brew install terraform
För terminalproduktivitet när du arbetar med Terraform, se Ubuntu-tangentbordsgenvägar: Kompletta kortförlista.
Verifiering
terraform --version
Terraform CLI-kommandon
Här är listan över alla Terraform-kommandon:
| Kommando | Beskrivning |
|---|---|
terraform init |
Initiera en ny eller befintlig Terraform-konfigurationskatalog |
terraform validate |
Kontrollera om konfigurationen är giltig |
terraform plan |
Visa exekveringsplan utan att göra ändringar |
terraform apply |
Tillämpa ändringar som krävs för att nå önskat tillstånd |
terraform destroy |
Ta ner infrastruktur som hanteras av Terraform |
terraform fmt |
Formatera konfigurationsfiler i standardstil |
terraform show |
Visa nuvarande tillstånd eller plan |
terraform refresh |
Uppdatera tillstånd med verklig infrastruktur |
terraform providers |
Visa leverantörer som används i konfigurationen |
terraform graph |
Visualisera resursberoenden som en graf |
terraform workspace list |
Lista alla tillgängliga arbetsområden |
terraform workspace new |
Skapa ett nytt arbetsområde |
terraform workspace select |
Byt till ett angivet arbetsområde |
terraform workspace show |
Visa namnet på det aktuella arbetsområdet |
terraform workspace delete |
Ta bort ett angivet arbetsområde |
terraform output |
Visa utvärden från tillståndsfilen |
terraform import |
Importera befintlig resurs till Terraform |
terraform taint |
Märk en resurs för återuppsättning vid nästa tillämpning |
terraform untaint |
Ta bort märkning av en resurs som “tainted” |
terraform state list |
Lista resurser i tillståndsfilen |
terraform state show |
Visa attribut för en enda resurs i tillståndet |
Konfigurationselement
Filändelser
.tf: Huvudkonfigurationsfiler (HCL-syntax).tfvars: Variabelvärden
Terraform-blocktyper
- Leverantörsexempel
provider "aws" { region = "us-east-1" } - Resursexempel
resource "aws_instance" "web" { ami = "ami-0abcdef" instance_type = "t2.micro" } - Variabelexempel
variable "instance_count" { type = number default = 2 } - Utvärde-exempel
output "instance_ip" { value = aws_instance.web.public_ip } - Modulexempel
module "vpc" { source = "./modules/vpc" cidr_block = var.vpc_cidr }
Arbeta med variabler
- Deklarera variabler
variable "region" { description = "AWS-region" default = "us-east-1" } - Tilldela värden
- CLI:
terraform apply -var="region=us-west-2" - tfvars-fil:
terraform apply -var-file="prod.tfvars"
- CLI:
- Typer:
string,number,bool,list,map,object
Hantera tillstånd
- Tillståndsfil:
terraform.tfstate - Fjärrtillstånd (S3-exempel)
backend "s3" { bucket = "my-tf-state" key = "state.tfstate" region = "us-east-1" } - Visa tillstånd:
terraform show
terraform state list
Loopar och villkor
- Count
resource "aws_instance" "web" { count = 3 ... } - For_each
resource "aws_s3_bucket" "b" { for_each = var.bucket_names bucket = each.value } - Villkor
instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
Funktioner
- Stränginterpolering:
resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" } - Exempel på listor och kartor:
locals { my_map = { a = 1, b = 2 } }
Provisioners
Används för att bootstrapa resurser. Exempel:
resource "aws_instance" "web" {
...
provisioner "local-exec" {
command = "echo Instance created"
}
}
Bästa praxis
- Versionskontrollera alla
.tf-filer - Lås leverantörsversioner för att säkerställa konsekventa leveranser
- Fjärrbackend för tillståndshantering (S3, Azure Blob, etc.)
- Kryptera tillståndsfilerna i fjärrbackends
- Modulisera infrastruktur med återanvändbara moduler
- Dokumentera dina konfigurationer
- Testa i testmiljö innan produktion
Ytterligare referenser
- Hjälp:
terraform --helpeller[kommando] --helpför kommandospecifik hjälp - Felsökning: Sätt
TF_LOG=INFOellerTF_LOG=DEBUGför utförliga loggar - Formatering:
terraform fmt - Kodning: För Base64-kodning/avkodning, se Kodning - avkodning Base64 på Windows, Linux och Mac
Denna kortförlista ger en snabb referens för de vanligaste och mest avancerade aspekterna av Terraform-användning - från kommandon till bästa praxis - vilket gör den praktisk för både nybörjare och avancerade användare. Ha en bra dag!
Användbara länkar
- https://developer.hashicorp.com/terraform
- Docker-kortförlista
- Docker Compose-kortförlista - Mest användbara kommandon med exempel
- Kubernetes-kortförlista
- Deploya Flutter-projekt med backend till AWS Amplify
- Deploya Hugo-genererad webbplats till AWS S3
- AWS Lambda-prestanda: JavaScript vs Python vs Golang
- Lagerade Lambdas med AWS SAM och Python
- AWS SAM + AWS SQS + Python PowerTools
- Minio som alternativ till Aws S3. Minio-översikt och installation