Docs Menu
Docs Home
/

Implementar MongoDB Atlas con módulos Terraform

Esta guía lo guía a través de la implementación de un entorno MongoDB Atlas listo para la empresa utilizando el repositorio oficial Módulos Terraform MongoDB Atlas, que facilitan pasar de cero a una implementación completa de Atlas utilizando Terraform.

Cada módulo es un bloque de construcción reutilizable que abastece recursos de Atlas junto con las dependencias necesarias para una conectividad segura y privada con los proveedores de la nube.

Esta guía proporciona ejemplos para implementar los siguientes recursos en AWS, Azure o Google Cloud:

  • Un proyecto Atlas y un clúster fragmentado.

  • Red de proveedores de nube con conectividad PrivateLink.

  • Exportación de copia de seguridad al almacenamiento en la nube.

  • Una máquina virtual de validación opcional para confirmar la conectividad de extremo a extremo (actualmente no disponible en Google Cloud. Una máquina virtual estará disponible en una futura actualización).

Nota

Los ejemplos de esta guía crean todos los recursos necesarios del proveedor de nube de forma predeterminada. Si necesita usar recursos preexistentes, consulte las secciones "Traiga sus propios recursos" correspondientes a su proveedor de nube:

Asegúrese de tener los siguientes requisitos previos antes de comenzar este tutorial:

Necesitará las siguientes herramientas para realizar el proceso descrito en esta guía:

  • Terraform (desde la versión. en1 9 adelante)

  • mongosh (solo se requiere para los pasos de validación. Al implementar la máquina virtual de validación, mongosh está instalado por defecto)

Esta guía utiliza un Atlas Cuenta de servicio para autenticación. Las cuentas de servicio son el método de autenticación recomendado para el acceso programático.

  1. Inicie sesión o cree su cuenta de MongoDB Atlas.

  2. Establezca las credenciales de su cuenta de servicio como variables de entorno:

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

    Nota

    Las cuentas de servicio son el método de autenticación recomendado para el acceso programático con Terraform. Para obtener más información sobre la configuración de cuentas de servicio,consulte Otorgar acceso programático a una organización.

Configure sus credenciales de AWS utilizando uno de los siguientes métodos:

  • Variables de entorno:

    export AWS_ACCESS_KEY_ID="<your-access-key-id>"
    export AWS_SECRET_ACCESS_KEY="<your-secret-access-key>"
  • Perfil de AWS CLI: ejecute aws configure para almacenar las credenciales de la AWS CLI.

  • Rol de IAM: al ejecutar en AWS, adjunte un rol de IAM a su instancia o tarea con los permisos adecuados.

    Nota

    Para obtener más información,consulte Autenticación de AWS IAM.

Configure sus credenciales de Azure mediante uno de los siguientes métodos:

  • CLI de Azure:

    az login
  • Variables de entorno del principal de servicio:

    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>"

Configure sus credenciales de Google Cloud utilizando uno de los siguientes métodos:

  • Credenciales predeterminadas de la aplicación:

    gcloud auth application-default login
  • Archivo de clave de cuenta de servicio:

    export GOOGLE_APPLICATION_CREDENTIALS="/path/to/service-account-key.json"
  • Suplantación de cuenta de servicio: establezca la service_account_email variable en terraform.tfvars en el correo electrónico de la cuenta de servicio a suplantar.

Nota

Para obtener más información,consulte Administrar acceso a GCP.

1

Descargue el ejemplo completo para su proveedor de nube desde el repositorio de ejemplos de Atlas y navegue hasta el directorio de ejemplos.

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

Copie el archivo de ejemplo terraform.tfvars y complete sus valores:

cp terraform.tfvars.example terraform.tfvars

La siguiente tabla describe las variables requeridas. Para obtener una lista completa de las variables disponibles, consulte el archivo variables.tf en el directorio de ejemplo correspondiente a su proveedor de nube.

Variables comunes

Variable
Descripción

atlas_org_id

Tu ID de organización de MongoDB Atlas. Para encontrarlo, ve a Organization > Settings en la interfaz de usuario de Atlas.

atlas_project_name

