Docs Menu
Docs Home
/

Terraform モジュールを使用したMongoDB Atlas の配置

このガイドでは、公式の Terraform MongoDB Atlasモジュールを使用して、エンタープライズ対応のMongoDB Atlas環境を配置する方法を説明します。これにより、Terraform を使用して、ゼロから完全な Atlas 配置への移行が容易になります。

各モジュールは、クラウドプロバイダーとの安全でプライベートな接続に必要な依存関係とともに Atlas リソースをプロビジョニングする再利用可能なビルド ブロックです。

このガイドでは、 AWS、 Azure、または Google Cloud に次のリソースを配置する例を示します。

  • Atlasプロジェクトとシャーディングされたクラスター。

  • PrivateLink 接続によるクラウドプロバイダー ネットワーク。

  • クラウドストレージへのバックアップのエクスポート 。

  • エンドツーエンドの接続を確認するためのオプションの検証仮想マシン(現在、Google Cloud では利用可能ではありません。仮想マシンは将来のアップデートで利用可能になる予定です)。

注意

このガイドの例では、必要なクラウドプロバイダーリソースすべてをデフォルトで 作成しています。既存のリソースを使用する必要がある場合は、クラウドプロバイダーに対応する「 独自のリソースの移行 」セクションを参照してください。

このチュートリアルを開始する前に、次の前提条件があることを確認してください。

このガイドで説明されているプロセスを実行するには、次のツールが必要です。

  • Terraform 1(v.9 以降)

  • mongosh (検証ステップにのみ必要です。検証 VM を配置すると、mongosh がデフォルトでインストールされます)

このガイドでは、認証に Atlas サービス アカウントを使用します。サービス アカウントは、プログラムによるアクセスに推奨される認証方法です。

  1. MongoDB Atlasアカウントにサインインするか作成します。

  2. サービス アカウントの認証情報を環境変数として設定します。

    export MONGODB_ATLAS_CLIENT_ID="<your-client-id>"
    export MONGODB_ATLAS_CLIENT_SECRET="<your-client-secret>"

    注意

    サービス アカウントは、Terraform へのプログラムによるアクセスに推奨される認証方法です。サービス アカウントの設定の詳細については、「 組織へのプログラムによるアクセスの付与 」を参照してください。

次のいずれかの方法を使用してAWS認証情報を設定します。

  • 環境変数:

    export AWS_ACCESS_KEY_ID="<your-access-key-id>"
    export AWS_SECRET_ACCESS_KEY="<your-secret-access-key>"
  • AWS CLI プロファイル:aws configure AWS CLI の認証情報を保存するには、 を実行します。

  • IAM ロール: AWSで実行中場合、適切な権限を持つインスタンスまたはタスクに IAM ロールをアタッチします。

次のいずれかの方法を使用してAzure認証情報を構成します。

  • Azure CLI:

    az login
  • サービスプリンシパルの環境変数:

    export ARM_CLIENT_ID="<your-client-id>"
    export ARM_CLIENT_SECRET="<your-client-secret>"
    export ARM_SUBSCRIPTION_ID="<your-subscription-id>"
    export ARM_TENANT_ID="<your-tenant-id>"

次のいずれかの方法を使用して、Google Cloud の認証情報を設定します。

  • アプリケーションのデフォルトの認証情報:

    gcloud auth application-default login
  • サービス アカウント キーファイル:

    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"
  • サービスメールの引き受けservice_account_emailterraform.tfvars

1

Atlas の例のリポジトリからクラウドプロバイダーの完全な例をダウンロードし、例ディレクトリに移動します。

git clone https://github.com/terraform-mongodbatlas-modules/atlas-examples.git
cd atlas-examples/aws/atlas-aws-module-complete
git clone https://github.com/terraform-mongodbatlas-modules/atlas-examples.git
cd atlas-examples/azure/atlas-azure-module-complete
git clone https://github.com/terraform-mongodbatlas-modules/atlas-examples.git
cd atlas-examples/gcp/atlas-gcp-module-complete
2

terraform.tfvarsファイルをコピーし、値を入力します。

cp terraform.tfvars.example terraform.tfvars

次の表では、必要な変数について説明します。使用可能な変数の完全なリストについては、クラウドプロバイダーに対応する例ディレクトリ内の variables.tfファイルを参照してください。

一般的な変数

変数
説明

atlas_org_id

MongoDB Atlas組織ID。これを見つけるには、Atlas UIで Organization > Settings に移動します。

atlas_project_name

新しい Atlasプロジェクトの名前。

atlas_cluster_name

Atlas クラスターの名前。

regions

クラスターと PrivateLink エンドポイントが配置されるリージョンのリスト。クラウドプロバイダー固有の詳細については、以下を参照してください。

クラウドプロバイダー固有の変数

変数
説明

aws_region

プロバイダー操作のプライマリAWSリージョン(例: 、us-east-1 )。

