You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+134-8Lines changed: 134 additions & 8 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -135,18 +135,35 @@ Os manifestos foram estruturados seguindo boas práticas de organização, separ
135
135
136
136
## 🔁 Parte 4 — Pipeline CI/CD
137
137
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.
139
139
140
140
### ⚙️ Etapas do pipeline
141
141
142
142
O pipeline é executado a cada push na branch principal (`main`) e contempla as seguintes etapas:
143
143
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
150
167
151
168
---
152
169
@@ -209,8 +226,117 @@ Em um cenário de produção, poderiam ser implementadas melhorias como:
209
226
210
227
---
211
228
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)
0 commit comments