/iac-modulo-aws-rds

Modulo terraform que cria AWS RDS

Primary LanguageHCL

Infraestrutura

Imagem da infraestrutura do Módulo

projectrds

Requirements

Name Version
terraform >= 1.0.0
aws ~> 4.0

Providers

Name Version
aws 3.0.0
random 3.3.2

Modules

Este modulo permite provisionar Postgres RDS e System Manager Parameter Store.

O que será criado?

  • RDS Postgres database
  • System Manager Parameter Store.
  • Security group de RDS
  • Subnet group de RDS

O que é o Amazon RDS?

O Amazon Relational Database Service (Amazon RDS) é uma coleção de serviços gerenciados que facilita a configuração, operação e escalabilidade de bancos de dados na nuvem. Escolha entre sete opções de mecanismos bastante utilizados: Amazon Aurora compatível com MySQL, Amazon Aurora compatível com PostgreSQL, MySQL, MariaDB, PostgreSQL, Oracle e SQL Server.

O que é o System Manager Parameter Store?

O Parameter Store, um recurso do AWS Systems Manager, oferece armazenamento hierárquico seguro para gerenciamento de dados de configuração e gerenciamento de segredos. Você pode armazenar dados, como senhas, strings de banco de dados, IDs de Amazon Machine Images (AMIs) e códigos de licença como valores de parâmetro. Você pode armazenar valores como texto sem formatação ou dados criptografados. Você pode referenciar parâmetros do Systems Manager em seus scripts, comandos, documentos do SSM e fluxos de trabalho de configuração e automação usando o nome exclusivo especificado ao criar o parâmetro.

Para saber mais sobre AWS ECS acesso o link: https://docs.aws.amazon.com/pt_br/systems-manager/latest/userguide/systems-manager-parameter-store.html

Recursos utilizados nesse projeto:

Name Type
aws_db_instance.rapadura resource
aws_db_subnet_group.rds_subnet_group resource
aws_security_group.sg_rds resource
aws_ssm_parameter.db_endpoint resource
aws_ssm_parameter.db_name resource
aws_ssm_parameter.db_passwd resource
aws_ssm_parameter.db_user resource
aws_ssm_parameter.main resource
random_password.postgres_password resource

Inputs

Name Description Type Default Required
aws_region Region of Amazon AWS string "us-east-1" no
db_name n/a string "mariaquiteria" no
db_username Username of the database string "mariaquiteriaadmin" no
default_tags n/a map(any)
{
"Application": "maria-quiteria",
"Environment": "Production",
"Name": "RDS_mariaquiteria",
"Owner": "Mentoria-IAC",
"Team": "Mentoria-IAC",
"Terraform": "Yes"
}
no
engine The database engine string "postgres" no
engine_version The engine version for database number "12.7" no
identifier The name of the RDS instance string "database-mariaquiteria" no
instance_type The RDS instance class string "db.t2.micro" no
parameter_group_name Name of the DB parameter group to associate string "default.postgres12" no
parameters n/a
list(
object({
type = string,
name = string,
description = string,
value = string,
})
)
[] no
port The database port number "5432" no
proj_name n/a string "mariaquiteria" no
snapshot skip snapshot string "true" no
storage The allocated storage number 20 no
storage_type The type of the storage string "gp2" no
subnet_ids n/a list(string) n/a yes
vpc_id n/a string n/a yes

Outputs

Name Description
db_endpoint n/a
rds_hostname RDS instance hostname
rds_port RDS instance port
rds_username RDS instance root username

Como usar esse módulo

Acesse o passo-a-passo


Utilizando o módulo

Pré-Requisitos

Name Version
terraform >= 1.0.0

Criar terrafile.tf

Crie um arquivo terraform.tf com o seguinte conteúdo. E altere os valores das variáveis.

module "rds_mariaquiteria" {
    source = "../"
    subnet_ids = ["subnet-00825b5be94f27bfe", "subnet-066dc161feeef4a79"]
    proj_name = "mariaquiteria"
    vpc_id = "vpc-07f5d91b4aa236675"
    port = 5432
    storage = 20
    storage_type = "gp2"
    engine = "postgres"
    engine_version = "12.7"
    instance_type = "db.t2.micro"
    db_name = "mariaquiteria"
    db_username = "mariaquiteriaadmin"
    identifier = "database-mariaquiteria"
    parameter_group_name = "default.postgres12"
    snapshot = true  
}

Provisionando RDS e SSM

Após preencher os valores requiridos utilize os comandos abaixo para provisonar RDS e SSM.

terraform init 
terraform fmt
terraform validate
terraform plan
terraform apply

Descrição dos comandos:

Segue uma breve descrição dos comandos listados acima.

terraform init: Execute o terraform init para baixar todos os plugins necessários. terraform fmt: O comando é usado para reescrever os arquivos de configuração do Terraform para um formato e estilo canônicos. terraform validate: Comando valida sintaticamente os arquivos de configuração em um diretório. terraform plan: Executar um plano de terraform e colocá-lo em um arquivo chamado plano. terraform apply: Usa plano para aplicar as alterações na AWS.