regions[].name

クラスター シャードの Atlas リージョン名(例: 、US_EAST_1 )。サポートされているすべての値については、「 クラウドプロバイダーとリージョン 」を参照してください。

regions[].vpc_id

このリージョンに既存のVPCのID 。 VPCで DNS ホスト名と DNS 解決を有効にする必要があります。

regions[].subnet_ids

VPC内の異なるアベイラビリティーゾーンにある少なくとも 2 つのプライベート サブネット ID のリスト。 PrivateLink エンドポイント配置に使用されます。

次の例は、terraform.tfvars AWSの最小の を示しています。

atlas_org_id = "<YOUR_ATLAS_ORG_ID>"
atlas_project_name = "my-atlas-project"
atlas_cluster_name = "my-atlas-cluster"
aws_region = "us-east-1"
regions = [
{
name = "US_EAST_1"
vpc_id = "<YOUR_VPC_ID>"
subnet_ids = ["<YOUR_SUBNET_ID_1>", "<YOUR_SUBNET_ID_2>"]
}
]
変数
説明

azure_resource_group_name

プライベートエンドポイント、バックアップストレージ、オプションの 検証 VM が作成されるAzureリソース グループ。リソース グループはすでに存在している必要があります。

azure_subscription_id

AzureサブスクリプションID 。省略した場合、モジュールはAzure認証情報のデフォルトのサブスクライブを使用します。

regions[].name

クラスター シャードの Atlas リージョン名(例: 、US_EAST_2 )。サポートされているすべての値については、「 クラウドプロバイダーとリージョン 」を参照してください。

regions[].azure_location

このリージョンのAzureロケーション(例: 、eastus2 )。最初のリージョンエントリにのみ必要です。

regions[].subnet_id

プライベートエンドポイントと検証 VM が作成されるAzureサブネットID 。

次の例には、terraform.tfvars Azureの最小の を示しています。

atlas_org_id = "<YOUR_ATLAS_ORG_ID>"
atlas_project_name = "my-atlas-project"
atlas_cluster_name = "my-atlas-cluster"
azure_resource_group_name = "<YOUR_RESOURCE_GROUP>"
regions = [
{
name = "US_EAST_2"
azure_location = "eastus2"
subnet_id = "<YOUR_SUBNET_ID>"
}
]
変数
説明

gcp_project_id

Google CloudプロジェクトID。

regions[].name

Atlas形式(例: 、US_EAST_4 )または Google Cloud形式(例: 、us-east4 )のリージョン名。モジュールは両方の形式を内部的に正規化します。サポートされているすべての値については、「 クラウドプロバイダーとリージョン 」を参照してください。

regions[].subnetwork

PSC 転送ルールが作成されるサブネットワーク self_link(例: 、https://www.googleapis.com/compute/v1/projects/<PROJECT>/regions/<REGION>/subnetworks/<NAME>)。 VPCネットワークは、サブネットワークから自動的に派生します。

次の例は、Google Cloud の最小の terraform.tfvars を示しています。

atlas_org_id = "<YOUR_ATLAS_ORG_ID>"
atlas_project_name = "my-atlas-project"
atlas_cluster_name = "my-atlas-cluster"
gcp_project_id = "<YOUR_GCP_PROJECT_ID>"
regions = [
{
name = "US_EAST_4"
subnetwork = "<YOUR_SUBNETWORK_SELF_LINK>"
}
]
3

次の Terraform コマンドを実行して、作業ディレクトリを初期化し、インフラストラクチャを配置します。

terraform init
terraform plan -var-file terraform.tfvars
terraform apply -var-file terraform.tfvars

terraform init は、必要なプロバイダーとモジュール プラグインをダウンロードします。 terraform plan は作成されるリソースをプレビューします。適用する前に、プランを慎重に確認してください。

terraform apply が完了すると、アカウントに次のリソースがプロビジョニングされます。

  • MongoDB Atlas: 組織アクセス、新しいプロジェクト、およびマルチリージョンのシャーディングされたクラスター。

  • AWS IAM ロール: クラウドプロバイダー アクセスのAWSアカウントを操作するために Atlas が想定するロール。

  • AWS VPCエンドポイント: リージョンごとに 1 つのVPCエンドポイント。プライベートで安全な接続のために Atlas PrivateLink サービスに接続されます。

  • AWS S3 バケット: Atlasバックアップエクスポート 用のバケット。

  • 検証 VM (任意、デフォルトで有効になっている ):2 PrivateLink 経由で Atlas 接続を検証するための最初のリージョンのサブネットの EC インスタンス。

  • MongoDB Atlas: 組織アクセス、新しいプロジェクト、およびマルチリージョンのシャーディングされたクラスター。

  • Azureサービス プリンシパル: Atlas がAzureサブスクライブを操作するために使用するAzure AD サービス プリンシパル 。

  • Azureプライベートエンドポイント: リージョンごとに 1 つのプライベートエンドポイント。プライベートで安全な接続のために Atlas PrivateLink サービスに接続されます。

  • Azure Storage Account: Atlasバックアップエクスポート用のストレージアカウントと Blobコンテナ。

  • 検証仮想マシン (任意、デフォルトで有効になっている ): PrivateLink 経由の Atlas 接続を検証するための最初のリージョンのサブネット内のLinux VM 。

  • MongoDB Atlas: 組織アクセス、新しいプロジェクト、およびマルチリージョンのシャーディングされたクラスター。

  • GCPアクセス: Google Cloudプロジェクトを操作するために許可された Atlas サービス アカウント。

  • PSC 転送ルール: リージョンごとに 1 つの Google Cloud 転送ルールとコンピュート アドレス。プライベートで安全な接続のために Private Service Connect(PSC)経由で Atlas PrivateLink サービスに接続されます。

  • GCPストレージ バケット: Atlasバックアップエクスポート用の Google Cloud Storageバケット。

4

配置は、例が作成する仮想マシン(VM)を使用するか、PrivateLink接続文字列を使用して mongosh に直接接続することで検証できます。

仮想マシンによる接続とテスト

検証 VM(デフォルトで有効)を配置した場合は、それを使用してプライベート ネットワーク内から Atlas 接続を検証できます。 VM には mongosh が事前インストールされ、接続文字列が事前構成されています。

  1. インスタンスIDとアクセス コマンドの validation_vm 出力に注目してください。

    terraform output validation_vm
  2. AWS Systems Manager(SSM)セッション マネージャー経由で接続します(デフォルト、SSH は必要ありません)。

    aws ssm start-session --target <instance-id>

    あるいは、validation_vm_create_ec2_instance_connect_endpoint = true を設定した場合は、EC2 Instance Connect 経由で接続します。

    aws ec2-instance-connect ssh --instance-id <instance-id> --os-user ubuntu
  3. VM で検証スクリプトを実行して接続をテストします。

    ./validate-atlas

    スクリプトは、mongosh が接続できることを確認し、クラスターに対してCRUD操作を実行します。

  1. VM 名とユーザー名の validation_vm 出力に注目してください。

    terraform output validation_vm
  2. Retrieve the VM password:

    terraform output -raw validation_vm_password
  3. Azure portal のAzureシリアル コンソール経由で接続します。または、 で SSH キーを提供した場合は、 Azure Bastionvalidation_vm_ssh_key 経由で接続します。

  4. VM で検証スクリプトを実行して接続をテストします。

    ./validate-atlas

    スクリプトは、mongosh が接続できることを確認し、クラスターに対してCRUD操作を実行します。

Google Cloud の例には現在、検証 VM が含まれていません。以下の mongosh 接続方法を使用して配置を確認します。このメソッドを成功させるには、Google Cloud サブネットワークのいずれかから mongosh を実行する必要があります。

を使用した接続とテスト mongosh

また、プライベート ネットワークへのアクセス権を持つ任意のホストからの接続をテストすることもできます。

  1. 接続文字列を取得します。

    配置が完了したら、Terraform の出力から PrivateLink接続文字列を取得します。

    terraform output connection_string

    接続文字列はプライベートエンドポイント SRV形式を使用し、PrivateLink 接続を介してトラフィックをルーティングします。

  2. 次のコマンドを実行し、<connection-string>terraform output connection_string コマンドの値に置き換えます。

    mongosh "<connection-string>"
  3. 接続後、次のコマンドを実行して テストドキュメントを書き込み、取得します。

    db.test.insertOne({ msg: "Hello Atlas" })
    db.test.findOne()

応答が成功すると、クラスターにアクセス可能で、読み取りおよび書込み操作が受け入れられることを確認します。

5

この配置によってプロビジョニングされたすべてのリソースを破棄し、不要な料金を回避するには、次のコマンドを実行します。

terraform destroy -var-file terraform.tfvars

警告

terraform destroy は、Atlas クラスターとそのデータを含む、この構成によって管理されるすべてのリソースを永続的に削除します。このコマンドを実行中前に、保持したいデータをバックアップしてください。

  • Atlas 例のリポジトリ: AWS、 Azure、Google Cloud 向けの完全で実行可能な Terraform の例。

  • Terraform- MongoDB Atlasモジュール: 使用可能なすべてのモジュールを含む公式の Terraform モジュール レジストリの名前空間。

  • Atlas Terraform プロバイダー: プロバイダーの完全なドキュメント。

  • Terraform を使い始める: Terraform を使用して基本的な Atlas クラスターをプロビジョニングためのクイックスタートガイド。

  • Atlas 組織、プロジェクト、クラスターに関するガイダンス: Atlas アーキテクチャ センターのガイダンス、Atlas インフラストラクチャを設計します。

戻る

Terraform を使い始める

項目一覧