Docs Menu
Docs Home
/
VS 코드용 MongoDB

Terraform을 사용하여 템플릿에서 Atlas 클러스터 만들기

이 페이지의 내용

  • 전제 조건
  • 절차

이 페이지에서는 Visual Studio Code용 MongoDB 확장에 포함된 Terraform 파일용 Atlas 템플릿을 사용하여 공유 계층 Atlas 클러스터를 생성하는 방법을 간략하게 설명합니다.

템플릿을 로드한 후 클러스터를 구성하고 Atlas 계정에 대한 세부 정보를 제공합니다. 그런 다음 Terraform 명령을 사용하여 Atlas 클러스터를 계획, 적용 및 제거합니다.

Visual Studio Code용 MongoDB 확장에 포함된 Terraform 파일용 Atlas 템플릿을 사용하려면 먼저 다음을 수행해야 합니다.

  • MongoDB for VS Code 확장 설치

  • Terraform 설치하기

  • Atlas 계정이 있습니다.

  • Atlas 조직이 있습니다.

  • Organization Owner 또는 Organization Project Creator 역할이 포함된 조직 API 키가 있습니다.

VS Code 확장에 포함된 Terraform 파일용 Atlas 템플릿을 사용하여 Atlas 클러스터를 구성합니다.

1
운영 체제
메서드
작업

Any

Visual Studio 코드 메뉴

File > New File

macOS

키보드 단축키

Command + N 누르기

Windows 및 Linux

키보드 단축키

Control + N 누르기

2

참고

main.tf Terraform 모듈의 엔트리 포인트에 권장되는 파일 이름입니다.

3

VSCode용 MongoDB 확장은 MongoDB Atlas Terraform 공급자를 사용하여 샤드 계층 Atlas 클러스터를 만드는 예시 구성으로 파일을 채웁니다.

4

커서를 옮겨서 mongodbatlas_project 리소스의 name 인수 값을 선택하세요.

클러스터를 구성하려면 다음 인수의 값을 입력하세요.

업데이트해야 하는 템플릿에서 다음 인수를 선택하려면 Tab(탭) 키를 누르세요.

속성
mongodbatlas_project
.name

이 구성으로 생성되는 Atlas 프로젝트의 이름

mongodbatlas_cluster
.name

이 구성으로 생성되는 Atlas 클러스터 이름

mongodbatlas_cluster
.backing_provider_name

이 구성으로 생성되는 Atlas 클러스터가 호스팅되는 제공자입니다. 허용되는 값 중 하나를 선택합니다.

  • AWS

  • AZURE

  • GCP

mongodbatlas_cluster
.provider_region_name

이 구성으로 생성된 Atlas 클러스터가 배포되는 리전입니다. 배포하려는 인스턴스 크기의 Atlas 클러스터가 선택한 리전에서 지원되는지 확인하세요.

이 템플릿은 기본적으로 공유 계층 클러스터, 즉 M2M5를 프로비저닝합니다.

각 제공자 및 리전이 지원하는 인스턴스 크기에 대한 자세한 내용은 Atlas 설명서에서 다음 섹션을 참조하세요.

mongodbatlas_cluster
.provider_instance_size_name

이 구성으로 생성되는 Atlas 클러스터의 인스턴스 크기입니다.

다음 중 1가지:

  • 이 템플릿에 포함된 공유 계층 인스턴스 크기(M2 또는 M5) 중 한 가지를 선택하세요.

  • 선택한 제공자 및 리전에 대해 Atlas가 지원하는 다른 인스턴스 크기를 입력합니다.

각 제공자 및 리전이 지원하는 인스턴스 크기에 대한 자세한 내용은 Atlas 설명서에서 다음 섹션을 참조하세요.

mongodbatlas_cluster
.disk_size_gbs

이 구성으로 생성되는 Atlas 클러스터의 디스크 크기입니다. 인스턴스 크기에 대한 최대 디스크 크기와 같거나 작은 값을 제공해야 합니다.

  • M2 클러스터의 경우 2을(를) 입력하세요.

  • M5 클러스터의 경우 5을(를) 입력하세요.

각 인스턴스 크기에 대해 각 제공자가 지원하는 디스크 크기에 대한 자세한 내용은 Atlas 설명서의 다음 섹션을 참조하세요.

5

경고

local 변수에는 민감 정보가 담겨 있습니다. 이러한 값을 공개적으로 사용 가능한 리포지토리에 체크인하지 마세요.

다음 local 변수의 값을 입력하세요.

변수

mongodb_atlas_api_pub_key

Atlas 공개 API 키

mongodb_atlas_api_pri_key

Atlas 비공개 API 키

mongodb_atlas_org_id

프로젝트를 만들려는 Atlas 조직 ID입니다.

mongodb_atlas_database_username

Atlas가 클러스터를 위해 생성하는 MongoDB database 사용자의 사용자 이름입니다.

mongodb_atlas_database_user_password

mongodb_atlas_database_username(으)로 명명된 MongoDB 데이터베이스 사용자의 비밀번호입니다.

mongodb_atlas_whitelistip

Atlas 클러스터에 액세스할 수 있는 IP 주소 또는 CIDR 블록입니다.

예시

입력 변수 파일을 사용하여 보안 극대화하기

보안을 극대화하려면 다음 단계를 수행하는 것이 좋습니다.

  1. 입력 변수 파일에 local 변수를 정의합니다.

    variable "mongodb_atlas_api_pub_key" {
    default = "my-public-key"
    }
    variable "mongodb_atlas_api_pri_key" {
    default = "my-private-key"
    }
  2. 리포지토리에서 입력 변수 파일을 제외하세요. 그 예로 리포지토리의 .gitignore 파일에 파일 이름을 추가하세요.

  3. main.tf 파일 내 입력 변수 파일에 있는 변수의 앞에 vars.을(를) 붙여 해당 변수를 참조하세요.

    provider "mongodbatlas" {
    public_key = vars.mongodb_atlas_api_pub_key
    private_key = vars.mongodb_atlas_api_pri_key
    }
6

지원되는 구성 옵션의 전체 목록은 MongoDB Atlas Terraform 제공자 설명서를 참조하세요.

참고

공유 계층 Atlas 클러스터는 MongoDB Atlas Terraform 제공자가 제공하는 모든 구성을 지원하지는 않습니다. 지원되지 않는 구성 목록은 Atlas 설명서를 참조하세요.

7

템플릿을 사용하여 Terraform 파일을 생성한 후 Atlas 클러스터를 만듭니다.

1
2
terraform init

다음 출력은 MongoDB Atlas Terraform Provider가 설치되어 사용할 준비가 되었음을 나타냅니다.

1Initializing the backend...
2
3Initializing provider plugins...
4- Checking for available provider plugins...
5- Downloading plugin for provider "mongodbatlas" (terraform-providers/mongodbatlas) 0.5.1...
6
7The following providers do not have any version constraints in configuration,
8so the latest version was installed.
9
10To prevent automatic upgrades to new major versions that may contain breaking
11changes, it is recommended to add version = "..." constraints to the
12corresponding provider blocks in configuration, with the constraint strings
13suggested below.
14
15* provider.mongodbatlas: version = "~> 0.5"
16
17Terraform has been successfully initialized!
3
terraform plan

다음 출력은 Terraform 구성을 적용했을 때 어떻게 되는지를 보여줍니다.

1Refreshing Terraform state in-memory prior to plan...
2The refreshed state will be used to calculate this plan, but will not be
3persisted to local or remote state storage.
4
5
6------------------------------------------------------------------------
7
8An execution plan has been generated and is shown below.
9Resource actions are indicated with the following symbols:
10 + create
11
12Terraform 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
110Plan: 4 to add, 0 to change, 0 to destroy.
111
112------------------------------------------------------------------------
113
114Note: You didn't specify an "-out" parameter to save this plan, so Terraform
115can't guarantee that exactly these actions will be performed if
116"terraform apply" is subsequently run.

내용이 정확하다면 다음 단계로 넘어가세요.

4
terraform apply

구성의 적용 여부를 묻는 메시지가 나타나면 yes를 입력하세요.

참고

terraform apply 명령이 완료되기까지는 몇 분 정도 걸릴 수 있습니다.

Atlas 클러스터가 생성되면 다음과 같은 결과가 표시됩니다. VS Code 확장 프로그램을 사용하여 표시된 연결 문자열과 함께 이 배포에 대한 연결을 생성할 수 있습니다.

1Apply complete! Resources: 4 added, 0 changed, 0 destroyed.
2
3Outputs:
4
5connection_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 클러스터를 삭제하려면 다음을 수행하세요.

1
2
terraform destroy

구성에서 정의된 리소스의 폐기 여부를 묻는 메시지가 나타나면 yes를 입력하세요.

참고

terraform destroy 명령이 완료되기까지는 몇 분 정도 걸릴 수 있습니다.

Atlas 클러스터와 연결된 모든 리소스가 삭제되면 다음과 같은 결과가 표시됩니다.

Destroy complete! Resources: 4 destroyed.

돌아가기

AI & Data Usage

이 페이지의 내용