Skip to content

Commit cf43134

Browse files
committed
docs: atualiza README com validação de Terraform na pipeline e documentação da infraestrutura
1 parent d47cac9 commit cf43134

1 file changed

Lines changed: 134 additions & 8 deletions

File tree

README.md

Lines changed: 134 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -135,18 +135,35 @@ Os manifestos foram estruturados seguindo boas práticas de organização, separ
135135

136136
## 🔁 Parte 4 — Pipeline CI/CD
137137

138-
Foi implementado um pipeline de Integração Contínua utilizando GitHub Actions, com o objetivo de automatizar validações básicas da aplicação e análise de segurança da imagem Docker.
138+
Foi implementado um pipeline de Integração Contínua utilizando GitHub Actions, com o objetivo de automatizar validações básicas da aplicação, infraestrutura e análise de segurança da imagem Docker.
139139

140140
### ⚙️ Etapas do pipeline
141141

142142
O pipeline é executado a cada push na branch principal (`main`) e contempla as seguintes etapas:
143143

144-
- Checkout do código
145-
- Setup do ambiente Python
146-
- Instalação de dependências
147-
- Validação de sintaxe do código (lint básico)
148-
- Build da imagem Docker
149-
- Scan de vulnerabilidades com Trivy
144+
1. **Checkout do código**
145+
2. **Configuração do ambiente Python (lint básico)**
146+
3. **Instalação de dependências**
147+
4. **Validação de sintaxe da aplicação Python**
148+
5. **Validação de infraestrutura com Terraform**
149+
6. **Build da imagem Docker**
150+
7. **Scan de vulnerabilidades com Trivy**
151+
152+
---
153+
154+
### 🧠 Validação de Terraform
155+
156+
Foi adicionada uma etapa de validação da infraestrutura como código utilizando Terraform, contendo:
157+
158+
- `terraform init -backend=false`
159+
- `terraform fmt -check`
160+
- `terraform validate`
161+
162+
Essa etapa garante:
163+
164+
- Correção da sintaxe dos arquivos `.tf`
165+
- Padronização de formatação
166+
- Integridade da configuração antes do uso
150167

151168
---
152169

@@ -209,8 +226,117 @@ Em um cenário de produção, poderiam ser implementadas melhorias como:
209226

210227
---
211228

229+
230+
## 🌍 Parte 5 — Terraform (Infraestrutura como Código)
231+
232+
Foi implementado um exemplo simples de infraestrutura utilizando Terraform, com o objetivo de demonstrar conceitos fundamentais de Infraestrutura como Código (IaC), organização de variáveis e validação em pipeline CI/CD.
233+
234+
---
235+
236+
### 📁 Estrutura
237+
238+
Os arquivos foram organizados na pasta `terraform/`:
239+
240+
- `main.tf` → definição dos recursos
241+
- `variables.tf` → declaração das variáveis
242+
- `terraform.tfvars` → valores das variáveis
243+
- `outputs.tf` → saída de informações relevantes
244+
245+
---
246+
247+
### ⚙️ Recurso provisionado
248+
249+
Foi definido um recurso simples:
250+
251+
- **Bucket S3 (AWS)**
252+
253+
Este recurso foi escolhido por ser amplamente utilizado e suficiente para demonstrar conceitos básicos de provisionamento em cloud.
254+
255+
---
256+
257+
### 🧠 Uso de variáveis
258+
259+
As variáveis foram utilizadas para tornar o código reutilizável e flexível.
260+
261+
Exemplos:
262+
263+
- `bucket_name`
264+
- `aws_region`
265+
- `environment`
266+
267+
Os valores são definidos no arquivo `terraform.tfvars`, garantindo separação entre configuração e código.
268+
269+
---
270+
271+
### 🔄 Fluxo de utilização
272+
273+
O fluxo do Terraform neste projeto segue:
274+
275+
1. Declaração de variáveis (`variables.tf`)
276+
2. Atribuição de valores (`terraform.tfvars`)
277+
3. Uso das variáveis nos recursos (`main.tf`)
278+
4. Exposição de outputs (`outputs.tf`)
279+
280+
---
281+
282+
### 📤 Outputs
283+
284+
Foi definido um output para exibir o nome do bucket criado:
285+
286+
- `bucket_name`
287+
288+
Outputs permitem visualizar informações importantes após execução e facilitam integrações futuras.
289+
290+
---
291+
292+
### 🔍 Validação no pipeline CI/CD
293+
294+
A infraestrutura é validada automaticamente na pipeline, garantindo qualidade antes de qualquer uso.
295+
296+
Etapas aplicadas:
297+
298+
- `terraform init -backend=false`
299+
- `terraform fmt -check`
300+
- `terraform validate`
301+
302+
Essa validação garante:
303+
304+
- Sintaxe correta
305+
- Código padronizado
306+
- Configuração consistente
307+
308+
---
309+
310+
### 🚫 Execução não obrigatória
311+
312+
Não foi realizado `terraform apply`, pois o objetivo do desafio é validar conhecimento estrutural e organização do código, não sendo necessário provisionar recursos reais.
313+
314+
---
315+
316+
### 🧠 Decisões técnicas
317+
318+
- Uso de variáveis para evitar hardcoding
319+
- Separação entre código e configuração
320+
- Estrutura modular e organizada
321+
- Integração com pipeline CI/CD
322+
- Validação automatizada da infraestrutura
323+
324+
---
325+
326+
### 🔧 Possíveis melhorias
327+
328+
Em um cenário real:
329+
330+
- Backend remoto para state (S3 + DynamoDB)
331+
- Uso de módulos reutilizáveis
332+
- Workspaces para múltiplos ambientes
333+
- Integração com CI/CD para apply controlado
334+
- Políticas de segurança (IAM com menor privilégio)
335+
- Validação avançada de variáveis
336+
337+
---
338+
212339
## 📌 Próximas etapas
213340

214-
- Terraform
215341
- Segurança
216342

0 commit comments

Comments
 (0)