Nombre del nuevo proyecto Atlas.

atlas_cluster_name

Nombre del clúster Atlas.

regions

Lista de regiones donde se implementan el clúster y los puntos finales de PrivateLink. Consulte la información específica del proveedor de nube a continuación.

Variables específicas del proveedor de la nube

Variable
Descripción

aws_region

La región principal de AWS para las operaciones del proveedor (por us-east-1 ejemplo,).

regions[].name

El nombre de la región Atlas del fragmento del clúster (por ejemplo,). US_EAST_1 Para conocer todos los valores admitidos, consulte Proveedores y regiones de la nube.

regions[].vpc_id

El ID de una VPC existente en esta región. Los nombres de host DNS y la resolución DNS deben estar habilitados en la VPC.

regions[].subnet_ids

Lista de al menos dos ID de subredes privadas en diferentes zonas de disponibilidad dentro de la VPC, utilizadas para la ubicación del punto final de PrivateLink.

El siguiente ejemplo muestra un mínimo terraform.tfvars para 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>"]
}
]
Variable
Descripción

azure_resource_group_name

Grupo de recursos deAzure donde se crean los puntos de conexión privados, el almacenamiento de copias de seguridad y la máquina virtual de validación opcional. El grupo de recursos debe existir previamente.

azure_subscription_id

Su ID de suscripción de Azure. Si se omite,el módulo usa la suscripción predeterminada de sus credenciales de Azure.

regions[].name

El nombre de la región Atlas del fragmento del clúster (por ejemplo,). US_EAST_2 Para conocer todos los valores admitidos, consulte Proveedores y regiones de la nube.

regions[].azure_location

La ubicación de Azure para esta región (poreastus2 ejemplo,). Solo se requiere para la primera entrada de región.

regions[].subnet_id

El identificador de subred de Azure donde se crean los puntos de conexión privados y la máquina virtual de validación.

El siguiente ejemplo muestra un mínimo terraform.tfvars para 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>"
}
]
Variable
Descripción

gcp_project_id

Su ID de proyecto de Google Cloud.

regions[].name

El nombre de la región en formato Atlas (porUS_EAST_4 ejemplo,) o en formato de Google Cloud (porus-east4 ejemplo,). El módulo normaliza ambos formatos internamente. Para ver todos los valores admitidos, consulte Proveedores y regiones de la nube.

regions[].subnetwork

La subred self_link donde se crean las reglas de reenvío de PSC (por ejemplo, https://www.googleapis.com/compute/v1/projects/<PROJECT>/regions/<REGION>/subnetworks/<NAME>). La red VPC se deriva automáticamente de la subred.

El siguiente ejemplo muestra un terraform.tfvars mínimo para Google Cloud:

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

Ejecute los siguientes comandos de Terraform para inicializar el directorio de trabajo e implementar la infraestructura:

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

terraform init Descarga los complementos necesarios para el proveedor y el módulo. terraform plan muestra una vista previa de los recursos que se crearán. Revisa el plan cuidadosamente antes de solicitarlo.

Una vez completado terraform apply, se aprovisionarán los siguientes recursos en su cuenta:

  • MongoDB Atlas: acceso a la organización, un nuevo proyecto y un clúster fragmentado en múltiples regiones.

  • Rol de AWS IAM: un rol que Atlas asume para interactuar con su cuenta de AWS para el acceso del proveedor de la nube.

  • Puntos finales de VPC de AWS: un punto final de VPC por región, conectado al servicio Atlas PrivateLink para una conectividad privada y segura.

  • AWS S3 Bucket: un bucket para exportaciones de copias de seguridad de Atlas.

  • VM de validación (opcional, habilitada de forma predeterminada): una instancia de EC2 en la subred de la primera región para verificar la conectividad de Atlas a través de PrivateLink.

  • MongoDB Atlas: acceso a la organización, un nuevo proyecto y un clúster fragmentado en múltiples regiones.

  • Entidad de servicio de Azure: una entidad de servicio de Azure AD que Atlas utiliza para interactuar con su suscripción de Azure.

  • Puntos de conexión privados de Azure: un punto de conexión privado por región, conectado al servicio Atlas PrivateLink para una conectividad privada y segura.

  • Cuenta de almacenamiento de Azure: una cuenta de almacenamiento y un contenedor de blobs para exportaciones de copias de seguridad de Atlas.

  • VM de validación (opcional, habilitada de forma predeterminada): una VM Linux en la subred de la primera región para verificar la conectividad de Atlas a través de PrivateLink.

  • MongoDB Atlas: acceso a la organización, un nuevo proyecto y un clúster fragmentado en múltiples regiones.

  • Acceso aGCP: una cuenta de servicio de Atlas autorizada para interactuar con su proyecto de Google Cloud.

  • Reglas de reenvío de PSC: una regla de reenvío de Google Cloud y una dirección de cómputo por región, conectadas al servicio Atlas PrivateLink a través de Private Service Connect (PSC) para una conectividad privada y segura.

  • Cubo de almacenamiento de GCP: un cubo de Google Cloud Storage para exportaciones de copias de seguridad de Atlas.

4

Puede validar su implementación con una máquina virtual (VM) que el ejemplo crea para usted o conectándose directamente con mongosh mediante la cadena de conexión PrivateLink.

Conectarse y probar con una máquina virtual

Si implementó la máquina virtual de validación (habilitada por defecto), puede usarla para verificar la conectividad de Atlas desde su red privada. La máquina virtual tiene mongosh preinstalado y la cadena de conexión preconfigurada.

  1. Tenga en cuenta la salida validation_vm para el ID de instancia y los comandos de acceso:

    terraform output validation_vm
  2. Conectarse a través del Administrador de sesiones de AWS Systems Manager (SSM) (predeterminado, no se requiere SSH):

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

    Alternativamente, si validation_vm_create_ec2_instance_connect_endpoint = true configura, conéctese a través de la 2 conexión de instancia EC:

    aws ec2-instance-connect ssh --instance-id <instance-id> --os-user ubuntu
  3. Ejecute el script de validación en la máquina virtual para probar la conectividad:

    ./validate-atlas

    El script confirma que mongosh puede conectarse y ejecuta operaciones CRUD contra el clúster.

  1. Tenga en cuenta la salida validation_vm para el nombre de la máquina virtual y el nombre de usuario:

    terraform output validation_vm
  2. Retrieve the VM password:

    terraform output -raw validation_vm_password
  3. Conéctese a través de la consola serie de Azure en el portal de Azure o a través de Azure Bastion si proporcionó una clave SSH validation_vm_ssh_key con.

  4. Ejecute el script de validación en la máquina virtual para probar la conectividad:

    ./validate-atlas

    El script confirma que mongosh puede conectarse y ejecuta operaciones CRUD contra el clúster.

El ejemplo de Google Cloud actualmente no incluye una máquina virtual de validación. Use el método de conexión mongosh a continuación para verificar su implementación. Debe ejecutar mongosh desde una de sus subredes de Google Cloud para que este método funcione correctamente.

Conectar y probar con mongosh

También puede probar la conectividad desde cualquier host con acceso a su red privada.

  1. Recupere la cadena de conexión.

    Una vez completada la implementación, recupere la cadena de conexión PrivateLink de las salidas de Terraform:

    terraform output connection_string

    La cadena de conexión utiliza el formato SRV de punto final privado y enruta el tráfico a través de su conexión PrivateLink.

  2. Ejecute el siguiente comando, reemplazando <connection-string> con el valor del comando terraform output connection_string:

    mongosh "<connection-string>"
  3. Después de conectarse, ejecute los siguientes comandos para escribir y recuperar un documento de prueba:

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

Una respuesta exitosa confirma que su clúster es accesible y acepta operaciones de lectura y escritura.

5

Para eliminar todos los recursos provistos por esta implementación y evitar cargos no deseados, ejecute:

terraform destroy -var-file terraform.tfvars

Advertencia

terraform destroy Elimina permanentemente todos los recursos administrados por esta configuración, incluido el clúster Atlas y sus datos. Realice una copia de seguridad de los datos que desee conservar antes de ejecutar este comando.

Volver

Comience con Terraform

En esta página