Terraform を使用してテンプレートから Atlas クラスターを作成
このページでは、Visual Studio Code 用の MongoDB 拡張機能に含まれる Terraform ファイルの Atlas テンプレートを使用して、Shared Tier Atlas クラスターを作成する方法について説明します。
テンプレートを読み込んだ後、クラスターを構成し、Atlas アカウントの詳細を指定します。次に、Terraform コマンドを使用して Atlas クラスターを計画、適用、破棄します。
前提条件
Visual Studio Code 用の MongoDB 拡張機能に含まれる Terraform ファイルの Atlas テンプレートを使用する前に、次の操作を行う必要があります。
Organization Owner
またはOrganization Project Creator
の ロールを持つ 組織内の API キー を取得します。
手順
テンプレートを使用して Atlas Terraform ファイルを作成する
VS Code 拡張機能に含まれる Terraform ファイルの Atlas テンプレートを使用して、Atlas クラスターを構成します。
main.tf
ファイルに「atlas
」と入力し、Enter キーまたは Return キーを押します。
VSCode 用の MongoDB 拡張機能は、Shared Tier Atlas クラスターを作成するために、MongoDB Atlas Terraform プロバイダーを使用してサンプル構成をファイルに入力します。
Atlas Terraform 構成を更新してクラスターを構成します。
カーソルが移動して、mongodbatlas_project
リソースの name
引数の値を選択します。
クラスターを構成するには、次の引数に値を指定します。
Tip
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 クラスターのインスタンスのサイズ。 次のいずれかを行います。
各プロバイダーとリージョンがサポートするインスタンス サイズの詳細については、Atlas ドキュメントの次のセクションを参照してください。 |
mongodbatlas_cluster .disk_size_gbs | この構成で作成される Atlas クラスターのディスク サイズ。選択したインスタンス サイズの最大ディスク サイズ以下の値を指定してください。
各プロバイダーが各インスタンス サイズに対してサポートするディスク サイズの詳細については、Atlas ドキュメントの次のセクションを参照してください。 |
local
変数を更新します。
警告
local
変数には機密情報が含まれています。これらの値を、公開されているリポジトリにチェックインしないでください。
次の local
変数に値を指定します。
変数 | 値 |
---|---|
| Atlas 公開 API キー。 |
| Atlas プライベート API キー。 |
| プロジェクトを作成する Atlas 組織 ID。 |
| Atlas がクラスター用に作成する MongoDB データベース ユーザーのユーザー名。 |
|
|
| 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 プロバイダーのドキュメント」を参照してください。
注意
Shared Tier Atlas クラスターは、MongoDB Atlas Terraform プロバイダーで利用可能なすべての構成をサポートしていません。サポートされていない構成のリストについては、Atlas のドキュメントを参照してください。
Terraform を使用して Atlas クラスターを作成する
テンプレートを使用して Terraform ファイルを作成したら、Atlas クラスターを作成します。
必要なプロバイダーをインストールするには、terraform init
コマンドを実行します。
terraform init
次の出力は、MongoDB Atlas Terraform プロバイダーがインストールされ、使用できる状態であることを示しています。
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 クラスターを削除するには、次の手順に従います。