Sobes.tech
Middle+

Ak ste odstránili stav (state) stroja a ste ho nahrali na poskytovateľa, bude sa pri spustení príkazu terraform init načítavať? Ale čo sa stane v tomto prípade?

sobes.tech AI

Odpoveď od AI

Nie, pri spustitvi terraform init se stanje ne bo samodejno naložilo na stroj po tem, ko je bilo odstranjeno s lokalnega diska in preneseno na ponudnika.

terraform init izvaja predvsem naslednje dejanja:

  • Inicializira backend, ki je bil konfiguriran za oddaljeno shranjevanje stanja (npr. S3, Azure Blob Storage, Google Cloud Storage).
  • Prenese vtičnike ponudnikov, navedenih v konfiguraciji.
  • Prenese module, če se uporabljajo.

Datoteka lokalnega stanja (terraform.tfstate) se odstrani s lokalnega stroja. Terraform bo uporabljal samo stanje, shranjeno v konfiguriranem backendu.

Kaj se bo zgodilo:

  1. Ob izvajanju terraform init bo Terraform prebral konfiguracijo in določil, ali je konfiguriran backend.
  2. Inicializira ta backend, vzpostavi povezavo z oddaljenim shranješčem.
  3. Ne bo ustvarjena nova lokalna datoteka terraform.tfstate na stroju. Terraform bo neposredno delal z oddaljenim stanjem.

Pri naslednjih izvedbah (terraform plan, terraform apply, terraform destroy) bo Terraform dostopal do oddaljenega backend-a za pridobitev trenutnega stanja infrastrukture.

Primer konfiguracije backend-a S3:

# Konfiguracija backend-a S3
terraform {
  backend "s3" {
    bucket = "my-terraform-state-bucket"  # Ime S3 košare
    key    = "path/to/my/state.tfstate"    # Ključ objekta v košari
    region = "us-east-1"                  # Regija S3 košare
    # Dodatne možnosti, npr. šifriranje, tabela dynamodb za zaklepe
  }
}

# Primer vira
resource "aws_instance" "example" {
  ami           = "ami-0abcdef1234567890"
  instance_type = "t2.micro"

  tags = {
    Name = "example-instance"
  }
}