Sobes.tech
Middle

Aký prístup používa Terraform pri opätovnom vytváraní zdrojov?

sobes.tech AI

Odpoveď od AI

Terraform používa prístup "zničiť a vytvoriť" (destroy and create).

V prípade, že je potrebná úplná aktualizácia alebo zmena zdroja, ktorý nie je možné aktualizovať na mieste (in-place update), Terraform vykoná nasledovné kroky:

  1. Zničenie existujúceho zdroja: Terraform odstráni zdroj z infraštruktúry volaním príslušného API poskytovateľa.
  2. Vytvorenie nového zdroja: Po úspešnom zničení Terraform vytvorí nový exemplár zdroja s novými parametrami.

Toto sa deje, keď zmeny v konfigurácii Terraform vyžadujú úplnú výmenu zdroja. Napríklad, zmena typu podsiete v cloude (z verejnej na súkromnú), čo nie je podporované in-place aktualizáciou poskytovateľa. Terraform určuje potrebu tohto prístupu pri spustení príkazu terraform plan. Vo výstupe plánu bude jasne uvedené, že zdroj bude zničený a znovu vytvorený.

// Príklad zdroja, ktorý môže byť znovu vytvorený pri zmene určitých atribútov
resource "aws_instance" "example" {
  ami           = "ami-0abcdef1234567890" # Zmena AMI zvyčajne vyžaduje znovuvytvorenie
  instance_type = "t2.micro"           # Zmena typu inštancie môže tiež vyžadovať znovuvytvorenie
  subnet_id     = "subnet-0123456789abcdef0" // Zmena ID podsiete takmer vždy vyžaduje znovuvytvorenie

  tags = {
    Name = "ExampleInstance"
  }
}

Príklad výstupu terraform plan, ktorý naznačuje znovuvytvorenie:

Plan: 1 pridať, 0 zmeniť, 1 zničiť.

Terraform vykoná nasledovné akcie:

  # aws_instance.example bude zničený
  - resource "aws_instance" "example" {
      - ami                    = "ami-old-id" -> null
      - arn                    = "arn:aws:ec2:..." -> null
      ... (ďalšie atribúty)
    }

  # aws_instance.example bude vytvorený
  + resource "aws_instance" "example" {
      + ami           = "ami-new-id"
      + instance_type = "t2.micro"
      + subnet_id     = "subnet-0123456789abcdef0"
      ... (ďalšie atribúty)
    }