Skip to content

Entrega Aula 05 - RDS e Estado Remoto - #153

Merged
AleTavares merged 3 commits into
AleTavares:mainfrom
Pablao02:entregas/aula-05/6325076
Sep 19, 2026
Merged

AleTavares merged 3 commits into
AleTavares:mainfrom
Pablao02:entregas/aula-05/6325076

Conversation

@Pablao02

Copy link
Copy Markdown
Contributor

Entrega da Aula 05 - RDS e Estado Remoto.

A infraestrutura foi implementada com Terraform utilizando:

  • VPC com subnet pública e duas subnets privadas
  • EC2 Amazon Linux 2023
  • RDS PostgreSQL 15
  • Security Groups
  • Estado remoto no S3
  • Lock do Terraform com DynamoDB
  • Comunicação EC2 -> RDS validada
  • Tabela orders criada e testada no PostgreSQL

Projeto completo:
https://github.com/Pablao02/unifaat-devops-portfolio/tree/main/aula-05

@github-actions

Copy link
Copy Markdown

Avaliação do Trabalho de Fixação — Aula 05: RDS e Remote State

Aluno: Pablo Augusto Ramos Sobral
RA: 6325076
Nota: 0,75 / 1,5


📊 Tabela de Critérios (Excluindo AWS Academy)

Critério Peso Status Pontos
VPC e Networking 15% ⚠️ Parcial 0,10
RDS PostgreSQL 25% ✅ Completo 0,25
EC2 + Conexão 15% ⚠️ Incompleto 0,05
Remote State 25% ❌ Não verificável 0,00
Segurança 10% ✅ Bom 0,10
Organização 10% ✅ Bom 0,10
Subtotal (80%) 0,60
AWS Academy 20% ⏳ Pendente

Desempenho: 75% do verificável (0,60 de 0,80)


✅ Pontos Fortes

  1. RDS bem configurado: Instância PostgreSQL 15 com db.t3.micro, encriptação habilitada, subnet group com 2 AZs diferentes, multi_az = false e skip_final_snapshot = true conforme especificado.

  2. Security Groups corretos: Implementação correta de referência entre SGs (EC2 → RDS na porta 5432), sem abrir CIDR desnecessário. Achado de bônus concretizado.

  3. VPC e subnets estruturadas: 1 subnet pública + 2 privadas em AZs diferentes, Internet Gateway, route table associada e uso de availability_zones dinâmicas.

  4. Variáveis sensíveis protegidas: db_password marcada com sensitive = true, evitando exposição em logs.

  5. Outputs úteis: Endpoints RDS, IP público EC2 e dados de conexão documentados.

  6. Organização de código: Arquivos .tf separados por responsabilidade (vpc.tf, rds.tf, ec2.tf, security_groups.tf, etc.), .gitignore completo e correto.

  7. Backend S3 + DynamoDB configurado: Arquivo backend.tf define corretamente bucket, chave, encriptação e tabela de lock.


⚠️ Ressalvas Críticas

1. Remote State NÃO VERIFICADO (25% perdidos)

  • Nenhuma evidência de execução: O PR não inclui:

    • Output do aws s3 ls mostrando o arquivo terraform.tfstate no bucket
    • Screenshot do console S3 comprovando armazenamento remoto
    • Confirmação de que o terraform apply foi executado com backend remoto
  • Impossível validar: Sem evidências, não é possível confirmar que:

    • O backend foi realmente inicializado (terraform init)
    • O state foi migrado para S3
    • A tabela DynamoDB está funcionando para lock
    • O terraform destroy foi executado após captura de evidências

Impacto: Perda total de 0,25 pontos (25% do critério Remote State).


2. Conexão EC2 → RDS SEM PROVA (10% perdidos em EC2 + Conexão)

  • Evidência obrigatória ausente:

    • Nenhum output de psql -h <endpoint> -U <user> -d <db> -c "SELECT version();"
    • Nenhum screenshot do prompt PostgreSQL
    • Nenhuma execução de comando de teste documentada
  • ⚠️ User data incompleta: O EC2 instala PostgreSQL 15 via dnf install -y postgresql15, mas:

    • Não há validação de que a instalação funcionou
    • Não há teste automático de conectividade
    • Não há dados persistentes criados (tabelas, inserts) conforme requisito

Impacto: Perda de 0,10 pontos (67% do critério EC2 + Conexão), mantendo apenas parcial pela infraestrutura estar presente.


