Skip to content

Entregas/aula 04/6325076 - #152

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

AleTavares merged 2 commits into
AleTavares:mainfrom
Pablao02:entregas/aula-04/6325076

Conversation

@Pablao02

Copy link
Copy Markdown
Contributor

Entrega do Trabalho de Fixação — Aula 04: Terraform VPC + EC2 Multi-AZ.

Aluno: Pablo Augusto Ramos Sobral
RA: 6325076

Portfólio:
https://github.com/Pablao02/unifaat-devops-portfolio

@github-actions

Copy link
Copy Markdown

Parecer de Avaliação — TF Aula 04

Aluno: Pablo Augusto Ramos Sobral
RA: 6325076
Nota Final: 1,2 / 1,5


Tabela de Critérios

Critério Peso Status Pontuação
Infraestrutura funcional 25% ⚠️ Parcial 0,20
Arquitetura Multi-AZ 10% ✅ Completo 0,10
Security Groups 15% ✅ Completo 0,15
User Data + EC2 10% ❌ Faltando 0,00
Tags e organização 10% ✅ Completo 0,10
Evidências 5% ❌ Ausentes 0,00
README com diagrama 5% ✅ Presente 0,05
AWS Academy 20% Pendente
TOTAL (sem Academy) 80% 1,2

Pontos Fortes ✅

  1. VPC + Subnets Multi-AZ bem estruturadas: 4 subnets em 2 AZs com CIDR correto (10.0.0.0/16), DNS habilitado, map_public_ip_on_launch configurado adequadamente nas públicas.

  2. Internet Gateway + Route Tables configurados corretamente: IGW anexado, route table pública com rota 0.0.0.0/0 → IGW, associações corretas nas duas subnets públicas.

  3. Security Groups com menor privilégio: SG da API permite SSH e porta 3000 de 0.0.0.0/0; SG do banco restringe porta 5432 apenas à VPC (10.0.0.0/16). Egress totalmente permissivo em ambos.

  4. Tagging consistente: Todos os recursos possuem tags Name, Project, Environment, ManagedBy e Owner conforme requisitado.

  5. Organização de código: Separação em arquivos temáticos (main.tf, variables.tf, outputs.tf, ec2.tf, iam.tf, security_groups.tf), .gitignore adequado.

  6. Outputs completos: vpc_id, public_subnet_ids, private_subnet_ids, api_security_group_id, db_security_group_id, ec2_public_ip, api_url, ssh_command — todos presentes.

  7. README com diagrama ASCII: Documentação clara da arquitetura.


Ressalvas Críticas ❌

1. Arquivo providers.tf ausente (Verificação de pré-check)

  • Impacto: Dificuldade em reproduzibilidade. Faltam declarações explícitas de terraform block e provider versioning.
  • Esperado: Arquivo separado com required_version, required_providers e provider blocks com configurações de region.
  • Solução: Criar providers.tf ou mover config de main.tf para arquivo dedicado.

2. User Data não referenciado corretamente

  • Código encontrado em ec2.tf:
    user_data = file("${path.module}/user_data.sh")
  • Problema: Arquivo user_data.sh não está listado nos arquivos do portfolio. Sem este arquivo, o terraform apply falha.
  • Esperado: Arquivo com:
    • Instalação Node.js 18
    • Instalação Git
    • Clone do technova-api
    • npm install e start na porta 3000
  • Solução: Criar e versionar user_data.sh.

3. Evidências de funcionamento completamente ausentes

  • ❌ Nenhum terraform-plan-output.txt
  • ❌ Nenhum evidencia-api.json (resposta do curl)
  • ❌ Nenhum evidencia-ssh.txt
  • Impacto: Impossível verificar que a infra realmente funciona. Requisito explícito do TF.
  • Esperado: Arquivo entrega.md com estes arquivos attachados ou links para evidências no PR.

4. Key Pair referencia chave local não versionada

  • Código:
    public_key = file("technova-key.pub")
  • Problema: Arquivo technova-key.pub não está no repositório (correto por segurança, mas cria bloqueio de execução).
  • Esperado: Adicionar comentário no README sobre geração das chaves antes de terraform apply, OU usar aws_key_pair com chave gerada por Terraform.
  • Impacto: Quem clonar o repo não consegue executar terraform apply sem gerar a chave primeiro.

5. IAM Instance Profile reutiliza role do Academy

  • Código em iam.tf:
    data "aws_iam_role" "lab_role" {
      name = "LabRole"
    }
    data "aws_iam_instance_profile" "lab_profile" {
      name = "LabInstanceProfile"
    }
  • Problema: Não cria role/profile próprios com AmazonS3ReadOnlyAccess como exigido. Apenas referencia a role existente do Academy.
  • Requisito: "IAM Role com permissão AmazonS3ReadOnlyAccess" — deveria ser criada, não apenas referenciada.
  • Solução: Criar role/policy/profile específicas no Terraform com a permissão S3.

