init tải provider + module về .terraform/, cấu hình backend, và sinh hoặc cập nhật .terraform.lock.hcl. Lock file phải commit.
bash
terraform init # lần đầu, hoặc khi thêm provider/module
terraform init -upgrade # cho phép nâng provider trong ràng buộc version
terraform init -migrate-state # khi đổi backendLock file ghi version chính xác + checksum của từng provider.
Không commit thì mỗi máy resolve ra một version khác, plan khác nhau giữa laptop và CI, rồi cãi nhau ai đúng.
hcl
provider "registry.terraform.io/hashicorp/aws" {
version = "5.42.0"
constraints = "~> 5.40"
hashes = ["h1:..."]
}Chỗ cần cẩn thận là -migrate-state: khi đổi backend, Terraform hỏi có copy state sang chỗ mới không.
Trả lời sai là mất dấu toàn bộ hạ tầng đang chạy, nên backup state trước khi đổi backend.