Skrót do Terraform – przydatne polecenia i przykłady
Lista wszystkich komend Terraform
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.

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"
- CLI:
- 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 --helplub[polecenie] --helpdla pomocy dotyczącej konkretnego polecenia - Debugowanie: Ustaw
TF_LOG=INFOlubTF_LOG=DEBUGdla 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
- https://developer.hashicorp.com/terraform
- Ściąg do Docker
- Ściąg do Docker Compose - Najprzydatniejsze polecenia z przykładami
- Ściąg do Kubernetes
- Wdrożenie projektu Flutter z backendem na AWS Amplify
- Wdrożenie strony wygenerowanej przez Hugo na AWS S3
- Wydajność AWS lambda: JavaScript vs Python vs Golang
- Layered Lambdas z AWS SAM i Python
- AWS SAM + AWS SQS + Python PowerTools
- Minio jako alternatywa dla Aws S3. Przegląd i instalacja Minio