Terraform kommandon - användbara kommandon och exempel

Listan över alla Terraform-kommandon

Sidinnehåll

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.

student använder terraform

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"
  • 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 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}" }
  • 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 --help eller [kommando] --help för kommandospecifik hjälp
  • Felsökning: Använd TF_LOG=INFO eller TF_LOG=DEBUG fö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