provider.tf 에서 설정한 required_providers 항목은 기본적으로 퍼블릭에 위치한 registry.terraform.io 에서 가져온다. 하지만 폐쇄망에서 내가 만든 Bundle을 이용하여 Provider를 써야만 하는 경우가 생길 수 있다.
이러한 경우 아래와 같이 .terraformrc 혹은 terraform.rc 파일을 해당 경로에 생성 및 Provider_Installation 설정으로 해결 할 수 있다.
.terraformrcterraform.rc# ~/.terraformrc
provider_installation {
filesystem_mirror {
path = "/home/ec2-user/providers/plugins"
include = ["*/*"] # registry.terrafom.io/*/*
}
}
HOSTNAME / NAMESPACE / TYPE / VERSION / TARGET*/* : registry.terraform.io/*/* 와 같다. (HOSTNAME default : registry.terraform.io)위와 같이 ~/.terraformrc 설정한 이후, terraform init 을 한 디렉토리의 .terraform 에서 살펴보면 filesystem_mirror - path 에 있는 provider를 가져온다.


# C:/Users/Administrator/AppData/Roaming/terraform.rc
provider_installation {
filesystem_mirror {
path = "C:/terraform_1.7.5-bundle2024042505_windows_amd64/plugins"
include = ["*/*"] # registry.terrafom.io/hashicorp/*
}
}
다른 OS간의 CLI Driven으로 TFE가 연동되는 경우,
terraform provider lock -platform=linux_amd64 설정을 통해 .terraform.lock.hcl 파일에 Provider와 관련 설정이 필요하다terraform plan
│ Error: Failed to install provider
│
│ Error while installing hashicorp/aws v5.45.0: the local package for
│ registry.terraform.io/hashicorp/aws 5.45.0 doesn't match any of the
│ checksums previously recorded in the dependency lock file (this might be
│ because the available checksums are for packages targeting different
│ platforms); for more information:
│ https://www.terraform.io/language/provider-checksum-verification
TFE의 Workspace Bundle 설정은 Linux_amd64 , CLI Driven하는 PC는 Windows_amd64로 OS가 달라 Checksum 하는 패키지가 상이하여 나타나는 에러. 이는 CLI Driven만의 특성으로, .terraform.lock.hcl 파일에 linux_amd64에 대한 Provider Hash 값을 설정해주면 된다
.terraform.lock.hcl에 Windows에 대한 provider Hashes 값이 아래와 같이 생성.# .terraform.lock.hcl
provider "registry.terraform.io/hashicorp/aws" {
version = "5.45.0"
constraints = "5.45.0"
hashes = [
"h1:ihJwo9TmCngWRqLb/+kBeLuvAWMjLu/WV0zGSvypBv4=",
]
}
terraform providers lock -platform=linux_amd64 입력.terraform.lock.hcl Hashes 확인provider "registry.terraform.io/hashicorp/aws" {
version = "5.45.0"
constraints = "5.45.0"
hashes = [
"h1:4Vgk51R7iTY1oczaTQDG+DkA9nE8TmjlUtecqXX6qDU=",
"h1:ihJwo9TmCngWRqLb/+kBeLuvAWMjLu/WV0zGSvypBv4=",
"zh:1379bcf45aef3d486ee18b4f767bfecd40a0056510d26107f388be3d7994c368",
"zh:1615a6f5495acfb3a0cb72324587261dd4d72711a3cc51aff13167b14531501e",
"zh:18b69a0f33f8b1862fbd3f200756b7e83e087b73687085f2cf9c7da4c318e3e6",
"zh:2c5e7aecd197bc3d3b19290bad8cf4c390c2c6a77bb165da4e11f53f2dfe2e54",
"zh:3794da9bef97596e3bc60e12cdd915bda5ec2ed62cd1cd93723d58b4981905fe",
"zh:40a5e45ed91801f83db76dffd467dcf425ea2ca8642327cf01119601cb86021c",
"zh:4abfc3f53d0256a7d5d1fa5e931e4601b02db3d1da28f452341d3823d0518f1a",
"zh:4eb0e98078f79aeb06b5ff6115286dc2135d12a80287885698d04036425494a2",
"zh:75470efbadea4a8d783642497acaeec5077fc4a7f3df3340defeaa1c7de29bf7",
"zh:8861a0b4891d5fa2fa7142f236ae613cea966c45b5472e3915a4ac3abcbaf487",
"zh:8bf6f21cd9390b742ca0b4393fde92616ca9e6553fb75003a0999006ad233d35",
"zh:9b12af85486a96aedd8d7984b0ff811a4b42e3d88dad1a3fb4c0b580d04fa425",
"zh:ad73008a044e75d337acda910fb54d8b81a366873c8a413fec1291034899a814",
"zh:bf261713b0b8bebfe8c199291365b87d9043849f28a2dc764bafdde73ae43693",
"zh:da3bafa1fd830be418dfcc730e85085fe67c0d415c066716f2ac350a2306f40a",
]
}
terraform plan 정상 확인