Terraform을 사용하여 템플릿에서 Atlas 클러스터 만들기
이 페이지에서는 Visual Studio Code용 MongoDB 확장에 포함된 Terraform 파일용 Atlas 템플릿을 사용하여 공유 계층 Atlas 클러스터를 생성하는 방법을 간략하게 설명합니다.
템플릿을 로드한 후 클러스터를 구성하고 Atlas 계정에 대한 세부 정보를 제공합니다. 그런 다음 Terraform 명령을 사용하여 Atlas 클러스터를 계획, 적용 및 제거합니다.
전제 조건
Visual Studio Code용 MongoDB 확장에 포함된 Terraform 파일용 Atlas 템플릿을 사용하려면 먼저 다음을 수행해야 합니다.
절차
템플릿을 사용하여 Atlas Terraform 파일 생성
VS Code 확장에 포함된 Terraform 파일용 Atlas 템플릿을 사용하여 Atlas 클러스터를 구성합니다.
main.tf
파일에 atlas
를 입력한 후 Enter 또는 Return 키를 누릅니다.
VSCode용 MongoDB 확장은 MongoDB Atlas Terraform 공급자를 사용하여 샤드 계층 Atlas 클러스터를 만드는 예시 구성으로 파일을 채웁니다.
Atlas Terraform 구성을 업데이트하여 클러스터를 구성합니다.
커서를 옮겨서 mongodbatlas_project
리소스의 name
인수 값을 선택하세요.
클러스터를 구성하려면 다음 인수의 값을 입력하세요.
팁
업데이트해야 하는 템플릿에서 다음 인수를 선택하려면 Tab(탭) 키를 누르세요.
속성 | 값 |
---|---|
mongodbatlas_project .name | 이 구성으로 생성되는 Atlas 프로젝트의 이름 |
mongodbatlas_cluster .name | 이 구성으로 생성되는 Atlas 클러스터 이름 |
mongodbatlas_cluster .backing_provider_name | 이 구성으로 생성되는 Atlas 클러스터가 호스팅되는 제공자입니다. 허용되는 값 중 하나를 선택합니다.
|
mongodbatlas_cluster .provider_region_name | 이 구성으로 생성된 Atlas 클러스터가 배포되는 리전입니다. 배포하려는 인스턴스 크기의 Atlas 클러스터가 선택한 리전에서 지원되는지 확인하세요. 이 템플릿은 기본적으로 공유 계층 클러스터, 즉 각 제공자 및 리전이 지원하는 인스턴스 크기에 대한 자세한 내용은 Atlas 설명서에서 다음 섹션을 참조하세요. |
mongodbatlas_cluster .provider_instance_size_name | 이 구성으로 생성되는 Atlas 클러스터의 인스턴스 크기입니다. 다음 중 1가지:
각 제공자 및 리전이 지원하는 인스턴스 크기에 대한 자세한 내용은 Atlas 설명서에서 다음 섹션을 참조하세요. |
mongodbatlas_cluster .disk_size_gbs | 이 구성으로 생성되는 Atlas 클러스터의 디스크 크기입니다. 인스턴스 크기에 대한 최대 디스크 크기와 같거나 작은 값을 제공해야 합니다.
각 인스턴스 크기에 대해 각 제공자가 지원하는 디스크 크기에 대한 자세한 내용은 Atlas 설명서의 다음 섹션을 참조하세요. |
local
변수를 업데이트합니다.
경고
local
변수에는 민감 정보가 담겨 있습니다. 이러한 값을 공개적으로 사용 가능한 리포지토리에 체크인하지 마세요.
다음 local
변수의 값을 입력하세요.
변수 | 값 |
---|---|
| Atlas 공개 API 키 |
| Atlas 비공개 API 키 |
| 프로젝트를 만들려는 Atlas 조직 ID입니다. |
| Atlas가 클러스터를 위해 생성하는 MongoDB database 사용자의 사용자 이름입니다. |
|
|
| Atlas 클러스터에 액세스할 수 있는 IP 주소 또는 CIDR 블록입니다. |
예시
입력 변수 파일을 사용하여 보안 극대화하기
보안을 극대화하려면 다음 단계를 수행하는 것이 좋습니다.
입력 변수 파일에
local
변수를 정의합니다.variable "mongodb_atlas_api_pub_key" { default = "my-public-key" } variable "mongodb_atlas_api_pri_key" { default = "my-private-key" } 리포지토리에서 입력 변수 파일을 제외하세요. 그 예로 리포지토리의
.gitignore
파일에 파일 이름을 추가하세요.main.tf
파일 내 입력 변수 파일에 있는 변수의 앞에vars.
을(를) 붙여 해당 변수를 참조하세요.provider "mongodbatlas" { public_key = vars.mongodb_atlas_api_pub_key private_key = vars.mongodb_atlas_api_pri_key }
main.tf
파일에 구성 옵션 선택 사항을 추가합니다.
지원되는 구성 옵션의 전체 목록은 MongoDB Atlas Terraform 제공자 설명서를 참조하세요.
참고
공유 계층 Atlas 클러스터는 MongoDB Atlas Terraform 제공자가 제공하는 모든 구성을 지원하지는 않습니다. 지원되지 않는 구성 목록은 Atlas 설명서를 참조하세요.
Terraform을 사용하여 Atlas 클러스터 만들기
템플릿을 사용하여 Terraform 파일을 생성한 후 Atlas 클러스터를 만듭니다.
terraform init
명령을 실행하여 필요한 제공자를 설치합니다.
terraform init
다음 출력은 MongoDB Atlas Terraform Provider가 설치되어 사용할 준비가 되었음을 나타냅니다.
1 Initializing the backend... 2 3 Initializing provider plugins... 4 - Checking for available provider plugins... 5 - Downloading plugin for provider "mongodbatlas" (terraform-providers/mongodbatlas) 0.5.1... 6 7 The following providers do not have any version constraints in configuration, 8 so the latest version was installed. 9 10 To prevent automatic upgrades to new major versions that may contain breaking 11 changes, it is recommended to add version = "..." constraints to the 12 corresponding provider blocks in configuration, with the constraint strings 13 suggested below. 14 15 * provider.mongodbatlas: version = "~> 0.5" 16 17 Terraform has been successfully initialized!
terraform plan
명령을 실행하여 구성을 적용했을 때 어떤 일이 발생하는지 확인합니다.
terraform plan
다음 출력은 Terraform 구성을 적용했을 때 어떻게 되는지를 보여줍니다.
1 Refreshing Terraform state in-memory prior to plan... 2 The refreshed state will be used to calculate this plan, but will not be 3 persisted to local or remote state storage. 4 5 6 ------------------------------------------------------------------------ 7 8 An execution plan has been generated and is shown below. 9 Resource actions are indicated with the following symbols: 10 + create 11 12 Terraform will perform the following actions: 13 14 mongodbatlas_cluster.my_cluster will be created 15 + resource "mongodbatlas_cluster" "my_cluster" { 16 + advanced_configuration = (known after apply) 17 + auto_scaling_disk_gb_enabled = false 18 + backing_provider_name = "AWS" 19 + backup_enabled = false 20 + bi_connector = (known after apply) 21 + cluster_id = (known after apply) 22 + cluster_type = (known after apply) 23 + connection_strings = (known after apply) 24 + disk_size_gb = 2 25 + encryption_at_rest_provider = (known after apply) 26 + id = (known after apply) 27 + mongo_db_major_version = "4.2" 28 + mongo_db_version = (known after apply) 29 + mongo_uri = (known after apply) 30 + mongo_uri_updated = (known after apply) 31 + mongo_uri_with_options = (known after apply) 32 + name = "atlasClusterName" 33 + num_shards = 1 34 + paused = (known after apply) 35 + pit_enabled = (known after apply) 36 + project_id = (known after apply) 37 + provider_backup_enabled = false 38 + provider_disk_iops = (known after apply) 39 + provider_disk_type_name = (known after apply) 40 + provider_encrypt_ebs_volume = (known after apply) 41 + provider_instance_size_name = "M2" 42 + provider_name = "TENANT" 43 + provider_region_name = "providerRegionName" 44 + provider_volume_type = (known after apply) 45 + replication_factor = (known after apply) 46 + snapshot_backup_policy = (known after apply) 47 + srv_address = (known after apply) 48 + state_name = (known after apply) 49 50 + labels { 51 + key = (known after apply) 52 + value = (known after apply) 53 } 54 55 + replication_specs { 56 + id = (known after apply) 57 + num_shards = (known after apply) 58 + zone_name = (known after apply) 59 60 + regions_config { 61 + analytics_nodes = (known after apply) 62 + electable_nodes = (known after apply) 63 + priority = (known after apply) 64 + read_only_nodes = (known after apply) 65 + region_name = (known after apply) 66 } 67 } 68 } 69 70 mongodbatlas_database_user.my_user will be created 71 + resource "mongodbatlas_database_user" "my_user" { 72 + auth_database_name = "admin" 73 + id = (known after apply) 74 + password = (sensitive value) 75 + project_id = (known after apply) 76 + username = "jww" 77 + x509_type = "NONE" 78 79 + labels { 80 + key = (known after apply) 81 + value = (known after apply) 82 } 83 84 + roles { 85 + collection_name = (known after apply) 86 + database_name = "admin" 87 + role_name = "atlasAdmin" 88 } 89 } 90 91 mongodbatlas_project.my_project will be created 92 + resource "mongodbatlas_project" "my_project" { 93 + cluster_count = (known after apply) 94 + created = (known after apply) 95 + id = (known after apply) 96 + name = "atlasProjectName" 97 + org_id = "5d3716bfcf09a21576d7983e" 98 } 99 100 mongodbatlas_project_ip_whitelist.my_ipaddress will be created 101 + resource "mongodbatlas_project_ip_whitelist" "my_ipaddress" { 102 + aws_security_group = (known after apply) 103 + cidr_block = (known after apply) 104 + comment = "My IP Address" 105 + id = (known after apply) 106 + ip_address = "204.210.139.18" 107 + project_id = (known after apply) 108 } 109 110 Plan: 4 to add, 0 to change, 0 to destroy. 111 112 ------------------------------------------------------------------------ 113 114 Note: You didn't specify an "-out" parameter to save this plan, so Terraform 115 can't guarantee that exactly these actions will be performed if 116 "terraform apply" is subsequently run.
내용이 정확하다면 다음 단계로 넘어가세요.
terraform apply
명령을 실행하여 Terraform 구성에서 Atlas 클러스터를 생성합니다.
terraform apply
구성의 적용 여부를 묻는 메시지가 나타나면 yes
를 입력하세요.
참고
terraform apply
명령이 완료되기까지는 몇 분 정도 걸릴 수 있습니다.
Atlas 클러스터가 생성되면 다음과 같은 결과가 표시됩니다. VS Code 확장 프로그램을 사용하여 표시된 연결 문자열과 함께 이 배포에 대한 연결을 생성할 수 있습니다.
1 Apply complete! Resources: 4 added, 0 changed, 0 destroyed. 2 3 Outputs: 4 5 connection_strings = [ 6 [ 7 { 8 "aws_private_link" = {} 9 "aws_private_link_srv" = {} 10 "private" = "" 11 "private_srv" = "" 12 "standard" = "mongodb://myCluster-shard-00-00-xxxxx.mongodb.net:27017,myCluster-shard-00-01-xxxxx.mongodb.net:27017,myCluster-shard-00-02-xxxxx.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=myCluster-shard-0" 13 "standard_srv" = "mongodb+srv://myCluster-xxxxx.mongodb.net" 14 }, 15 ], 16 ]
Terraform을 사용하여 Atlas 클러스터 삭제
경고
클러스터를 삭제하면 이 클러스터에 저장된 데이터베이스, 컬렉션, 문서 및 해당 클러스터를 구성한 Terraform 구성에서 정의된 기타 모든 리소스가 폐기됩니다.
진행 시 유의하세요.
Atlas 클러스터를 삭제하려면 다음을 수행하세요.