Skip to content

Gerenciamento centralizado de DNS para o domínio observatudo.com.br utilizando Terraform e GitOps.

License

Notifications You must be signed in to change notification settings

JJDSNT/manage-dns

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

27 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

manage-dns

Este repositório público gerencia, via Terraform, a infraestrutura de DNS do domínio observatudo.com.br, utilizando práticas de GitOps e Infraestrutura como Código (IaC).

🎯 Este projeto faz parte do meu portfólio técnico e demonstra minha capacidade de estruturar, versionar e automatizar a gestão de recursos em nuvem de forma profissional.


🔧 O que este repositório gerencia

  • Criação da zona DNS pública do domínio observatudo.com.br no Google Cloud DNS
  • Registros A e CNAME para subdomínios como:
    • observatudo.com.br
    • www.observatudo.com.br
    • jdias.observatudo.com.br
  • (Futuramente) Registros TXT, MX, ou outros, conforme evolução do domínio

🧱 Tecnologias e práticas utilizadas

  • Terraform para definição declarativa da infraestrutura
  • Google Cloud Platform (GCP) como provedor de DNS
  • GitHub Actions (em breve) para validar e aplicar alterações com controle de versionamento
  • GitOps como estratégia principal: todas as alterações passam por revisão via Pull Request antes de serem aplicadas

📁 Estrutura do repositório

manage-dns/
├── infra-base/                  # Infraestrutura de suporte (bucket, SA, IAM)
│   ├── bucket.tf
│   ├── iam.tf
│   ├── service-account.tf
│   └── variables.tf

├── zones/                       # Zonas DNS públicas gerenciadas via Terraform
│   ├── observatudo.com.br/
│   │   ├── backend.tf           # Configuração do state remoto
│   │   ├── zone.tf              # Criação da zona DNS
│   │   ├── root-and-www.tf      # Registros principais (A e CNAME)
│   │   └── jdias.tf             # Subdomínio específico
│   ├── foo.com.br/          

└── .github/workflows/           # Automação com GitHub Actions (em construção)

🔐 Observações de segurança

  • Nenhuma credencial sensível está armazenada neste repositório
  • O acesso à aplicação do Terraform (terraform apply) é feito com uma Service Account do GCP via CI/CD (em construção)
  • Este repositório ignora automaticamente arquivos sensíveis como .tfstate, .tfvars, chaves e configurações locais via .gitignore

⚠️ Nunca inclua segredos ou credenciais diretamente no código.
Todo o acesso à infraestrutura é feito por autenticação segura, utilizando service accounts com permissões mínimas no GCP.


🚀 Inicialização do projeto GCP

Antes de aplicar qualquer configuração de DNS, é necessário ter um projeto GCP com billing ativado e permissões para:

  • Criar buckets no Cloud Storage
  • Criar Service Accounts
  • Gerenciar permissões IAM

Você pode usar um projeto já existente ou criar manualmente pelo Console GCP.


⚙️ Aplicação da infraestrutura base (infra-base/)

Este passo cria os recursos necessários para o Terraform funcionar corretamente:

  • Bucket GCS para armazenamento do state remoto
  • Service Account para uso no CI/CD
  • Permissões IAM mínimas

✅ Como aplicar:

cd infra-base
terraform init
terraform plan
terraform apply

Após isso, o bucket e a conta estarão prontos para uso com as zonas em zones/.

⚠️ A variável project_id deve ser definida via terraform.tfvars ou com a flag -var="project_id=seu-projeto", conforme sua estrutura local.

💡 Após a aplicação, o bucket de state remoto estará criado e a Service Account configurada para uso seguro nos pipelines de CI/CD.


👨‍💻 Sobre mim

Este repositório faz parte do meu portfólio pessoal.
Sou Engenheiro de Software especialista em transformação digital, com foco em sistemas distribuídos e ênfase em plataformas e ecossistemas para a construção de organizações biônicas.

🌐 Acesse: https://jdias.observatudo.com.br


📬 Contato

About

Gerenciamento centralizado de DNS para o domínio observatudo.com.br utilizando Terraform e GitOps.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published