Terraform을 사용하면 Atlas Terraform 제공자 와 함께 MongoDB Atlas 인프라를 코드로 관리 수 있습니다. Atlas Terraform 제공자 는 Atlas 인프라를 코드로 프로비저닝, 관리 및 제어하는 프로세스 를 간소화하여 인프라 배포를 자동화합니다.
이 가이드 기존 MongoDB Atlas 조직 에서 Atlas cluster를 생성하고 제거하는 방법을 설명합니다.
참고
Atlas Terraform 제공자 Atlas 프로젝트 및 리전 에서 지원하는 모든 MongoDB 버전을 지원합니다. 클러스터의 MongoDB 버전을 변경하는 방법을 학습 메이저 버전 업그레이드를 참조하세요.
테스트 환경을 구성한 후에는 MongoDB 및 HashiCorp의 추가 리소스 를 사용하여 Terraform 관리형 인프라를 계속 실험해 보세요.
Atlas Infinite 클러스터는 Atlas Terraform 제공자 지원 . Atlas Infinite에 대해 자세히 학습 MongoDB Atlas Infinite: 개요를 참조하세요.
전제 조건
Terraform과 함께 MongoDB Atlas 를 배포하기 전에 다음을 수행해야 합니다.
Atlas 계정을 만듭니다.
인 조직 ID 를
Organization Owner얻습니다.팁
Atlas UI의 General Settings 아래에서 조직 ID를 찾을 수 있습니다.
서비스 계정(SA) 인증을 구성합니다. 조직 소유자 역할 조직 ID 보고, 서비스 계정을 관리 , 클러스터 및 기타 프로젝트 리소스를 만들거나 삭제 데 필요합니다.
Install Terraform을 설치합니다.
Terraform으로 MongoDB Atlas 배포
지원 파일을 채웁니다.
다음 콘텐츠를 provider.tf에 추가합니다:
provider "mongodbatlas" { client_id = var.client_id client_secret = var.client_secret }
다음 콘텐츠를 variables.tf에 추가합니다:
variable "client_id" { description = "Atlas Service Account client ID" type = string } variable "client_secret" { description = "Atlas Service Account client secret" type = string sensitive = true } variable "org_id" { description = "Atlas organization ID" type = string }
다음 콘텐츠를 versions.tf에 추가합니다:
terraform { required_providers { mongodbatlas = { source = "mongodb/mongodbatlas" version = "~> 2.2" } } required_version = "~> 1.0" }
참고
Atlas 서비스 계정 클라이언트 ID 와 클라이언트 시크릿은 시크릿입니다.환경 변수로 저장하는 것이 좋습니다.
main.tf 콘텐츠를 구성합니다.
참고
다음 예시 프로젝트 모듈을 사용하여 프로젝트 만들고 mongodbatlas_advanced_cluster 리소스 사용하여 무료 클러스터 만듭니다.
main.tf 파일 에 다음 콘텐츠를 추가합니다.
module "project" { source = "terraform-mongodbatlas-modules/project/mongodbatlas" name = "tenant-example-project" org_id = var.org_id } resource "mongodbatlas_advanced_cluster" "this" { project_id = module.project.id name = "TenantCluster" cluster_type = "REPLICASET" replication_specs = [ { region_configs = [ { provider_name = "TENANT" backing_provider_name = "AWS" region_name = "US_EAST_1" priority = 7 electable_specs = { instance_size = "M0" } } ] } ] }
다른 cloud 제공자 또는 리전 과 함께 작업하는 경우 환경에 맞게 다음 필드를 업데이트 할 수 있습니다.
필드 | 새 값 |
|---|---|
| 제공자. 가능한 값은 |
| 사용할 수 있는 모든 리전은 클라우드 제공자 및 리전 을 참조하세요. |
중요
전용 클러스터 생성할 때 mongodbatlas_advanced_cluster 리소스 에 database_edition를 설정하다 수 있습니다. 나중에 변경할 수 없으며 전용 클러스터 무료 또는 Flex 클러스터 로 다시 확장하다 할 수 없습니다. database_edition는 이 예시 의 M0 클러스터 와 같은 무료 클러스터와 Flex 클러스터에는 사용할 수 없습니다.
mongodbatlas_advanced_cluster 리소스 와 단수형(mongodbatlas_advanced_cluster) 및 복수형(mongodbatlas_advanced_clusters) 데이터 소스는 모두 database_edition 및 읽기 전용 effective_database_edition 속성을 노출합니다. database_edition는 선택 사항이므로, 직접 설정하다 하지 않았더라도 effective_database_edition를 사용하여 Atlas 할당한 에디션을 확인하세요.
Atlas Infinite에서 전용 클러스터 생성하려면 다음 예시 와 같이 database_edition를 "INFINITE"로 설정하다 하고 auto_scaling에서 compute_enabled를 설정하다 .
resource "mongodbatlas_advanced_cluster" "infinite" { project_id = module.project.id name = "InfiniteCluster" cluster_type = "REPLICASET" database_edition = "INFINITE" replication_specs = [ { region_configs = [ { provider_name = "AWS" priority = 7 region_name = "US_EAST_1" electable_specs = { instance_size = "M10" node_count = 2 } auto_scaling = { compute_enabled = true compute_max_instance_size = "M60_GEN_2" storage_config = { shard_size_limit_gb = 10240 } } } ] } ] }
전용 Atlas Infinite 클러스터는 REPLICASET 클러스터 유형만 지원 .
compute_max_instance_size compute_enabled이 true일 때 필요합니다. M30+ Atlas Infinite 클러스터는 AWS Gen2에서만 사용할 수 있으므로 M60_GEN_2에서와 같이 계층 이름에 _GEN_2를 추가합니다. 자세한 학습 은 Gen2 전용 클러스터를 참조하세요.
Atlas Infinite 클러스터 에는 프라이머리 와 대기 노드, 이렇게 두 개의 선택 가능한 컴퓨팅 노드가 있으므로 node_count을 2로 설정하다 .자세한 학습 은 복제 및 페일오버를 참조하세요.
더 많은 읽기를 제공 하거나 운영 워크로드 에서 분석 쿼리를 격리하려면 동일한 region_configs 객체 에서 read_only_specs 또는 electable_specs와 함께 analytics_specs를 설정하여 읽기 전용 또는 분석 노드를 추가합니다. 자세히 학습 Atlas Infinite 클러스터의 워크로드 격리를 참조하세요.
storage_config.shard_size_limit_gb storage_config을 포함하는 경우에만 필요합니다. storage_config를 생략하면 Atlas 기본값 최대 저장 한도를 적용합니다. 자세한 학습 은 최대 저장 용량 한도를 참조하세요.
참고
storage_config.shard_size_limit_gb 클러스터 가 저장 수 있는 최대 데이터 양을 설정합니다. 자세한 학습 은 Terraform 제공자 설명서를 참조하세요.
배포서버 확인
terraform apply 가 완료되면 클러스터가 배포되었는지 확인합니다.
새 클러스터가 프로젝트 아래 Atlas UI에 표시됩니다.
main.tf에 출력 값을 추가한 경우 연결 문자열이 Terraform 출력에 표시됩니다.
MongoDB Atlas 인스턴스 종료
Terraform 디렉토리 에 생성된 모든 리소스를 삭제 하려면 다음 명령을 실행 합니다.
terraform destroy
경고
모든 리소스를 삭제 하면 복구할 수 없습니다.
메시지가 Do you really want to destroy all resources? 표시되면 을 yes 입력합니다.
다음 단계
클러스터를 배포한 후 다음을 수행할 수 있습니다.
전용 클러스터 로 확장 : 더 완전한 구성을 보려면 클러스터 모듈 및 Atlas Terraform Provider 설명서를 검토하세요.
클러스터에 연결합니다: 클러스터 객체에서 또는 Terraform 출력 값에서 연결 문자열을 사용합니다.
추가 리소스: