このガイドでは、公式の Terraform MongoDB Atlasモジュール を使用して、エンタープライズ対応の MongoDB Atlas 環境を配置する方法を説明します。これにより、Terraform を使用して、ゼロから完全な Atlas 配置への移行が容易になります。
各モジュールは、クラウドプロバイダーとの安全でプライベートな接続に必要な依存関係とともに Atlas リソースをプロビジョニングする再利用可能なビルド ブロックです。
このガイドでは、 AWS、Azure、または Google Cloud に次のリソースを配置する例を示します。
Atlasプロジェクトとシャーディングされたクラスター。
PrivateLink 接続によるクラウドプロバイダー ネットワーク。
クラウドストレージへのバックアップのエクスポート 。
エンドツーエンドの接続を確認するための任意の検証仮想マシン(現在、Google Cloud では利用できません)。仮想マシンは将来の更新で利用可能になる予定です)。
注意
前提条件
このチュートリアルを開始する前に、次の前提条件があることを確認してください。
必要なツール
このガイドで説明されているプロセスを実行するには、次のツールが必要です。
認証と認証情報
MongoDB Atlas
このガイドでは、認証に Atlas サービス アカウントを使用します。サービス アカウントは、プログラムによるアクセスに推奨される認証方法です。
サービス アカウントの認証情報を環境変数として設定します。
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 configureAWS CLI の認証情報を保存するには、 を実行します。IAM ロール: AWSで実行中の場合、適切な権限を持つインスタンスまたはタスクに 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>"
注意
詳しくは、 Azure Service Principal Access の設定と管理 を参照してください。
次のいずれかの方法を使用して、Google Cloud の認証情報を設定します。
アプリケーションのデフォルトの認証情報:
gcloud auth application-default login サービス アカウント キーファイル:
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json" サービスメールの引き受け
service_account_emailterraform.tfvars
注意
詳細については、GCPアクセスのマネージドをご覧ください。
手順
例構成ファイルを取得する
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
配置変数を構成します。
例terraform.tfvarsファイルをコピーし、値を入力します。
cp terraform.tfvars.example terraform.tfvars
次の表では、必要な変数について説明します。使用可能な変数の完全なリストについては、クラウドプロバイダーに対応する例ディレクトリ内の variables.tfファイルを参照してください。
一般的な変数
変数 | 説明 |
|---|---|
| MongoDB Atlas組織ID。これを見つけるには、Atlas UIで Organization > Settings に移動します。 |
| 新しい Atlasプロジェクトの名前。 |
| Atlas クラスターの名前。 |
| クラスターと PrivateLink エンドポイントとなる接続されたデバイスが配置されるリージョンのリスト。クラウドプロバイダー固有の詳細については、以下を参照してください。 |
クラウドプロバイダー固有の変数
変数 | 説明 |
|---|---|
| プロバイダー操作のプライマリAWSリージョン(例: |
| クラスター シャードの Atlas リージョン名(例: 、 |
| このリージョンに既存のVPCのID 。VPCで DNS ホスト名と DNS 解決を有効にする必要があります。 |
| VPC内の異なるアベイラビリティーゾーンにある少なくとも 2 つのプライベート サブネット ID のリスト。PrivateLink エンドポイントとなる接続されたデバイス配置に使用されます。 |
次の例は、AWSの最小の terraform.tfvars を示しています。
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プライベートエンドポイント、バックアップストレージ、任意の 検証 VM が作成されるAzureリソース グループ。リソース グループはすでに存在している必要があります。 |
| Your AzureサブスクリプションID。省略した場合、モジュールはAzure認証情報のデフォルトのサブスクリプションを使用します。 |
| クラスター シャードの Atlas リージョン名(例: 、 |
| このリージョンのAzureロケーション(例: |
| プライベートエンドポイントと検証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>" } ]
変数 | 説明 |
|---|---|
| Google Cloudグループ ID。 |
| Atlas形式(例: 、 |
| PSC 転送ルールが作成されるサブネットワーク |
次の例は、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>" } ]
初期化と配置する
次の 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 ロール:Atlas が AWS アカウントと交流するために想定するロール(クラウドプロバイダーアクセス用)。
AWS VPCエンドポイント: リージョンごとに 1 つのVPCエンドポイント。プライベートで安全な接続のために Atlas PrivateLink サービスに接続されます。
AWS S3 バケット: Atlasバックアップエクスポート 用のバケット。
検証 VM (任意、デフォルトで有効になっている ): PrivateLink 経由で Atlas 接続を検証するための最初のリージョンのサブネットの EC2インスタンス。
MongoDB Atlas: 組織アクセス、新しいプロジェクト、およびマルチリージョンのシャーディングされたクラスター。
Azure Service Principal: Atlas がお客様の Azure サブスクリプションを操作するために使用する Azure AD サービス プリンシパル。
Azureプライベートエンドポイント: リージョンごとに 1 つのプライベートエンドポイント。プライベートで安全な接続のために Atlas PrivateLink サービスに接続されます。
Azure ストレージアカウント: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 ストレージ バケット。
配置を検証します
配置は、例が作成する仮想マシン(VM)を使用するか、PrivateLink接続文字列を使用して mongosh に直接接続することで検証できます。
仮想マシンによる接続とテスト
検証 VM(デフォルトで有効)を配置した場合は、それを使用してプライベート ネットワーク内から Atlas 接続を検証できます。VM には mongosh が事前インストールされ、接続文字列が事前構成されています。
インスタンスIDとアクセス コマンドの
validation_vm出力に注目してください。terraform output validation_vm AWS Systems Manager(SSM)セッション マネージャー経由で接続します(デフォルト、SSH は必要ありません)。
aws ssm start-session --target <instance-id> あるいは、
validation_vm_create_ec2_instance_connect_endpoint = trueを設定した場合は、EC2 インスタンス Connect 経由で接続します。aws ec2-instance-connect ssh --instance-id <instance-id> --os-user ubuntu VM で検証スクリプトを実行して接続をテストします。
./validate-atlas スクリプトは、
mongoshが接続できることを確認し、クラスターに対してCRUD操作を実行します。
VM 名とユーザー名の
validation_vm出力に注目してください。terraform output validation_vm Retrieve the VM password:
terraform output -raw validation_vm_password Azure portal のAzureシリアル コンソール経由で接続します。または、 で SSH キーを提供した場合は、 Azure Bastion
validation_vm_ssh_key経由で接続します。VM で検証スクリプトを実行して接続をテストします。
./validate-atlas スクリプトは、
mongoshが接続できることを確認し、クラスターに対してCRUD操作を実行します。
Google Cloud の例には現在、検証 VM が含まれていません。以下の mongosh 接続方法を使用して配置を確認します。このメソッドを成功させるには、Google Cloud サブネットワークのいずれかから mongosh を実行する必要があります。
を使用した接続とテスト mongosh
また、プライベート ネットワークへのアクセス権を持つ任意のホストからの接続をテストすることもできます。
接続文字列を取得します。
配置が完了したら、Terraform の出力から PrivateLink接続文字列を取得します。
terraform output connection_string 接続文字列はプライベートエンドポイント SRV形式を使用し、PrivateLink 接続を介してトラフィックをルーティングします。
次のコマンドを実行し、
<connection-string>をterraform output connection_stringコマンドの値に置き換えます。mongosh "<connection-string>" 接続後、次のコマンドを実行することで、テストドキュメントを書き込み、検索します。
db.test.insertOne({ msg: "Hello Atlas" }) db.test.findOne()
応答が成功させると、クラスターにアクセス可能で、読み取りおよび書き込み (write) 操作が受け入れられることを確認します。
追加リソース
Atlas 例のリポジトリ: AWS、 Azure、Google Cloud 向けの完全で実行可能な Terraform の例。
Terraform-MongoDB Atlas Modules: 使用可能なすべてのモジュールを含む公式の Terraform モジュール レジストリの名前空間。
Atlas Terraform プロバイダー: プロバイダーの完全なドキュメント。
Terraform を使い始める: Terraform を使用して基本的な Atlas クラスターをプロビジョニングためのクイックスタートガイド。
Atlas 組織、プロジェクト、クラスターに関するガイダンス: Atlas Architecture Center のガイダンス、Atlas インフラストラクチャを設計します。