Esta página describe cómo utilizar la plantilla Atlas para archivos Terraform incluidos con la extensión MongoDB para Visual Studio Code para crear clústeres 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 incluida con la extensión MongoDB para Visual Studio Code, debe:
Tengo una cuenta Atlas.
Tener una organización Atlas.
Tener una clave API en una organización con la
Organization OwneroOrganization Project Creatorrol.
Procedimientos
Cree un archivo Atlas Terraform usando la plantilla
Utilice la plantilla Atlas para archivos Terraform incluidos con la extensión VS Code para configurar un clúster Atlas:
En el main.tf archivo, escriba atlas y luego presione la tecla Enter o Return.
La extensión MongoDB para VSCode completa el archivo con una configuración de ejemplo utilizando el proveedor Terraform de MongoDB Atlas para crear un clúster Atlas de nivel compartido.
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 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 obtener detalles sobre los tamaños de instancia que admite cada proveedor y región, 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. Introduzca un tamaño de instancia compatible con Atlas para el proveedor y la región elegidos. Para obtener detalles sobre los tamaños de instancia que admite cada proveedor y región, consulte las siguientes secciones en la documentación de Atlas: |
mongodbatlas_cluster.disk_size_gbs | Tamaño de disco del clúster Atlas que crea esta configuración. Asegúrese de proporcionar un valor igual o menor que el tamaño máximo de disco para el tamaño de instancia seleccionado. Para obtener detalles sobre los tamaños de disco que cada proveedor admite para cada tamaño de instancia, consulte las siguientes secciones en la documentación de Atlas: |
Actualice 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 variables local:
Variable | Valor |
|---|---|
| Clave API pública de Atlas. |
| Clave API privada de Atlas. |
| ID de la organización Atlas en la que desea crear un proyecto. |
| Nombre de usuario del usuario de la base de datos MongoDB que Atlas crea para su clúster. |
| Contraseña para el usuario de la base de datos MongoDB nombrado en |
| Dirección IP o bloque CIDR desde el que se puede acceder a su clúster Atlas. |
Ejemplo
Utilice un archivo de variables de entrada para maximizar la seguridad
Para maximizar la seguridad, considere tomar las siguientes medidas:
Define las
localvariables en un archivo de 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.Haga referencia a las variables del archivo de variables de entrada en el archivo
main.tfanteponiéndolas convars..provider "mongodbatlas" { public_key = vars.mongodb_atlas_api_pub_key private_key = vars.mongodb_atlas_api_pri_key }
Agregue opciones de configuración opcionales al main.tf archivo.
Para obtener una lista completa de las opciones de configuración admitidas, consulte la documentación del proveedor 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.
Crear el clúster Atlas usando Terraform
Después de crear un archivo Terraform usando la plantilla, cree el clúster 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 usarse:
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.
Continúe al siguiente paso si la información es correcta.
Ejecute el terraform apply comando para crear un clúster Atlas desde 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, las colecciones y los documentos almacenados en él,así como todos los demás recursos definidos en la configuración de Terraform en la que configuró 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.