Criar um Atlas Cluster a partir de um modelo usando Terraform
Nesta página
Esta página descreve como usar o modelo Atlas para arquivos Terraform incluídos com a extensão MongoDB para Visual Studio Code para criar clusters de camada compartilhada.
Após carregar o modelo, você configura o agrupamento e fornece detalhes sobre sua conta do Atlas. Em seguida, você usa os comandos do Terraform para planejar, aplicar e destruir seu Atlas cluster.
Pré-requisitos
Antes de usar o modelo Atlas para arquivos Terraform incluídos na Extensão MongoDB para Visual Studio Code, você deve:
Procedimentos
Crie um arquivo Atlas Terraform usando o modelo
Use o modelo Atlas para arquivos Terraform incluídos com a extensão VS Code para configurar um cluster Atlas:
No arquivo, digite e pressione a tecla Enter ou Return.<a main.tf
class=\" \" href=\" \" title=\" \"><svg atlas
xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
A Extensão MongoDB para VSCode preenche o arquivo com uma configuração de exemplo utilizando o provedor de Terraform MongoDB Atlas para criar um cluster de Camada Compartilhada do Atlas.
Atualize a configuração do Terraform do Atlas para configurar seu agrupamento.
O cursor se move para selecionar o valor do argumento name
do recurso mongodbatlas_project
.
Para configurar o cluster, forneça valores para os seguintes argumentos:
Dica
Pressione a tecla Tab para selecionar o próximo argumento no modelo que você deve atualizar.
Atributo | Valor |
---|---|
mongodbatlas_project .name | Nome do projeto Atlas que esta configuração cria. |
mongodbatlas_cluster .name | Nome do cluster do Atlas que esta configuração cria. |
mongodbatlas_cluster .backing_provider_name | Provedor no qual o cluster Atlas criado por esta configuração está hospedado. Escolha um dos seguintes valores aceitos:
|
mongodbatlas_cluster .provider_region_name | Região à qual o agrupamento do Atlas que esta configuração cria é implantado. Certifique-se que a região que escolheu suporta clusters Atlas do tamanho de instância que pretende implementar. Por padrão, os agrupamentos de Camada Compartilhada de provisões de modelo: Para detalhes sobre os tamanhos de instância que cada provedor e região suporta, consulte as seguintes seções na documentação do Atlas: |
mongodbatlas_cluster .provider_instance_size_name | Tamanho da instância do Atlas cluster que esta configuração cria. Qualquer:
Para detalhes sobre os tamanhos de instância que cada provedor e região suporta, consulte as seguintes seções na documentação do Atlas: |
mongodbatlas_cluster .disk_size_gbs | Tamanho do disco do Atlas cluster que essa configuração cria. Certifique-se de fornecer um valor igual ou menor que o tamanho máximo do disco para o tamanho da instância que você escolheu.
Para detalhes sobre os tamanhos de disco que cada provedor suporta para cada tamanho de instância, consulte as seguintes seções na documentação do Atlas: |
Atualize as local
variáveis de.
Aviso
As variáveis local
contêm informações confidenciais. Não insira esses valores em um repositório que esteja disponível publicamente.
Forneça valores para as seguintes local
variáveis:
Variável | Valor |
---|---|
mongodb_atlas_api_pub_key | Chave API pública do Atlas. |
mongodb_atlas_api_pri_key | Chave API privada do Atlas. |
mongodb_atlas_org_id | ID da organização do Atlas em que você deseja criar um projeto. |
mongodb_atlas_database_username | Nome de usuário do usuário do banco de dados MongoDB que o Atlas cria para seu cluster. |
mongodb_atlas_database_user_password | Senha do usuário do banco de dados MongoDB nomeado em mongodb_atlas_database_username . |
mongodb_atlas_whitelistip | Endereço IP ou bloco CIDR a partir do qual o seu Atlas cluster está acessível. |
Exemplo
Usar um arquivo de variáveis de entrada para maximizar a segurança
Para maximizar a segurança, considere seguir as seguintes etapas:
Defina as variáveis
local
em um arquivo de variáveisde entrada.variable "mongodb_atlas_api_pub_key" { default = "my-public-key" } variable "mongodb_atlas_api_pri_key" { default = "my-private-key" } Exclua o arquivo de variáveis de entrada do repositório. Por exemplo, adicione o nome do arquivo ao arquivo
.gitignore
do seu repositório.Variáveis de referência do arquivo de variáveis de entrada no arquivo
main.tf
prefaciando-as comvars.
.provider "mongodbatlas" { public_key = vars.mongodb_atlas_api_pub_key private_key = vars.mongodb_atlas_api_pri_key }
Adicione opções de configuração opcionais ao main.tf
arquivo.<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
Para uma lista completa de opções de configuração suportadas, consulte a documentação do provedor de Terraformes do Atlas do MongoDB.
Observação
Os clusters do Atlas de camada compartilhada não suportam todas as configurações disponíveis com o provedor MongoDB Atlas Terraform. Para obter uma lista de configurações não suportadas, consulte a documentação do Atlas.
Criar o Cluster do Atlas utilizando Terraform
Após criar um arquivo de Terraform utilizando o modelo, crie o cluster do Atlas:
Execute o terraform init
comando para instalar os provedores exigidos.<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
terraform init
A saída a seguir indica que o MongoDB Atlas Terraform Provider está instalado e pronto para uso:
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!
Execute o terraform plan
comando para visualizar o que acontece quando você aplica a configuração.<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
terraform plan
A seguinte saída mostra o que acontece quando você aplica a configuração 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_instance_size_name = "M2" 42 + provider_name = "TENANT" 43 + provider_region_name = "providerRegionName" 44 + provider_volume_type = (known after apply) 45 + replication_factor = (known after apply) 46 + snapshot_backup_policy = (known after apply) 47 + srv_address = (known after apply) 48 + state_name = (known after apply) 49 50 + labels { 51 + key = (known after apply) 52 + value = (known after apply) 53 } 54 55 + replication_specs { 56 + id = (known after apply) 57 + num_shards = (known after apply) 58 + zone_name = (known after apply) 59 60 + regions_config { 61 + analytics_nodes = (known after apply) 62 + electable_nodes = (known after apply) 63 + priority = (known after apply) 64 + read_only_nodes = (known after apply) 65 + region_name = (known after apply) 66 } 67 } 68 } 69 70 mongodbatlas_database_user.my_user will be created 71 + resource "mongodbatlas_database_user" "my_user" { 72 + auth_database_name = "admin" 73 + id = (known after apply) 74 + password = (sensitive value) 75 + project_id = (known after apply) 76 + username = "jww" 77 + x509_type = "NONE" 78 79 + labels { 80 + key = (known after apply) 81 + value = (known after apply) 82 } 83 84 + roles { 85 + collection_name = (known after apply) 86 + database_name = "admin" 87 + role_name = "atlasAdmin" 88 } 89 } 90 91 mongodbatlas_project.my_project will be created 92 + resource "mongodbatlas_project" "my_project" { 93 + cluster_count = (known after apply) 94 + created = (known after apply) 95 + id = (known after apply) 96 + name = "atlasProjectName" 97 + org_id = "5d3716bfcf09a21576d7983e" 98 } 99 100 mongodbatlas_project_ip_whitelist.my_ipaddress will be created 101 + resource "mongodbatlas_project_ip_whitelist" "my_ipaddress" { 102 + aws_security_group = (known after apply) 103 + cidr_block = (known after apply) 104 + comment = "My IP Address" 105 + id = (known after apply) 106 + ip_address = "204.210.139.18" 107 + project_id = (known after apply) 108 } 109 110 Plan: 4 to add, 0 to change, 0 to destroy. 111 112 ------------------------------------------------------------------------ 113 114 Note: You didn't specify an "-out" parameter to save this plan, so Terraform 115 can't guarantee that exactly these actions will be performed if 116 "terraform apply" is subsequently run.
Avance para a próxima etapa se as informações estiverem corretas.
Execute o comando para criar um cluster do Atlas a partir da configuração Terraform.<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \"> terraform apply
terraform apply
Digite yes
quando solicitado para confirmar que você deseja aplicar a configuração.
Observação
O comando terraform apply
pode levar vários minutos para ser concluído.
A seguinte saída indica que seu cluster do Atlas foi criado. Você pode criar uma conexão com essa implantação usando a extensão VS Code com as strings de conexão exibidas:
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 ]
Excluir o Atlas cluster utilizando Terraform
Aviso
Excluir um cluster destrói bancos de dados, coleções e documentos armazenados nele e todos os outros recursos definidos na configuração Terraform na qual você configurou o cluster.
Prossiga com cuidado.
Para excluir o Atlas cluster:
Execute o terraform destroy
comando para instalar os provedores exigidos.<a class=\" \" href=\" \" title=\" \"><svg xmlns=\" \" width=\" \" height=\" \" fill=\" \" viewbox=\" \" class=\" \" role=\" \" aria-label=\" \"><path fill=\" \" d=\" \"> <path fill=\" \" d=\" \">
terraform destroy
Digite yes
quando solicitado para confirmar que você deseja destruir os recursos definidos na configuração.
Observação
O comando terraform destroy
pode levar vários minutos para ser concluído.
A seguinte saída indica que o agrupamento Atlas e todos os recursos associados são excluídos:
Destroy complete! Resources: 4 destroyed.