Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
Atlaschevron-right

Implantando o MongoDB Atlas com o Terraform com o Azure

Karen Zhang7 min read • Published Jun 18, 2024 • Updated Jun 18, 2024
Atlasmultinuvem
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
MongoDB Atlas é um banco de dados de nuvem totalmente gerenciado. Ele lida com as partes difíceis de configurar, gerenciar e corrigir seus bancos de dados MongoDB em qualquer plataforma de nuvem principal (como AWS, Azure ou GCP). É a maneira mais fácil de começar, executar e expandir seus bancos de dados MongoDB na nuvem.
O Terraform é uma ferramenta de infraestrutura como código (IaC) open source usada para gerenciar e provisionar a infraestrutura em várias plataformas, incluindo provedores de nuvem e data centers locais. O Terraform automatiza a criação, modificação e destruição da sua infraestrutura, garantindo consistência e repetibilidade. O Terraform tem um provedor MongoDB Atlas que interage com os recursos suportados pelo MongoDB Atlas.
Neste tutorial, orientaremos você a configurar o MongoDB Atlas na plataforma Azure e utilizar o Terraform para implantação. O código-fonte usado neste artigo pode ser encontrado no repositório doGithub .

Pré-requisitos

Antes de começarmos, você precisará configurar as seguintes contas/ferramentas:
  • Uma conta MongoDB Atlas — registre-se para obter sua conta gratuita do MongoDB Atlas.
  • Uma conta Azure — registre-se para obter sua conta Azuregratuita.
  • Terraform - você pode seguir a página de download do HashiCorp Terrform .

Configuração do ambiente

Para configurar o ambiente, primeiro geraremos a chave de acesso da API do MongoDB Atlas e, em seguida, configuraremos um método de cobrança.

Gere chaves de acesso à API do MongoDB Atlas

Depois de estabelecer uma conta no MongoDB Atlas e fazer login, a próxima etapa é gerar uma chave de API para verificar o Terraform MongoDB Atlas Provider. Para fazer isso, selecione o gerenciador de acesso da organização e crie a chave de acesso. Siga a documentação para saber mais sobre como criar uma chave de API.
Capturar onde criar uma chave de API(captura de tela da UI do Atlas representando a seção Organization Access Manager)
Capturar onde criar uma chave de API (captura de tela da UI do Atlas representando a seção Organization Access Manager)
Dê à sua chave de API um nome claro que reflita sua finalidade, como "Terraform Deployment API Key. " Em seguida, escolheremos as permissões necessárias para suas tarefas do Terraform. As funções " Proprietário daorganização" e "Criador do projeto da organização" permitem acesso suficiente para concluir isso, mas a função"Criador do projeto da organização" deve ser escolhida seguindo o princípio do menor privilégio. Para saber mais sobre as roles do usuário, siga as Roles daorganização e Roles do projeto.
Captura para gerar uma chave de API* (captura de tela da UI do Atlas representando a criação da seção de chave de API)
Captura para gerar uma chave de API* (captura de tela da UI do Atlas representando a criação da seção de chave de API)
Copie sua chave privada e sua chave pública e, em seguida, configure as variáveis de ambiente:
1export MONGODB_ATLAS_PUBLIC_KEY="<insert your public key here>"
2export MONGODB_ATLAS_PRIVATE_KEY="<insert your private key here>"
Captura para adicionar IP atual à entrada da lista de acesso (captura de tela da UI do Atlas representando a adição da seção de entrada da lista de acesso)
Em seguida, adicionaremos uma entrada de lista de acesso de chave de API para garantir que as chamadas de API originadas de IPs ou intervalos CIDR possam dar acesso. Usamos nosso endereço IP atual e salvamos.

Configurar um método de cobrança

O MongoDB permite uma camada de cluster M0 gratuita pela qual você não precisa pagar. No entanto, se você quiser implantar qualquer outro cluster, teremos que configurar um método de cobrança. Siga a documentação sobre como configurar um método decobrança.

Criando arquivos de configuração Terraform — variable.tf, terraform.tfvars, e main.tf

