Terraform kommandon - användbara kommandon och exempel
Listan över alla Terraform-kommandon
Här är en omfattande Terraform cheatsheet med essentiella kommandon, konfigurationselement, hantering av resurser, moduler, variabler, hantering av tillstånd och bästa praxis.
Terraform är ett open-source verktyg för infrastructure-as-code (IaC) utvecklat av HashiCorp, som möjliggör för användare att definiera och tillhandahålla infrastruktur över flera molntjänster (t.ex. AWS, Azure, GCP) med hjälp av deklarativa konfigureringsfiler. Dess huvudsakliga syfte är att automatisera infrastrukturtillhandahållning, säkerställa konsistens och minska manuella fel. Terraform stöder multi-cloud, modulär och tillståndsdriven arbetsflöden, vilket gör det till en grundsten i moderna DevOps-praxis.

Nyckelfördelar med Terraform:
- Deklarativ syntax: Definiera önskat infrastrukturstatus i kod.
- Provider-agnostisk: Fungerar med AWS, Azure, GCP, Kubernetes och fler.
- Tillståndshantering: Spårar infrastrukturförändringar för att undvika konflikter.
Installations- och konfigureringsguide
https://developer.hashicorp.com/terraform/tutorials#get-started
Terraform-installationsprocessen ä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
Verifiering
terraform --version
Terraform CLI-kommandon
Här är en lista över alla Terraform-kommandon:
| Kommando | Beskrivning |
|---|---|
terraform init |
Initialisera en ny eller befintlig Terraform-konfigurationskatalog |
terraform validate |
Kontrollera om konfigurationen är giltig |
terraform plan |
Visa körplan utan att göra förändringar |
terraform apply |
Tillämpa förändringar som krävs för att nå önskat tillstånd |
terraform destroy |
Radera Terraform-hanterad infrastruktur |
terraform fmt |
Formatera konfigureringsfiler i standardstil |
terraform show |
Visa aktuellt 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 ett diagram |
terraform workspace list |
Lista alla tillgängliga arbetsområden |
terraform workspace new |
Skapa ett nytt arbetsområde |
terraform workspace select |
Byta till ett specificerat arbetsområde |
terraform workspace show |
Visa namnet på det aktuella arbetsområdet |
terraform workspace delete |
Radera ett specificerat arbetsområde |
terraform output |
Visa utdata-värden från tillståndsfilen |
terraform import |
Importera befintlig resurs till Terraform |
terraform taint |
Markera en resurs för återskapande vid nästa tillämpning |
terraform untaint |
Avmarkera en resurs som smutsig |
terraform state list |
Lista resurser i tillståndsfilen |
terraform state show |
Visa attributer för en enda resurs i tillstånd |
Konfigurationsgrundläggande
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 } - Utdataexempel
output "instance_ip" { value = aws_instance.web.public_ip } - Modul-exempel
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 - Remote-tillstånd (S3-exempel)
backend "s3" { bucket = "my-tf-state" key = "state.tfstate" region = "us-east-1" } - Visa tillstånd:
terraform showterraform 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}" } - List-, Map-exempel:
locals { my_map = { a = 1, b = 2 } }
Provisioners
Används för att starta resurser. Exempel:
resource "aws_instance" "web" {
...
provisioner "local-exec" {
command = "echo Instance created"
}
}
Bästa praxis
- Versionhantera alla
.tf-filer - Lås leverantörsversioner för att säkerställa konsekventa distributioner
- Remote-backend för tillståndshantering (S3, Azure Blob, etc.)
- Kryptera tillståndsfilerna i remote-backends
- Modularisera infrastruktur med återanvändbara moduler
- Dokumentera dina konfigurationer
- Testa i staging innan produktion
Ytterligare referenser
- Hjälp:
terraform --helpeller[kommando] --helpför kommandospecifik hjälp - Felsökning: Använd
TF_LOG=INFOellerTF_LOG=DEBUGför detaljerade loggar - Formatering:
terraform fmt
Den här cheatsheeten ger en snabbreferens för de vanligaste och 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 Cheatsheet
- Docker Compose Cheatsheet - De mest användbara kommandona med exempel
- Kubernetes Cheatsheet
- Distribuera Flutter-projekt med backend till AWS Amplify
- Distribuera 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 installering