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
Requisitos previos
Asegúrese de tener los siguientes requisitos previos antes de comenzar este tutorial:
Herramientas necesarias
Necesitará las siguientes herramientas para realizar el proceso descrito en esta guía:
Autenticación y credenciales
MongoDB Atlas
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.
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.
Proveedor de nube
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 configurepara 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>"
Nota
Para obtener más información,consulte Configurar y administrar el acceso a la entidad de servicio de Azure.
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_emailvariable enterraform.tfvarsen el correo electrónico de la cuenta de servicio a suplantar.
Nota
Para obtener más información,consulte Administrar acceso a GCP.
Procedimiento
Obtenga los archivos de configuración de ejemplo
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
Configurar variables de implementación.
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 |
|---|---|
| Tu ID de organización de MongoDB Atlas. Para encontrarlo, ve a Organization > Settings en la interfaz de usuario de Atlas. |
| Nombre del nuevo proyecto Atlas. |
| Nombre del clúster Atlas. |
| 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 |
|---|---|
| La región principal de AWS para las operaciones del proveedor (por |
| El nombre de la región Atlas del fragmento del clúster (por ejemplo,). |
| 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. |
| 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 |
|---|---|
| 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. |
| Su ID de suscripción de Azure. Si se omite,el módulo usa la suscripción predeterminada de sus credenciales de Azure. |
| El nombre de la región Atlas del fragmento del clúster (por ejemplo,). |
| La ubicación de Azure para esta región (por |
| 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 |
|---|---|
| Su ID de proyecto de Google Cloud. |
| El nombre de la región en formato Atlas (por |
| 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>" } ]
Inicializar e implementar
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.
Validar la implementación
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.
Tenga en cuenta la salida
validation_vmpara el ID de instancia y los comandos de acceso:terraform output validation_vm 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 = trueconfigura, 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 Ejecute el script de validación en la máquina virtual para probar la conectividad:
./validate-atlas El script confirma que
mongoshpuede conectarse y ejecuta operaciones CRUD contra el clúster.
Tenga en cuenta la salida
validation_vmpara el nombre de la máquina virtual y el nombre de usuario:terraform output validation_vm Retrieve the VM password:
terraform output -raw validation_vm_password 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_keycon.Ejecute el script de validación en la máquina virtual para probar la conectividad:
./validate-atlas El script confirma que
mongoshpuede 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.
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.
Ejecute el siguiente comando, reemplazando
<connection-string>con el valor del comandoterraform output connection_string:mongosh "<connection-string>" 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.
(Opcional) Limpiar recursos
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.
Recursos adicionales
Repositorio de ejemplos de Atlas: ejemplos de Terraform completos y ejecutables para AWS, Azure y Google Cloud.
Módulos Atlas de Terraform-MongoDB: el espacio de nombres de registro del módulo oficial de Terraform con todos los módulos disponibles.
Proveedor Atlas Terraform: documentación completa del proveedor.
Introducción a Terraform: una guía de inicio rápido para aprovisionar un clúster Atlas básico con Terraform.
Orientación para organizaciones, proyectos y clústeres de Atlas: orientación del Centro de arquitectura Atlas para diseñar su infraestructura Atlas.