Esta página describe cómo utilizar la plantilla de Atlas para los archivos Terraform incluida con la extensión MongoDB para Visual Studio Code para crear clústeres de Atlas de nivel Compartido.
Después de cargar la plantilla, configuramos el clúster y proporcionamos detalles sobre su cuenta de Atlas. Luego se utilizan los comandos de Terraform para planificar, aplicar y destruir el clúster de Atlas.
Requisitos previos
Antes de utilizar la plantilla Atlas para archivos Terraform incluidos con la Extensión de MongoDB para Visual Studio Code, debes:
Tener una cuenta de Atlas.
Tener una organización de Atlas.
Se debe tener una clave de API en una organización con la
Organization OwneroOrganization Project Creatorrol.
Procedimientos
Crear un archivo Terraform Atlas utilizando la plantilla
Utiliza la plantilla de Atlas para archivos de Terraform incluida con la Extensión de VS Code para configurar un clúster de Atlas:
En el archivo main.tf, escribe atlas y luego presiona la tecla Enter o Return.
La extensión de MongoDB para VSCode llena el archivo con una configuración de ejemplo utilizando el MongoDB Atlas proveedor de Terraform para crear un clúster Shared nivel Atlas.
Actualice la configuración de Atlas Terraform para configurar su clúster.
El cursor se mueve para seleccionar el valor del argumento name del recurso mongodbatlas_project.
Proporcione valores para los siguientes argumentos para configurar su clúster:
Tip
Presione la tecla Tab para seleccionar el siguiente argumento en la plantilla que debe actualizar.
Atributo | Valor |
|---|---|
mongodbatlas_project.name | Nombre del proyecto Atlas que crea esta configuración. |
mongodbatlas_cluster.name | Nombre del clúster de Atlas que crea esta configuración. |
mongodbatlas_cluster.backing_provider_name | Proveedor en el que se aloja el cluster de Atlas que crea esta configuración. Elige uno de los siguientes valores aceptados:
|
mongodbatlas_cluster.provider_region_name | Región donde se implementa el clúster Atlas creado con esta configuración. Asegúrese de que la región seleccionada admita clústeres Atlas del tamaño de instancia que desea implementar. Para conocer los detalles sobre los tamaños de instancia que cada proveedor y región admiten, consulte las siguientes secciones en la documentación de Atlas: |
mongodbatlas_cluster.provider_instance_size_name | Tamaño de instancia del clúster Atlas que crea esta configuración. Introduce un tamaño de instancia que Atlas admita para el proveedor y región que seleccionaste. Para conocer los detalles sobre los tamaños de instancia que cada proveedor y región admiten, consulte las siguientes secciones en la documentación de Atlas: |
mongodbatlas_cluster.disk_size_gbs | Tamaño del disco del clúster de Atlas que crea esta configuración. Asegúrese de proporcionar un valor que sea igual o inferior al tamaño máximo del disco para el tamaño de instancia elegido. Para obtener detalles sobre los tamaños de disco que cada proveedor admite para cada tamaño de instancia, consulta las siguientes secciones en la documentación de Atlas: |
Actualizan las local variables.
Advertencia
Las local variables contienen información confidencial. No guarde estos valores en un repositorio público.
Proporcione valores para las siguientes local variables:
Variable | Valor |
|---|---|
| Clave API pública de Atlas. |
| llave privada de API de Atlas. |
| Identificador de la Organización de Atlas en la que deseas crear un proyecto. |
| Nombre de usuario del usuario de base de datos MongoDB que Atlas crea para tu clúster. |
| Contraseña para el usuario de base de datos MongoDB especificado en |
| Dirección IP o bloque CIDR desde el cual se puede acceder a tu clúster de Atlas. |
Ejemplo
Utilice un archivo de variables de entrada para maximizar la seguridad
Para maximizar la seguridad, considere tomar los siguientes pasos:
Defina las
localvariables en un archivo variables de entrada.variable "mongodb_atlas_api_pub_key" { default = "my-public-key" } variable "mongodb_atlas_api_pri_key" { default = "my-private-key" } Excluya el archivo de variables de entrada de su repositorio. Por ejemplo, añada el nombre del archivo al archivo
.gitignorede su repositorio.Hace referencia a las variables del archivo de variables de entrada en el archivo
main.tfanteponiéndolesvars..provider "mongodbatlas" { public_key = vars.mongodb_atlas_api_pub_key private_key = vars.mongodb_atlas_api_pri_key }
Agrega opciones de configuración opcionales al archivo main.tf.
Para obtener una lista completa de las opciones de configuración compatibles, consulte la documentación del proveedor de Terraform de MongoDB Atlas.
Nota
Los clústeres Atlas de nivel compartido no admiten todas las configuraciones disponibles con el proveedor Terraform de MongoDB Atlas. Para obtener una lista de las configuraciones no compatibles, consulte la documentación de Atlas.
Crea el clúster de Atlas utilizando Terraform
Después de crear un archivo Terraform utilizando la plantilla, crea el clúster de Atlas:
Ejecuta el comando terraform init para instalar los proveedores necesarios.
terraform init
La siguiente salida indica que el Proveedor Terraform de MongoDB Atlas está instalado y listo para usar:
1 Initializing the backend... 2 3 Initializing provider plugins... 4 - Checking for available provider plugins... 5 - Downloading plugin for provider "mongodbatlas" (terraform-providers/mongodbatlas) 0.5.1... 6 7 The following providers do not have any version constraints in configuration, 8 so the latest version was installed. 9 10 To prevent automatic upgrades to new major versions that may contain breaking 11 changes, it is recommended to add version = "..." constraints to the 12 corresponding provider blocks in configuration, with the constraint strings 13 suggested below. 14 15 * provider.mongodbatlas: version = "~> 0.5" 16 17 Terraform has been successfully initialized!
Ejecute el terraform plan comando para ver qué sucede cuando aplica la configuración.
terraform plan
La siguiente salida muestra lo que sucede cuando se aplica la configuración de Terraform:
1 Refreshing Terraform state in-memory prior to plan... 2 The refreshed state will be used to calculate this plan, but will not be 3 persisted to local or remote state storage. 4 5 6 ------------------------------------------------------------------------ 7 8 An execution plan has been generated and is shown below. 9 Resource actions are indicated with the following symbols: 10 + create 11 12 Terraform will perform the following actions: 13 14 mongodbatlas_cluster.my_cluster will be created 15 + resource "mongodbatlas_cluster" "my_cluster" { 16 + advanced_configuration = (known after apply) 17 + auto_scaling_disk_gb_enabled = false 18 + backing_provider_name = "AWS" 19 + backup_enabled = false 20 + bi_connector = (known after apply) 21 + cluster_id = (known after apply) 22 + cluster_type = (known after apply) 23 + connection_strings = (known after apply) 24 + disk_size_gb = 2 25 + encryption_at_rest_provider = (known after apply) 26 + id = (known after apply) 27 + mongo_db_major_version = "4.2" 28 + mongo_db_version = (known after apply) 29 + mongo_uri = (known after apply) 30 + mongo_uri_updated = (known after apply) 31 + mongo_uri_with_options = (known after apply) 32 + name = "atlasClusterName" 33 + num_shards = 1 34 + paused = (known after apply) 35 + pit_enabled = (known after apply) 36 + project_id = (known after apply) 37 + provider_backup_enabled = false 38 + provider_disk_iops = (known after apply) 39 + provider_disk_type_name = (known after apply) 40 + provider_encrypt_ebs_volume = (known after apply) 41 + provider_name = "TENANT" 42 + provider_region_name = "providerRegionName" 43 + provider_volume_type = (known after apply) 44 + replication_factor = (known after apply) 45 + snapshot_backup_policy = (known after apply) 46 + srv_address = (known after apply) 47 + state_name = (known after apply) 48 49 + labels { 50 + key = (known after apply) 51 + value = (known after apply) 52 } 53 54 + replication_specs { 55 + id = (known after apply) 56 + num_shards = (known after apply) 57 + zone_name = (known after apply) 58 59 + regions_config { 60 + analytics_nodes = (known after apply) 61 + electable_nodes = (known after apply) 62 + priority = (known after apply) 63 + read_only_nodes = (known after apply) 64 + region_name = (known after apply) 65 } 66 } 67 } 68 69 mongodbatlas_database_user.my_user will be created 70 + resource "mongodbatlas_database_user" "my_user" { 71 + auth_database_name = "admin" 72 + id = (known after apply) 73 + password = (sensitive value) 74 + project_id = (known after apply) 75 + username = "jww" 76 + x509_type = "NONE" 77 78 + labels { 79 + key = (known after apply) 80 + value = (known after apply) 81 } 82 83 + roles { 84 + collection_name = (known after apply) 85 + database_name = "admin" 86 + role_name = "atlasAdmin" 87 } 88 } 89 90 mongodbatlas_project.my_project will be created 91 + resource "mongodbatlas_project" "my_project" { 92 + cluster_count = (known after apply) 93 + created = (known after apply) 94 + id = (known after apply) 95 + name = "atlasProjectName" 96 + org_id = "5d3716bfcf09a21576d7983e" 97 } 98 99 mongodbatlas_project_ip_whitelist.my_ipaddress will be created 100 + resource "mongodbatlas_project_ip_whitelist" "my_ipaddress" { 101 + aws_security_group = (known after apply) 102 + cidr_block = (known after apply) 103 + comment = "My IP Address" 104 + id = (known after apply) 105 + ip_address = "204.210.139.18" 106 + project_id = (known after apply) 107 } 108 109 Plan: 4 to add, 0 to change, 0 to destroy. 110 111 ------------------------------------------------------------------------ 112 113 Note: You didn't specify an "-out" parameter to save this plan, so Terraform 114 can't guarantee that exactly these actions will be performed if 115 "terraform apply" is subsequently run.
Procede al siguiente paso si la información es correcta.
Ejecute el comando terraform apply para crear un clúster de Atlas a partir de la configuración de Terraform.
terraform apply
Escriba yes cuando se le solicite para confirmar que desea aplicar la configuración.
Nota
El comando terraform apply puede tardar varios minutos en completarse.
La siguiente salida indica que tu clúster de Atlas está creado. Puedes crear una conexión a esta implementación usando la extensión de VS Code con las cadenas de conexión mostradas:
1 Apply complete! Resources: 4 added, 0 changed, 0 destroyed. 2 3 Outputs: 4 5 connection_strings = [ 6 [ 7 { 8 "aws_private_link" = {} 9 "aws_private_link_srv" = {} 10 "private" = "" 11 "private_srv" = "" 12 "standard" = "mongodb://myCluster-shard-00-00-xxxxx.mongodb.net:27017,myCluster-shard-00-01-xxxxx.mongodb.net:27017,myCluster-shard-00-02-xxxxx.mongodb.net:27017/?ssl=true&authSource=admin&replicaSet=myCluster-shard-0" 13 "standard_srv" = "mongodb+srv://myCluster-xxxxx.mongodb.net" 14 }, 15 ], 16 ]
Borra el clúster de Atlas utilizando Terraform
Advertencia
Al eliminar un clúster, se destruyen las bases de datos, colecciones y documentos almacenados en él y todos los demás recursos definidos en la configuración de Terraform en la que configuraste el clúster.
Proceda con precaución.
Para eliminar el clúster Atlas:
Ejecuta el comando terraform destroy para instalar los proveedores necesarios.
terraform destroy
Escriba yes cuando se le solicite para confirmar que desea destruir los recursos definidos en la configuración.
Nota
El comando terraform destroy puede tardar varios minutos en completarse.
La siguiente salida indica que el clúster de Atlas y todos los recursos asociados se eliminan:
Destroy complete! Resources: 4 destroyed.