Agora vamos criar um arquivovariables.tf para declarar variáveis do Terraform, um arquivoterraform.tfvars para definir valores e segredos de variáveis e um main.tf para a configuração principal do Terraform. No Terraform, estes arquivos de configuração (variables.tf, terraform.tfvarse main.tf) são normalmente criados dentro do diretório raiz do seu projeto Terraform. Você pode encontrar o código-fonte no repositório GitHub.
Primeiro, definimos o MongoDB Atlas e o Azure em main.tf:
1# Define the MongoDB Atlas and Azure Providers
2terraform {
3 required_providers {
4 mongodbatlas = {
5 source = "mongodb/mongodbatlas"
6 version = "=1.16.0"
7 }
8 azurerm = {
9 source = "hashicorp/azurerm"
10 version = "=3.0.0"
11 }
12 }
13}
14Then, we start defining all the variables our configuration will use in the variables.tf file.
O bloco de código abaixo define as variáveis utilizadas. As variáveis incluem identificadores para o projeto e o ambiente, o tamanho dos recursos de computação alocados, a plataforma de nuvem a ser usada (AWS, GCP, Azure), a região específica dentro dessa plataforma, a versão desejada do MongoDB e o(s) endereço(s) IP permissão para acessar o cluster de banco de dados.
1# Atlas Organization ID
2variable "atlas_org_id" {
3 type = string
4 description = "Atlas Organization ID"
5}
6# Atlas Project Name
7variable "atlas_project_name" {
8 type = string
9 description = "Atlas Project Name"
10}
11# Atlas Project Environment
12 variable "environment" {
13 type = string
14 description = "The environment to be built"
15 }
16# Cluster Instance Size Name
17variable "cluster_instance_size_name" {
18 type = string
19 description = "Cluster instance size name"
20}
21# Cloud Provider to Host Atlas Cluster
22variable "cloud_provider" {
23 type = string
24 description = "AWS or GCP or Azure"
25}
26# Atlas Region
27variable "atlas_region" {
28 type = string
29 description = "Atlas region where resources will be created"
30}
31# MongoDB Version
32variable "mongodb_version" {
33 type = string
34 description = "MongoDB Version"
35}
36# IP Address Access
37variable "ip_address" {
38 type = string
39 description = "IP address used to access Atlas cluster"
40}
No arquivoterraform.tfvars, especificamos o uso da versão 7 do MongoDB.0, um cluster de tamanho M10na região US_EAST_2 no Azure. Se você estiver fora da América do Norte, poderá consultar as regiões suportadas seguindo a documentação do Microsoft Azure.
Observe que o Atlas oferece suporte a regiões e zonas de disponibilidade específicas do Azure, e algumas regiões não oferecem suporte a clusters gratuitos (M0) e clusters compartilhados (M2/M5).
1atlas_org_id = "<UPDATE WITH YOUR ORG ID>"
2atlas_project_name = "yourProjectName"
3environment = "dev"
4cluster_instance_size_name = "M10"
5cloud_provider = "Azure"
6atlas_region = "US_EAST_2"
7mongodb_version = "7.0"
8ip_address = "<UPDATE WITH YOUR IP>"

Configurando um projeto do MongoDB Atlas

Para criar um projeto usando o Terraform, precisaremos do ID da organização do MongoDB Atlas com pelo menos a função Organization Project Creator. Para obter essas informações, podemos acessar Configurações na barra de menu do lado esquerdo da interface do usuário e podemos encontrar Configuraçõesda organização com o IDda organização. Consulte a documentação sobre Organizações para obter referência adicional.
Então, em seguida, em nosso arquivomain.tf, usaremos o recurso mongodbotlas_project do Terraform MongoDB Atlas Provider para criar nosso projeto. Adicionamos isso a main.tf:
1# Create a Project
2resource "mongodbatlas_project" "atlas-project" {
3 org_id = var.atlas_org_id
4 name = var.atlas_project_name
5}

Criando um usuário, senha e lista de acesso IP do MongoDB Atlas

Devemos adicionar um usuário de banco de dados correspondente ao nosso projeto MongoDB Atlas. Consulte a documentação das funções de usuário disponíveis caso queira personalizar o Controle de acesso baseado em funções do usuário.
O bloco de código abaixo cria um usuário do banco de dados com uma senha aleatória e, para revisar a senha, você precisará colocar o comandoterraform output -json user_password no seu terminal.
1# Create a Database User
2resource "mongodbatlas_database_user" "db-user" {
3 username = "user-1"
4 password = random_password.db-user-password.result
5 project_id = mongodbatlas_project.atlas-project.id
6 auth_database_name = "admin"
7 roles {
8 role_name = "readWrite"
9 database_name = "${var.atlas_project_name}-db"
10 }
11}
12# Create a Database Password
13resource "random_password" "db-user-password" {
14 length = 16
15 special = true
16 override_special = "_%@"
17}
18Next, we need to create the IP access list.
19
20# Create Database IP Access List
21resource "mongodbatlas_project_ip_access_list" "ip" {
22 project_id = mongodbatlas_project.atlas-project.id
23 ip_address = var.ip_address
24}
25We will need to put the IP address that we are connecting to the MongoDB Atlas cluster into the terraform.tfvars file.

Provisionando o cluster do MongoDB Atlas

Agora usaremos o mongodbatlas_cluster recurso para criar um cluster MongoDB Atlas. O recurso permite criar, editar e excluir clusters.
1resource "mongodbatlas_cluster" "test" {
2 project_id = mongodbatlas_project.atlas-project.id
3 name = "${var.atlas_project_name}-${var.environment}-cluster"
4 cluster_type = "REPLICASET"
5 replication_specs {
6 num_shards = 1
7 regions_config {
8 region_name = var.atlas_region
9 electable_nodes = 3
10 priority = 7
11 read_only_nodes = 0
12 }
13 }
14 cloud_backup = true
15 auto_scaling_disk_gb_enabled = true
16 mongo_db_major_version = "7.0"
17 # Provider Settings "block"
18 provider_name = var.cloud_provider
19 provider_disk_type_name = "P6"
20 provider_instance_size_name = var.cluster_instance_size_name
21}
O bloco de código mostrado acima especifica um cluster chamado “test” com um tipo de implantação de conjunto de réplicas, ideal para aplicativos que exigem alta disponibilidade e redundância de dados.
O cluster é configurado com um único shard e está configurado para dimensionar automaticamente seu armazenamento em disco conforme necessário. A convenção de nomenclatura do cluster incorpora variáveis que permitem a personalização específica do ambiente, como ${var.atlas_project_name}-${var.environment}-cluster.
A configuração também especifica um conjunto de réplicas com três nós eletivos em uma região configurável, garantindo que o nó primário possa ser efetivamente eleito. A versão principal do MongoDB está definida como "7.0," alinhando o cluster com a versão estável mais recente.

