Como utilizar o serviço RDS da AWS e receber o endpoint diretamente pelo Terraform

Contexto

Vemos no a necessidade de utilização de bancos para armazenar dados, sejam quais forem. Para tanto, temos a solução RDS da AWS, um serviço de banco de dados relacional.

Essa tecnologia nos provê um endpoint para poder conectar no banco e realizar operações, mas como podemos receber este endpoint diretamente no Terraform?

 

Criando a infraestrutura

Vamos utilizar somente o RDS neste post, visto que nosso maior objetivo é receber seu endpoint diretamente pelo terraform

Para tanto é preciso criar um arquivo chamado main.tf e nele indicar nosso provider, no caso a AWS

# No bash o ">" redireciona a saida padrão para um arquivo, porem quando utilizado sem saída ele cria um arquivo ^^

>main.tf

Coloque o código abaixo para iniciarmos o plugin do terraform aws

 
terraform {
   required_providers {
   aws = {
      source = "hashicorp/aws"
      version = "3.64.1"
      }
   }
}

provider "aws" {
    region  = "us-east-1"
}

Rode o comando para inicializar o plugin

 terraform init 

Depois disso podemos criar o código que conterá nosso rds em um arquivo chamado rds.tf

 resource "aws_db_instance" "default" {
 allocated_storage = 10
 engine = "mysql"
 engine_version = "8.0.23"
 instance_class = "db.t2.micro"
name = "linux"
 username = "teste"
 password = "testandoRDS"
 skip_final_snapshot = true
}


Agora podemos subir a infraestrutura:


terraform apply

 

Assim, já teremos nosso banco criado na aws e rodando prontinho para uso 🙂

Porém ainda precisamos do endpoint deste banco, motivo pelo qual vamos utilizar os outputs do terraform.

Que nada mais são do que as saídas que a própria API do nosso provider(aws)  nos fornecerá.

Basta criarmos um arquivo chamado output.tf e inserir o código abaixo.

Neste caso buscamos somente o endpoint pois é o que nos interessa:

 

output "rds_endpoint" {
value = aws_db_instance.default #é importante ressaltar que o value se torna o nome_do_recurso.id_do_recurso
description = "endpoint do RDS"
sensitive = true
}

Agora ao rodar novamente o terraform apply teremos a seguinte saída

Dessa forma, podemos agora visualizar os outputs gerados pelo terraform.

Por padrão, ele gera diversos outputs, mas criamos esse em especial para que possamos ter acesso ao nosso banco de forma facilitada.
Para visualizar o output é preciso rodar o comando abaixo:


terraform output -json

e teremos uma saída em formato json no terminal, no meio desta bagunça está o nosso endpoint

Para facilitar a visualização podemos utilizar o parser de json chamado jq

Com isto temos a visualização exata do valor do nosso endpoint 😀

 

Líder em Treinamento e serviços de Consultoria, Suporte e Implantação para o mundo open source. Conheça nossas soluções:

CURSOSCONSULTORIA

Anterior Entenda o papel crucial do API Gateway na infraestrutura de TI
Próxima Descubra o mundo da Cloud Computing com o curso gratuito da 4Linux

About author

Gabriel Nascimento
Gabriel Nascimento 4 posts

Gabriel Nascimento, Formado como Tecnologo em Análise e Desenvolvimento de Sistemas pela UNASP e Técnico em Redes de computadores pela ETEC de Embu , atua como Analista de infraestrutura Linux com ênfase em automação de tarefas bem com as tecnologias Jenkins, Shell Script, Puppet, Chef e Ansible

View all posts by this author →

Você pode gostar também

Infraestrutura TI

Automatização de ambientes com Rundeck

Por que automatizar seu ambiente? Nos últimos anos, a automação tem crescido como um elemento imperativo em todos os negócios. Independente da área, temos observado um notável aumento no uso

Cloud

Como garantir que seu site esteja sempre online com ferramentas de monitoramento

Meu site está fora?!?!?! É inegável que hoje o termo Monitoramento é uma palavra presente em todas as organizações e a tecnologia cada vez mais está inserida no dia a

DevOps

MLOps: A chave para o sucesso na implantação de Machine Learning

Um projeto de Machine Learning (ML) de sucesso depende de implantação profissional. Muitas organizações ainda não estão preparadas para fazer implantação de modelos de ML por falta de profissionais especializados.