对于 AI 代理:可在 https://www.mongodb.com/zh-cn/docs/llms.txt 获取文档索引—通过在任何 URL 路径后添加 .md 可获取所有页面的 Markdown 版本。

使用 Terraform 模块部署 MongoDB Atlas

本指南将引导您使用官方Terraform MongoDB Atlas模块部署企业级MongoDB Atlas环境,这有助于使用 Terraform 从零部署到完整的Atlas部署。

每个模块都是可重用的构建区块,用于预配Atlas资源以及与云提供商进行安全私有连接所需的依赖项。

本指南提供了在 AWS、Azure 或 Google Cloud 中部署以下资源的示例:

  • 一个Atlas项目和分片集群。

  • 具有 PrivateLink 连接的云提供商网络。

  • 备份导出到云存储。

  • 可选的验证虚拟机,用于确认端到端连接(目前在 Google Cloud 中不可用)。虚拟机将在未来的更新中提供)。

注意

本指南中的示例默认创建所有必需的云提供商资源。如果您需要使用预先存在的资源,请参阅与您的云提供商对应的“自带资源”部分:

在开始本教程之前,请确保您具备以下先决条件:

您需要以下工具来完成本指南中概述的进程:

  • Terraform(来自 v1.9开始)

  • mongosh (仅验证步骤需要。部署验证虚拟机时,默认安装 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角色附加到具有适当权限的实例或任务。

    注意

    有关更多信息,请参阅 AWS IAM 身份验证。

1

从Atlas示例存储库下载您的云提供商的完整示例,然后导航到示例目录。

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

复制示例terraform.tfvars文件并填写您的值:

cp terraform.tfvars.example terraform.tfvars

下表描述了所需的变量。有关可用变量的完整列表,请参阅示例目录中与您的云提供商对应的 variables.tf文件。

公用变量

变量
说明

atlas_org_id

您的MongoDB Atlas组织ID。要找到它,请转到Atlas用户界面中的 Organization > Settings。

atlas_project_name

新Atlas项目的名称。

atlas_cluster_name

Atlas 集群的名称。

regions

部署集群和 PrivateLink 终结点的区域列表。请参阅下面特定于云提供商的详细信息。

特定于云提供商的变量

变量
说明

aws_region

用于提供商操作的主要 AWS 区域(示例:us-east-1)。

regions[].name

Atlas集群分片的区域名称(示例US_EAST_1)。有关所有支持的值,请参阅 Cloud Providers and Regions(云提供商和区域)。

regions[].vpc_id

该区域中现有VPC的ID。必须在VPC上启用 DNS 主机名和 DNS 解析。

regions[].subnet_ids

VPC内不同可用区中的至少两个私有子网 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>"]
}
]
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 角色: Atlas为与您的 AWS 帐户进行交互以获取云提供商访问权限而假定的角色。

  • AWS VPC 终结点:每个区域一个VPC 终结点,连接到Atlas PrivateLink 服务以实现私有、安全的连接。

  • AWS S3 存储桶:用于Atlas备份导出的存储桶。

  • 验证 VM(可选,默认启用):第一个区域子网中的 EC2 实例,用于验证通过 PrivateLink 的 Atlas 连接。

4

您可以使用该示例为您创建的虚拟机 (VM) 来验证部署,也可以使用 PrivateLink连接字符串直接与 mongosh 连接来验证部署。

连接虚拟机并进行测试

如果部署了验证虚拟机(默认启用),则可以使用它来验证专用网络内的Atlas连接。虚拟机已预安装 mongosh 并预配置连接字符串。

  1. 请注意实例ID和访问权限命令的 validation_vm 输出:

    terraform output validation_vm
  2. 通过 AWS Systems 经理 (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
  3. 在虚拟机上运行验证脚本以测试连接:

    ./validate-atlas

    该脚本确认 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 集群及其数据。在运行此命令之前,请备份要保留的所有数据。

给本页内容打分