terraform provider_installation

scvit·2024년 5월 2일

provider installation

provider.tf 에서 설정한 required_providers 항목은 기본적으로 퍼블릭에 위치한 registry.terraform.io 에서 가져온다. 하지만 폐쇄망에서 내가 만든 Bundle을 이용하여 Provider를 써야만 하는 경우가 생길 수 있다.

이러한 경우 아래와 같이 .terraformrc 혹은 terraform.rc 파일을 해당 경로에 생성 및 Provider_Installation 설정으로 해결 할 수 있다.

  • Linux : 사용자 홈 경로 - .terraformrc
  • Windows : 사용자 %APPDATA& 디렉토리 - terraform.rc

Linux


# ~/.terraformrc

provider_installation {
  filesystem_mirror {
    path    = "/home/ec2-user/providers/plugins"
    include = ["*/*"] # registry.terrafom.io/*/*
  }
}
  • path : provider bundle을 압축해제한 플러그인이 있는 경로
  • include : path 하위에 있는 provider들 중에 가져다 쓸 provider 설정
    • HOSTNAME / NAMESPACE / TYPE / VERSION / TARGET
    • */* : registry.terraform.io/*/* 와 같다. (HOSTNAME default : registry.terraform.io)

위와 같이 ~/.terraformrc 설정한 이후, terraform init 을 한 디렉토리의 .terraform 에서 살펴보면 filesystem_mirror - path 에 있는 provider를 가져온다.

Windows

  • 실행 - %APPDATA%

스크린샷 2024-04-25 오후 2.25.18

  • 필요시 숨김폴더 보이게 설정

스크린샷 2024-04-25 오후 3.06.26

# 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/*
  }
}
  • path : window용 bundle을 압축해제한 후 plugin 디렉토리 경로
  • include : Linux와 동일

다른 OS간의 CLI Driven으로 TFE가 연동되는 경우,

  1. PC의 OS , arch 에 맞는 Bundle
  2. terraform provider lock -platform=linux_amd64 설정을 통해 .terraform.lock.hcl 파일에 Provider와 관련 설정이 필요하다

.terraform.lock.hcl 관련 에러

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 값을 설정해주면 된다

  1. 처음 terraform init을 입력하면 .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=",
  ]
}
  1. terraform providers lock -platform=linux_amd64 입력
  2. .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",
  ]
}
  1. terraform plan 정상 확인

0개의 댓글