Atlas Terraform プロバイダーのコードとして MongoDB Atlas インフラストラクチャを管理するには、Terraform を使用します。 Atlas Terraform プロバイダーは、Atlas インフラストラクチャをコードとしてプロビジョニング、管理、制御するプロセスを簡素化することで、インフラストラクチャの配置を自動化します。
このガイドでは、既存のMongoDB Atlas組織内で Atlas クラスターを作成および破棄する方法について説明します。
注意
Atlas Terraform プロバイダーは、プロジェクトとリージョンで Atlas がサポートするMongoDBバージョンをサポートします。クラスターのMongoDBバージョンを変更する方法については、「 メジャー バージョンのアップグレード 」を参照してください。
テスト環境を構成したら、MongoDB と HashiCorp の追加リソースを使用して、Terraform が管理するインフラストラクチャの実験を続行します。
Atlas Infinite クラスターは Atlas Terraform プロバイダーをサポートします。 Atlas Infinite の詳細については、 「 MongoDB Atlas Infinite: 概要 」を参照してください。
前提条件
MongoDB Atlas を Terraform で配置する前に、次の操作を行う必要があります。
Atlasアカウントを作成します。
Organization Owner自分が である 組織 ID を取得します。Tip
組織 ID は、Atlas UI の組織の General Settings に記載されています。
サービスアカウント(SA)認証 を構成します。組織 ID の表示、サービス アカウントの管理、およびクラスターやその他のプロジェクト リソースの作成または削除には、Organization Owner ロールが必要です。
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" }
main.tf のコンテンツを構成します。
注意
次の例では、プロジェクトモジュールを使用してプロジェクトを作成し、 mongodatlas_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" } } ] } ] }
別のクラウドプロバイダーまたはリージョンを使用している場合は、環境に合わせて次のフィールドを更新できます。
フィールド | 新しい値 |
|---|---|
| プロバイダー。 指定できる値は、 |
| 使用できるすべてのリージョンについては、「クラウドプロバイダーとリージョン」を参照してください。 |
重要
専有クラスターを作成する ときに、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 _GEN_2でのみ利用できるため、 のように階層名にM60_GEN_2 を追加します。詳細については、「 2生成 専用クラスター 」を参照してください。
Atlas Infinite クラスターには、プライマリとスタンバイの 2 つの選択可能なコンピューティングnode_count 2ノードがあるため、 を に設定します。詳細については、「 レプリケーションとフェイルオーバー 」を参照してください。
より多くの読み取りを処理したり、 分析クエリ を運用ワークワークロードから分離したりするには、同じread_only_specs analytics_specselectable_specsregion_configsオブジェクトで とともに または を設定して読み取り専用ノードまたは分析ノードを追加します。詳細については、「 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 プロバイダーのドキュメントを確認してください。
クラスターに接続する: クラスター オブジェクトまたは Terraform 出力値から接続文字列を使用します。
追加リソース: