
Terraform을 운용하고 있으면 리포지토리를 떠나 모듈을 사용하고 싶어지는 경우가 있을 것입니다.
조직 내에서 module을 사용하고자 하는 경우, 리포지토리를 Public 상태로 전환하는 것애 대해서는 쉽지 않은 결정일 수 있습니다.
Public에 module을 게시하는 것도 하나의 방법이 될 수 있지만, 조직내에서만 사용하는 리포지토리를 Public으로 전환하는 것에 대해서 신중히 고려해야 할 수 있습니다.
이런 경우에는 Terraform Cloud의 Private Registry가 대안이 될 수 있습니다.
Private Registry는 Terraform Cloud의 Free 플랜에서도 사용할 수 있습니다.
https://www.hashicorp.com/products/terraform/pricing
Terraform Cloud의 장점은 다음과 같습니다.
Terraform Cloud의 단점은 다음과 같습니다.
Terraform은 모듈을 게시하여 다른 리포지토리에서도 공개한 모듈을 사용하는 것이 가능합니다. 모듈을 공개하는 방식으로는 크게 두 가지가 있습니다.
모듈을 Public에 게시하는 경우 Terraform Registry를 사용할 수 있습니다. Terraform Registry에 공개된 모듈은 전 세계의 모든 사용자가 사용할 수 있습니다. Terraform Repository를 사용하기 위한 조건은 다음과 같습니다.
Terraform Registry에 가능한 기능은 다음과 같습니다.
Private Registry 첫 번째 특징의 경우 리포지토리의 설정을 Private으로 유지하면서 조직에 모듈을 게시하는 방법이고, 두 번째 방법의 경우 Public 모듈을 이용할 수 있다는 것입니다. 사전에 팀 내에서 승인된 Public 모듈을 등록함으로써 모듈을 승인해야 하는 수고를 덜 수 있습니다.
Registry → Public → Module
<terraform>-<provider>-<name>의 명명 규칙을 따르지 않을 경우, 이용에 제약이 있을 수 있습니다.

Token이 없으면 Terraform Cloud의 Private Registry에서 module을 가져올 수 없습니다. terraform login에서 Token을 이미 만든 경우 Private Registry에서 module을 가져오는 것이 가능합니다.
등록된 모듈을 사용해야 하는 경우, 등록된 모듈이 있는 샘플 리포지토리를 Fork하고 local 환경으로 Clone합니다.
provider "aws" {
region = var.region
}
module "s3-webapp" {
source = "app.terraform.io/[Oragnization名]/s3-webapp/aws"
name = var.name
region = var.region
prefix = var.prefix
version = "1.0.0"
}
좋은 글 감사합니다. 자주 올게요 :)