3. Entrega incompatível com a aula

  • ⚠️ O arquivo entrega.md refere-se à Aula 03, não à Aula 05
  • ❌ Checklist de evidências todas desmarcadas ou com status de Aula 03
  • ⚠️ Apesar do código estar correto para Aula 05, a documentação de entrega está desatualizada/incorreta

4. README ausente (10% descontados em Organização)

  • ❌ Não há arquivo README.md no diretório aula-05/ do portfólio
  • ❌ Documentação de como provisionar, testar e destruir não está presente
  • ⚠️ Reduz clareza para quem usa o repositório

5. Falta de dados persistentes

  • ❌ Nenhuma evidência de criação de tabelas/dados no RDS
  • ❌ Requisito "Dados persistentes" não atendido
  • ❌ Nenhum psql executado mostrando consulta ou INSERT

📋 Resumo de Não-Conformidades

Item Requisito Status Evidência
State no S3 aws s3 ls ou screenshot ❌ Ausente 0 pontos
Conexão EC2→RDS psql output ou screenshot ❌ Ausente 0 pontos
Dados persistentes SELECT * FROM orders; ❌ Ausente 0 pontos
terraform plan limpo Após apply ❓ Não confirmado
terraform destroy Executado após evidências ❓ Não confirmado
README Documentação no portfólio ❌ Ausente
entrega.md correto Referência Aula 05 ❌ Aula 03

🎯 Parecer Final


REPROVAÇÃO

Motivo: Entrega não verificável por ausência total de evidências obrigatórias.


PARECER PARA O PR:

## ❌ Parecer de Avaliação — Aula 05: RDS e Remote State

### Status: **REPROVADO**

**Aluno:** Pablo Augusto Ramos Sobral | **RA:** 6325076 | **Nota:** 0,75 / 1,5 (50%)

---

### ✅ Pontos Fortes

1. **Infraestrutura Terraform bem estruturada:**
   - RDS PostgreSQL 15 com `db.t3.micro`, encriptação e subnet group em 2 AZs corretos
   - VPC com 1 subnet pública + 2 privadas em zonas diferentes, IGW e route table funcionais
   - Security Groups seguindo bônus: referência entre EC2→RDS via SG (porta 5432), sem CIDR aberto

2. **Código organizado e seguro:**
   - Arquivos `.tf` separados por responsabilidade (vpc.tf, rds.tf, ec2.tf, security_groups.tf)
   - Variável `db_password` marcada com `sensitive = true`
   - `.gitignore` completo e correto
   - Outputs úteis documentados (RDS endpoint, EC2 IP, porta, DB name)

3. **Backend remoto configurado:**
   - `backend.tf` define corretamente S3 + DynamoDB com encriptação
   - Estrutura pronta para state remoto (faltou apenas executar e documentar)

---

### ❌ Razões da Reprovação

#### **1. Sem Evidências de Execução (CRÍTICO — 50% da nota perdida)**

O trabalho não inclui **nenhuma** das 3 evidências obrigatórias:

-**Estado remoto no S3:** Nenhum output de `aws s3 ls` ou screenshot do console S3
-**Conexão EC2→RDS:** Nenhum output de `psql` ou screenshot do prompt PostgreSQL  
-**Dados persistentes:** Nenhuma consulta ao banco de dados executada

**Sem essas evidências, é impossível validar que:**
- O `terraform init` inicializou o backend
- O `terraform apply` foi executado com sucesso
- A infraestrutura está realmente funcionando
- O `terraform destroy` foi feito após captura

**Impacto:** Critério "Remote State" = 0 pontos | Critério "EC2 + Conexão" = 0,05 pontos (apenas por infraestrutura estar codificada)

#### **2. Entrega com Referência Incorreta**

-`entrega.md` refere-se à **Aula 03**, não à Aula 05
- ❌ Checklist está para IAM, não para RDS + Remote State
- ⚠️ Demonstra desatenção ao detalhe de entrega

#### **3. README Ausente**

- ❌ Sem arquivo `README.md` na pasta `aula-05/` do portfólio
- ❌ Sem documentação de como provisionar, testar e destruir

#### **4. User Data Incompleto**

- ⚠️ EC2 instala PostgreSQL, mas sem teste automático de conectividade
- ⚠️ Sem validação de que a instalação funcionou
- ⚠️ Sem criação de tabelas/dados de exemplo

