Sobes.tech
Middle+

Əgər siz maşının vəziyyətini (state) silmisinizsə və onu provayderə yükləmisinizsə, terraform init əmri icra edilərkən yüklənəcəkmi? Yoxsa bu halda nə baş verəcək?

sobes.tech Süni İntellekt

AI-dan cavab

Xeyr, terraform init əməliyyatını icra etdikdə, vəziyyət yerli diskdən silindikdən və provayderə köçürüldükdən sonra avtomatik olaraq maşına yüklənməyəcək.

terraform init əsasən aşağıdakı əməliyyatları yerinə yetirir:

  • Uzaqda vəziyyətin saxlanması üçün konfiqurasiya edilmiş backend-i (məsələn, S3, Azure Blob Storage, Google Cloud Storage) işə salır.
  • Konfiqurasiyada göstərilən provayderlərin pluginlərini yükləyir.
  • Əgər istifadə olunursa, modulları yükləyir.

Yerli vəziyyət faylı (terraform.tfstate) yerli maşından silinir. Terraform yalnız konfiqurasiya edilmiş backend-də saxlanılan vəziyyətdən istifadə edəcək.

Nə baş verəcək:

  1. terraform init icra edilərkən, Terraform konfiqurasiyanı oxuyacaq və konfiqurasiya olunmuş backend-in olub-olmadığını müəyyən edəcək.
  2. Bu backend-i işə salacaq və uzaq saxlama ilə əlaqə quracaq.
  3. Yerli maşında yeni terraform.tfstate faylı yaradılmayacaq. Terraform birbaşa uzaq vəziyyətlə işləyəcək.

Sonrakı icralarda (terraform plan, terraform apply, terraform destroy) Terraform infrastrukturun hazırkı vəziyyətini əldə etmək üçün uzaq backend-ə müraciət edəcək.

S3 backend konfiqurasiyası nümunəsi:

# S3 backend konfiqurasiyası
terraform {
  backend "s3" {
    bucket = "my-terraform-state-bucket"  # S3 bucket-in adı
    key    = "path/to/my/state.tfstate"    # Bucket-də obyektin açarı
    region = "us-east-1"                  # S3 bucket-in bölgəsi
    # Əlavə seçimlər, məsələn, şifrələmə, kilidləmək üçün dynamodb cədvəli
  }
}

# Resurs nümunəsi
resource "aws_instance" "example" {
  ami           = "ami-0abcdef1234567890"
  instance_type = "t2.micro"

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