6. Entrega.md incorreta

  • Encontrado: Arquivo menciona "Aula 03" e "Terraform + IAM Completo", não Aula 04 VPC+EC2.
  • Esperado: entrega.md conforme template do TF, com link para portfolio, checkboxes de evidências preenchidas.
  • Impacto: Não há registro claro de entrega da Aula 04.

Resumo Executivo

O código demonstra compreensão sólida de networking AWS (VPC, subnets Multi-AZ, IGW, route tables, SGs), mas não é executável como está porque:

  1. Falta arquivo user_data.sh → EC2 não inicia aplicação
  2. Falta chave SSH pública versionada → terraform apply bloqueia
  3. Falta evidências de funcionamento → impossível validar
  4. IAM não implementado conforme spec → apenas reutiliza lab role

O README está bem estruturado, mas o código tem gaps críticos de entregabilidade.


Parecer para o PR

## ⚠️ Revisão do Pull Request — Aula 04: VPC + EC2 Multi-AZ

### Status: **AGUARDANDO AJUSTES**

Parabéns pelo trabalho estruturado! A infraestrutura de networking está bem projetada com Multi-AZ, security groups com menor privilégio e tags consistentes. Porém, há **bloqueadores críticos** que impedem aprovação:

### 🔴 Bloqueadores Críticos

1. **Arquivo `user_data.sh` ausente**
   - A referência em `ec2.tf` aponta para arquivo que não existe no repositório
   - Sem este arquivo, `terraform apply` falha
   - **Ação:** Crie `aula-04/user_data.sh` com os passos de instalação do Node.js, Git, clone da API e start da aplicação

2. **Chave SSH não versionada**
   - `ec2.tf` tenta carregar `technova-key.pub` (correto por segurança)
   - Quem clonar não conseguirá executar sem gerar a chave
   - **Ação:** Adicione no README passo-a-passo para gerar a chave (ex: `ssh-keygen -f technova-key`)

3. **Evidências de funcionamento faltando**
   - Nenhum `terraform-plan-output.txt`, `evidencia-api.json` ou `evidencia-ssh.txt`
   - **Ação:** Execute `terraform plan` e capture outputs, execute `curl` na API, teste SSH com User Data funcionando

4. **Arquivo `entrega.md` incorreto**
   - Atual menciona "Aula 03 Terraform + IAM"
   - **Ação:** Atualize para Aula 04, inclua checkboxes de evidências preenchidas conforme template

5. **IAM Role não criada conforme especificação**
   - Código apenas referencia `LabRole` e `LabInstanceProfile` do Academy
   - Requisito: criar role com `AmazonS3ReadOnlyAccess`
   - **Ação:** Implemente em `iam.tf` a criação da role, policy attachment e instance profile

6. **Arquivo `providers.tf` ausente**
   - Recomendação: separar bloco `terraform` e `provider` em arquivo dedicado para melhor manutenção

### 🟡 Melhorias Sugeridas

- Adicione comentários explicando as decisões Multi-AZ no README
- Considere usar variáveis para os CIDRs das subnets (maior reutilização)
- No README, crie tabela descrevendo cada recurso criado

### ✅ Pontos Fortes

- ✓ Networking Multi-AZ bem estruturado
- ✓ Security Groups com menor privilégio
- ✓ Tagging consistente em todos os recursos
- ✓ Organização clara de código (arquivos temáticos)
- ✓ Outputs completos

### 📋 Próximos Passos

1. Crie `user_data.sh` com instalação da API
2. Atualize README com instruções de geração de chave SSH
3. Execute `terraform plan``terraform apply` com sucesso
4. Capture evidências (curl, SSH, outputs)
5. Atualize `entrega.md` conforme template
6. Implemente IAM role própria com S3ReadOnly
7. Faça push com todos os ajustes e commente neste PR

**Após os ajustes, será possível avaliar a execução no AWS Academy para validar a nota final.**

Fico disponível para dúvidas!

Observação Final

A nota de 1,2/1,5 (80% dos critérios verificáveis) reflete código estruturado, mas não-executável. Uma vez corrigidos os bloqueadores (user_data.sh, evidências, IAM, entrega.md), a nota subirá para 1,5/1,5. O componente AWS Academy (20%) será avaliado pelo professor após funcionamento comprovado.


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

@AleTavares
AleTavares merged commit 4fdbea0 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