Skrót do Terraform – przydatne polecenia i przykłady

Lista wszystkich komend Terraform

Page content

Oto kompleksowy ściąg do Terraform z najważniejszymi poleceniami, elementami konfiguracyjnymi, zarządzaniem zasobami, modułami, zmiennymi, obsługą stanu i najlepszymi praktykami.

Terraform to otwartoźródłowe narzędzie typu infrastructure-as-code (IaC) opracowane przez HashiCorp, które umożliwia użytkownikom definiowanie i provisionowanie infrastruktury w wielu chmurach (np. AWS, Azure, GCP) przy użyciu deklaratywnych plików konfiguracyjnych. Głównym celem jest automatyzacja provisionowania infrastruktury, zapewnienie spójności i zmniejszenie błędów ludzkich. Terraform obsługuje przepływy pracy wielochmure, modułowe oraz oparte na stanie, co czyni go filarem nowoczesnych praktyk DevOps.

Aby poznać więcej narzędzi dla programistów i przepływów pracy, odwiedź Narzędzia dla programistów: Kompletny przewodnik po nowoczesnych przepływach pracy.

student using terraform

Kluczowe korzyści Terraform:

  • Deklaratywna składnia: Definiuj żądany stan infrastruktury w kodzie.
  • Niezależność od dostawcy: Działa z AWS, Azure, GCP, Kubernetes i innymi.
  • Zarządzanie stanem: Śledzi zmiany infrastruktury, aby unikać konfliktów.

Przewodnik po instalacji i konfiguracji

https://developer.hashicorp.com/terraform/tutorials#get-started

Proces instalacji Terraform jest dość prosty.

  • 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
    

Aby zwiększyć produktywność w terminalu podczas pracy z Terraform, zobacz Skróty klawiaturowe dla Ubuntu: Kompletny ściąg.

Weryfikacja

terraform --version

Polecenia CLI Terraform

Oto lista wszystkich poleceń Terraform:

Polecenie Opis
terraform init Inicjalizuj nowy lub istniejący katalog konfiguracji Terraform
terraform validate Sprawdź, czy konfiguracja jest poprawna
terraform plan Pokaż plan wykonania bez wprowadzania zmian
terraform apply Zastosuj zmiany wymagane do osiągnięcia żądanego stanu
terraform destroy Zniszcz infrastrukturę zarządzaną przez Terraform
terraform fmt Sformatuj pliki konfiguracyjne w standardowym stylu
terraform show Pokaż obecny stan lub plan
terraform refresh Zaktualizuj stan z rzeczywistą infrastrukturą
terraform providers Wyświetl dostawców użytych w konfiguracji
terraform graph Wizualizuj zależności zasobów jako graf
terraform workspace list Wylistuj wszystkie dostępne przestrzenie robocze
terraform workspace new Utwórz nową przestrzeń roboczą
terraform workspace select Przełącz do określonej przestrzeni roboczej
terraform workspace show Pokaż nazwę bieżącej przestrzeni roboczej
terraform workspace delete Usuń określoną przestrzeń roboczą
terraform output Pokaż wartości wyjściowe z pliku stanu
terraform import Zaimportuj istniejący zasób do Terraform
terraform taint Oznacz zasób do ponownego utworzenia przy następnym apply
terraform untaint Usuń oznaczenie zasobu jako zepsuty
terraform state list Wylistuj zasoby w pliku stanu
terraform state show Pokaż atrybuty pojedynczego zasobu w stanie

Najważniejsze elementy konfiguracji

Rozszerzenia plików

  • .tf: Główne pliki konfiguracyjne (składnia HCL)
  • .tfvars: Wartości zmiennych

Typy bloków Terraform

  • Przykład Provider
    provider "aws" {
      region = "us-east-1"
    }
    
  • Przykład Resource
    resource "aws_instance" "web" {
      ami           = "ami-0abcdef"
      instance_type = "t2.micro"
    }
    
  • Przykład Variable
    variable "instance_count" {
      type    = number
      default = 2
    }
    
  • Przykład Output
    output "instance_ip" {
      value = aws_instance.web.public_ip
    }
    
  • Przykład Module
    module "vpc" {
      source = "./modules/vpc"
      cidr_block = var.vpc_cidr
    }
    

Praca ze zmiennymi

  • Deklarowanie zmiennych
    variable "region" {
      description = "Region AWS"
      default     = "us-east-1"
    }
    
  • Przypisywanie wartości
    • CLI: terraform apply -var="region=us-west-2"
    • Plik tfvars: terraform apply -var-file="prod.tfvars"
  • Typy: string, number, bool, list, map, object

Zarządzanie stanem

  • Plik stanu: terraform.tfstate
  • Stan zdalny (przykład S3)
    backend "s3" {
      bucket = "my-tf-state"
      key    = "state.tfstate"
      region = "us-east-1"
    }
    
  • Podgląd stanu:
    terraform show
    terraform state list

Pętle i warunki

  • Count
    resource "aws_instance" "web" {
      count = 3
      ...
    }
    
  • For_each
    resource "aws_s3_bucket" "b" {
      for_each = var.bucket_names
      bucket   = each.value
    }
    
  • Warunki
    instance_type = var.env == "prod" ? "t2.large" : "t2.micro"
    

Funkcje

  • Interpolacja ciągów:
    resource "aws_s3_bucket" "example" { bucket = "my-bucket-${var.env}" }
  • Przykłady List i Map:
    locals {
      my_map = { a = 1, b = 2 }
    }
    

Provisionery

Służą do bootstrapowania zasobów. Przykład:

resource "aws_instance" "web" {
  ...
  provisioner "local-exec" {
    command = "echo Instance created"
  }
}

Najlepsze praktyki

  • Kontrola wersji wszystkich plików .tf
  • Blokowanie wersji dostawców dla zapewnienia spójności wdrożeń
  • Backend zdalny do zarządzania stanem (S3, Azure Blob itp.)
  • Szyfrowanie plików stanu w backendach zdalnych
  • Modularyzacja infrastruktury przy użyciu ponownie używalnych modułów
  • Dokumentacja konfiguracji
  • Testowanie na środowisku staging przed produkcją

Dodatkowe odniesienia

  • Pomoc: terraform --help lub [polecenie] --help dla pomocy dotyczącej konkretnego polecenia
  • Debugowanie: Ustaw TF_LOG=INFO lub TF_LOG=DEBUG dla szczegółowych logów
  • Formatowanie: terraform fmt
  • Kodowanie: Dla operacji kodowania/dekodowania Base64 zobacz Kodowanie - dekodowanie Base64 na Windows, Linux i Mac

Ten ściąg stanowi szybki referencje do najczęstszych i bardziej zaawansowanych aspektów używania Terraform – od poleceń po najlepsze praktyki – czyniąc go praktycznym zarówno dla początkujących, jak i zaawansowanych użytkowników. Miłego dnia!

Przydatne linki