Definindo saídas do Terraform

Você pode exibir informações da configuração do Terraform diretamente no terminal ao executar comandos do Terraform. Esse recurso é particularmente útil para obter valores que são determinados somente após a criação dos recursos, como uma senha de usuário do banco de dados gerada aleatoriamente ou a connection string necessária para o Atlas cluster. O código a seguir está em seu arquivomain.tf e garantirá que esses valores sejam mostrados no terminal assim que o Terraform terminar de executar.
1output "cluster_name" {
2 value = mongodbatlas_cluster.test.name
3 description = "Name of the MongoDB Atlas cluster"
4}
5output "cluster_uri" {
6 value = "mongodb://user-1:${random_password.db-user-password.result}@${mongodbatlas_cluster.test.name}.mongodb.net:27017/?authSource=admin&replicaSet=test-replicaSet"
7 description = "Connection URI for the MongoDB Atlas cluster"
8 sensitive = true
9}
10output "project_id" {
11 value = mongodbatlas_cluster.test.project_id
12 description = "ID of the MongoDB Atlas project where the cluster resides"
13}
14Initializing Terraform
Agora estamos prontos para executar terraform init. Este comando inicializará o Terraform e baixará os provedores Terraform Azure e MongoDB Atlas.
Captura para executar o Terraform Init
Captura para executar o Terraform Init
A captura de tela acima mostra que o Terraform foi inicializado com sucesso.

Revise a implementação proposta do Terraform

Em seguida, usaremos terraform plan para analisar as alterações propostas.
Capturar para executar o Terraform Plan
Capturar para executar o Terraform Plan
A captura de tela acima mostra que o Terraform executará as seguintes atualizações.
Capture os resultados da execução do Plano Terraform
Capture os resultados da execução do Plano Terraform
Ele mostra que o Terraform criará os seguintes cinco recursos: incluindo mongodbotlas_cluster.test, mongodmatlas_database_user.db-user, mongodbotlas_project.atlas-project, mongodbotlas_project_ip_access_list.ip e random_password.db-user-password.

Executando para criar os recursos

Agora, executaremos o comandoterraform apply para iniciar a implantação da infraestrutura. Ao revisar e confirmar que tudo parece correto, responda com "yes " para dar ao Terraform o sinal verde para prosseguir com a construção.
Captura de tela representando a aplicação do terraform
Captura de tela representando a aplicação do terraform
Captura para executar Terraform Apply
Captura para executar Terraform Apply
Pode levar cerca de 10 minutos para o cluster ser implementado. Depois que ele for implementado com sucesso, você poderá visualizá-lo na UI do Atlas. Abaixo, podemos ver que um cluster do10 M foi implantado no Azure na região 2 Leste dos EUA.
Captura para implantação bem-sucedida de um cluster (captura de tela da UI do Atlas representando o cluster implantado)
Capture para implantar com sucesso um cluster(captura de tela da UI do Atlas representando o cluster implantado)
Parabéns! Você agora distribuiu com êxito um cluster M10 no Azure.

Limpeza com Terraform destruir

Quando estiver pronto para destruir a infraestrutura criada, podemos usar terraform destroy para desmontá-la com segurança. Digite "yes " para destruir todos os recursos implantados. Tenha muito cuidado, porém, se estiver tentando destruir recursos no ambiente de produção.
Captura para executar o Terraform Destroy
Captura para executar o Terraform Destroy

Conclusão

Neste tutorial, aprenderam como implantar um cluster do MongoDB Atlas no Azure. A integração do MongoDB Atlas com Terraform no Azure oferece uma abordagem poderosa e flexível para o gerenciamento de banco de dados na nuvem. Ao aproveitar a infraestrutura do Terraform como recursos de código, simplificamos o processo de implantação do MongoDB Atlas, garantindo que nossa infraestrutura seja reproduzível e facilmente gerenciável.

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Artigo
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Artigo

Sistemas multiagentes com AutoGen e MongoDB


Sep 18, 2024 | 10 min read
Evento do setor
localizaçãoZURIQUE , Suíça | presencial

Dia do Desenvolvedor Zurique 24


Dec 12, 2024 | 8:00 AM - 4:00 PM UTC
Início rápido

Início rápido 2: pesquisa vetorial com MongoDB e OpenAI


May 06, 2024 | 12 min read
Início rápido

Guia de início rápido para aplicativos RAG usando LangChain e LlamaIndex


Sep 18, 2024 | 10 min read
Sumário