2024년 4월 22일부터 Terraform Cloud의 이름이 HCP Terraform으로 변경되었습니다.
하기 내용에서는 Terraform Cloud 이름 대신 HCP Terraform 이름으로 대체하여 설명을 진행하도록 하겠습니다.
1. Module Registry란?
HCP Terraform의 Registry는 Terraform Module을 중앙에서 관리하고 공유할 수 있는 Registry입니다.
Module Registry를 사용하여 인프라 코드 재사용성을 극대화하고, Module을 쉽게 관리할 수 있습니다.
주요 기능
- 중앙 관리
- Module을 중앙에서 관리하고 공유하여 기업에서의 일관된 인프라 배포가 가능합니다.
- Public Registry
- Terraform Registry에 등록된 수많은 공개 Module을 사용할 수 있으며, 커뮤니티에서 검증된 Module을 손쉽게 활용이 가능합니다.
- Private Registry
- 사용자나 조직이 직접 만든 Module을 Private Registry에 등록하여 팀 내에서 공유하고 재사용할 수 있습니다.
Module Registry의 장점
- 공통된 인프라 구성 요소를 모듈화하여 여러 프로젝트에서 재사용할 수 있습니다. (재사용성)
- 모듈을 사용하면 인프라 구성의 일관성을 유지할 수 있습니다. (일관성)
- 모듈의 버전을 관리하여 업데이트나 수정이 용이합니다. (관리 용이성)
- 팀 내에서 모듈을 공유하고 협업할 수 있으며, 특히 기업 환경에서 팀 간 협업과 코드 일관성을 유지하는 데 큰 도움이 됩니다. (협업)
2. Public Registry의 Module을 HCP Terraform Registry에 등록하여 사용하기
Public Registry에 등록되어 있는 여러 Module을 사용하는 경우 사용자나 팀 또는 기업이 어떤 module을 사용하고 있는지에 대한 파악이 쉽지 않습니다.
HCP Terraform의 Registry에는 Private Module을 등록하여 사용도 가능하지만, Public Registry 모듈 또한 등록하여 관리할 수 있습니다.
1. HCP Terraform의 화면의 왼쪽 탭에서 Registry를 클릭 후 Search public registry를 클릭합니다.
2. 사용하고자 하는 Module의 이름을 검색합니다. (예시 : vpc)
3. Add to HCP Terraform 을 클릭 후 내 Organization에 모듈로 등록합니다.
4. 사용하고 있는 Organization의 Registry에 해당 모듈이 등록되어 있는 것을 확인합니다.
3. HCP Terraform Registry에 Private Module 등록 및 사용하기
사전 준비
- VCS Provider 연동(GitHub, GitLab, Bitbucket등)
1. Terraform Module Code를 작성합니다. (생략)
2. Module Code를 GitHub에 Push합니다.
- Module로 등록할 Repository의 이름 규칙
- Terraform Module을 등록하기 위해서는 Repository 이름을 다음과 같은 형식으로 생성해야 합니다.
- terraform-<PROVIDER>-<NAME>
- 예를 들어, 팀내 VPC를 포함한 네트워크 세팅 Module의 경우 terraform-aws-network-common 와 같은 형식으로 생성하면 됩니다.
- 위와 같은 형식을 통해 Provider와 Name을 적어 Module을 등록하기 때문에 관리와 검색을 편하게 할 수 있습니다.
3. HCP Terraform 에 Module을 등록합니다.
- HCP Terraform 화면의 왼쪽 탭에서 Registry -> Publish -> Module을 클릭합니다.
4. Module Code가 있는 VCS를 선택합니다.
5. Module Code Repository를 선택합니다.
6. Module의 Publishing Type을 선택 후 Publish module을 클릭합니다.
7. HCP Terraform의 Registry에 등록된 Module을 확인합니다.
8. 등록된 Module을 사용하기 위해 Module 사용 Code를 작성합니다.
- HCP Terraform에 Module을 등록하면 오른쪽 Usage Instructions를 통해 간단한 Module 사용법을 확인할 수 있습니다.
module "network" {
source = "app.terraform.io/dpt-mzc/network-common/aws"
version = "0.1.1"
# Required Inputs
project_name = "dpt"
subnet_name = "sbn"
env = "common"
vpc_name = "vpc"
igw_name = "igw"
natgw_name = "nat"
rt_name = "rt"
vpc_cidr = "10.0.0.0/16"
pub_cidr = ["10.0.1.0/24", "10.0.2.0/24"]
pri_cidr = ["10.0.3.0/24", "10.0.4.0/24"]
db_cidr = ["10.0.5.0/24", "10.0.6.0/24"]
}
- 위와 같이 Module 사용 Code를 작성 후 새로운 GitHub Repository에 Push합니다.(과정 생략)
9. Workspace 생성에서 Module 사용 Code가 있는 Repository를 선택하여 생성을 진행합니다.
10. Workspace에 Variables에 AWS Credential을 기입합니다.
11. Workspace의 오른쪽 상단의 New run을 클릭하여 Terraform apply를 진행합니다.
'Terraform Cloud(HCP Terraform)' 카테고리의 다른 글
HCP Terraform(Terraform Cloud)의 Team 권한(RBAC) 설정 (1) | 2024.05.26 |
---|---|
HCP Terraform(Terraform Cloud)의 No-code provisioning (0) | 2024.05.19 |
HCP Terraform(Terraform Cloud)의 VCS연동(Github, GitLab, Bitbucket..) (2) | 2024.05.19 |
HCP Terraform(Terraform Cloud)의 Variable Sets (0) | 2024.05.15 |
HCP Terraform(Terraform Cloud)의 Project & Workspace (0) | 2024.05.06 |