Sobes.tech
Junior

Czym jest Terraform?

sobes.tech AI

Odpowiedź od AI

Terraform to narzędzie open source stworzone przez HashiCorp do zarządzania infrastrukturą jako kodem (IaC). Pozwala opisać infrastrukturę za pomocą deklaratywnego języka HCL (HashiCorp Configuration Language) lub JSON, a następnie automatycznie ją wdrażać, modyfikować i usuwać.

Kluczowe cechy Terraform:

  • Deklaratywność: Opisujesz pożądany stan infrastruktury, a Terraform sam określa działania potrzebne do jego osiągnięcia.
  • Niezmienność: Terraform preferuje tworzenie nowych zasobów zamiast modyfikowania istniejących przy dużych zmianach konfiguracji, co zwiększa niezawodność i przewidywalność.
  • Dostawcy: Obsługuje dużą liczbę dostawców usług chmurowych (AWS, Azure, GCP), a także innych usług (Kubernetes, Docker, bazy danych) poprzez system dostawców.
  • Stan: Terraform śledzi stan wdrożonej infrastruktury w pliku stanu, co pozwala mu rozumieć aktualny stan i obliczać potrzebne zmiany.
  • Moduły: Umożliwia tworzenie wielokrotnego użytku bloków konfiguracji do organizacji kodu i upraszczania zarządzania złożonymi infrastrukturami.
  • Planowanie: Przed zastosowaniem zmian Terraform pokazuje plan działań, który zostanie wykonany, co pomaga uniknąć nieprzewidzianych skutków.

Typowy cykl pracy z Terraform obejmuje następujące etapy:

  1. Inicjalizacja (terraform init): Załadowanie niezbędnych dostawców i modułów.
    terraform init
    // Inicjalizacja katalogu roboczego
    
  2. Planowanie (terraform plan): Generowanie planu wykonania, pokazującego, które zasoby będą tworzone, modyfikowane lub usuwane.
    terraform plan
    // Tworzenie i wyświetlanie planu wykonania
    
  3. Zastosowanie (terraform apply): Wykonanie planu w celu utworzenia lub zmiany infrastruktury.
    terraform apply
    // Zastosowanie planu do docelowej infrastruktury
    
  4. Usuwanie (terraform destroy): Usunięcie wszystkich zasobów zarządzanych przez obecną konfigurację Terraform.
    terraform destroy
    // Usunięcie wszystkich zasobów zarządzanych przez obecną konfigurację
    

Przykład prostego opisu zasobu w HCL:

resource "aws_instance" "example" {
  # Typ zasobu (instancja AWS) i jego nazwa w konfiguracji
  ami           = "ami-0abcdef1234567890" # ID obrazu AMI
  instance_type = "t2.micro"            # Typ instancji
  tags = {
    # Etykiety zasobu
    Name = "example-instance"
  }
}

Terraform znacznie upraszcza i automatyzuje zarządzanie infrastrukturą, czyniąc ją bardziej przewidywalną, skalowalną i wersjonowaną.