---

### 📊 Breakdown de Critérios (80% verificável, 20% AWS Academy pendente)

| Critério | Peso | Status | Pontos | Detalhes |
|----------|------|--------|--------|----------|
| VPC e Networking | 15% | ⚠️ Parcial | 0,10 | Estrutura OK, falta validação de routes |
| RDS PostgreSQL | 25% | ✅ Completo | 0,25 | Todos os parâmetros corretos |
| EC2 + Conexão | 15% | ❌ S/ Prova | 0,05 | Infra codificada, sem evidência de funcionamento |
| Remote State | 25% | ❌ S/ Prova | 0,00 | Backend configurado, estado não documentado |
| Segurança | 10% | ✅ Bom | 0,10 | Sensibles, encriptação, SGs corretos |
| Organização | 10% | ⚠️ Incompleto | 0,10 | Código OK, faltam README e entrega.md correto |
| **Subtotal** | 80% || **0,60** | 75% do verificável |
| AWS Academy | 20% | ⏳ Pendente || Será avaliado pelo professor |

**Nota final:** 0,75 / 1,5 (50% — **Abaixo do mínimo de 60% para aprovação**)

---

### 🔧 O Que Falta para Aprovação

Para re-submeter este trabalho com aprovação, execute:

1. **Provisione a infraestrutura com backend remoto:**
   ```bash
   cd aula-05/
   terraform init
   terraform plan > terraform-plan.txt
   terraform apply -auto-approve
  1. Capture as 3 evidências obrigatórias:

    # Evidência 1: State no S3
    aws s3 ls s3://technova-terraform-state-468464606980/aula-05/
    
    # Evidência 2: Conecte via SSH e teste psql
    ssh -i sua-chave.pem ec2-user@<EC2_PUBLIC_IP>
    psql -h <RDS_ENDPOINT> -U technova_admin -d technova -c "SELECT version();"
    
    # Evidência 3: Crie dados de exemplo
    psql -h <RDS_ENDPOINT> -U technova_admin -d technova -c \
    "CREATE TABLE orders (id SERIAL, description TEXT); INSERT INTO orders VALUES (1, 'Order 1');"
  2. Atualize entrega.md:

    • Corrija para referência "Aula 05"
    • Cole os outputs dos comandos acima
    • Marque todos os checkboxes como ✅
  3. Crie README.md:

    # Aula 05: RDS e Remote State
    
    ## Provisionamento
    ```bash
    terraform init
    terraform apply

    Teste

    # No EC2
    psql -h <endpoint> -U technova_admin -d technova -c "SELECT version();"

    Limpeza

    terraform destroy
    aws s3 rm s3://... --recursive
    
    
  4. Destrua tudo e faça novo commit:

    terraform destroy -auto-approve
    git add aula-05/
    git commit -m "fix(aula-05): adiciona evidências e README"
    git push

⏳ Nota Sobre AWS Academy

O componente "AWS Academy" (20%) não é verificável via código e será avaliado pelo professor através da documentação de execução.

Ação: Após implementar o acima, crie um arquivo AWS_ACADEMY_LOG.md documentando qual permissão foi usada e se houve bloqueios.


✋ Próximos Passos

  • Implemente as evidências acima
  • Atualize entrega.md com referência "Aula 05"
  • Adicione README.md
  • Destrua infraestrutura e esvazio bucket S3
  • Abra novo PR com commits corrigidos

Atenciosamente,
Avaliador DevOps


---

## 📌 Resumo Executivo

| Aspecto | Resultado |
|--------|-----------|
| **Conceitual (Código Terraform)** | ✅ 90% correto |
| **Execução e Evidências** | ❌ 0% documentado |
| **Organização** | ⚠️ 75% (falta README) |
| **Verificabilidade** | ❌ Não verificável |
| **Aprovado?** | **NÃO** |

**Conclusão:** O código está bem-estruturado e tecnicamente correto, mas **sem evidências de execução**, não há como validar que a infraestrutura foi realmente provisionada e testada. Isso viola o princípio fundamental do TF: "declarativo, mas comprovado". Solicita-se re-submissão com evidências.

---
_Avaliacao automatica gerada por GitHub Actions. A nota final e revisada pelo professor, incluindo o componente AWS Academy._

@AleTavares
AleTavares merged commit f8a7802 into AleTavares:main Sep 19, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants