Sobes.tech
Middle

Koji pristup koristi Terraform prilikom ponovnog kreiranja resursa?

sobes.tech АИ

Одговор од АИ

Terraform koristi pristup "uništiti i kreirati" (destroy and create).

U slučaju potrebe za potpunim ažuriranjem ili izmenom resursa koji se ne može ažurirati na mestu (in-place update), Terraform izvršava sledeće korake:

  1. Uništavanje postojećeg resursa: Terraform uklanja resurs iz infrastrukture pozivom odgovarog API-ja provajdera.
  2. Kreiranje novog resursa: Nakon uspešnog brisanja, Terraform kreira novi primerak resursa sa novim parametrima.

Ovo se dešava kada promene u konfiguraciji Terraform zahtevaju potpuno zamenjivanje resursa. Na primer, promena tipa podmreže u oblaku (iz javne u privatnu), što nije podržano in-place ažuriranjem provajdera. Terraform određuje potrebu za ovim pristupom prilikom izvršavanja komande terraform plan. Izlaz plana će jasno naznačiti da će resurs biti uništen i ponovo kreiran.

// Primer resursa koji može biti ponovo kreiran pri promeni određenih atributa
resource "aws_instance" "example" {
  ami           = "ami-0abcdef1234567890" # Promena AMI obično zahteva ponovo kreiranje
  instance_type = "t2.micro"           # Promena tipa instance takođe može zahtevati ponovo kreiranje
  subnet_id     = "subnet-0123456789abcdef0" // Promena ID-ja podmreže gotovo uvek zahteva ponovo kreiranje

  tags = {
    Name = "ExampleInstance"
  }
}

Primer izlaza terraform plan koji ukazuje na ponovo kreiranje:

Plan: 1 za dodavanje, 0 za izmenu, 1 za uništavanje.

Terraform će izvršiti sledeće radnje:

  # aws_instance.example će biti uništen
  - resource "aws_instance" "example" {
      - ami                    = "ami-old-id" -> null
      - arn                    = "arn:aws:ec2:..." -> null
      ... (ostali atributi)
    }

  # aws_instance.example će biti kreiran
  + resource "aws_instance" "example" {
      + ami           = "ami-new-id"
      + instance_type = "t2.micro"
      + subnet_id     = "subnet-0123456789abcdef0"
      ... (ostali atributi)
    }