raijin-server 0.2.41__tar.gz → 0.3.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (60) hide show
  1. raijin_server-0.3.1/PKG-INFO +362 -0
  2. raijin_server-0.3.1/README.md +329 -0
  3. {raijin_server-0.2.41 → raijin_server-0.3.1}/setup.cfg +1 -1
  4. raijin_server-0.3.1/src/raijin_server/__init__.py +5 -0
  5. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/cli.py +6 -0
  6. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/__init__.py +3 -1
  7. raijin_server-0.3.1/src/raijin_server/modules/grafana.py +554 -0
  8. raijin_server-0.3.1/src/raijin_server/modules/internal_dns.py +446 -0
  9. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/kong.py +8 -4
  10. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/minio.py +15 -5
  11. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/observability_ingress.py +29 -1
  12. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/prometheus.py +266 -3
  13. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/traefik.py +35 -1
  14. raijin_server-0.3.1/src/raijin_server/modules/vpn_client.py +526 -0
  15. raijin_server-0.3.1/src/raijin_server.egg-info/PKG-INFO +362 -0
  16. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server.egg-info/SOURCES.txt +2 -0
  17. raijin_server-0.2.41/PKG-INFO +0 -564
  18. raijin_server-0.2.41/README.md +0 -531
  19. raijin_server-0.2.41/src/raijin_server/__init__.py +0 -5
  20. raijin_server-0.2.41/src/raijin_server/modules/grafana.py +0 -205
  21. raijin_server-0.2.41/src/raijin_server.egg-info/PKG-INFO +0 -564
  22. {raijin_server-0.2.41 → raijin_server-0.3.1}/LICENSE +0 -0
  23. {raijin_server-0.2.41 → raijin_server-0.3.1}/pyproject.toml +0 -0
  24. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/config.py +0 -0
  25. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/healthchecks.py +0 -0
  26. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/module_manager.py +0 -0
  27. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/apokolips_demo.py +0 -0
  28. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/bootstrap.py +0 -0
  29. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/calico.py +0 -0
  30. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/cert_manager.py +0 -0
  31. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/essentials.py +0 -0
  32. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/firewall.py +0 -0
  33. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/full_install.py +0 -0
  34. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/hardening.py +0 -0
  35. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/harness.py +0 -0
  36. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/istio.py +0 -0
  37. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/kafka.py +0 -0
  38. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/kubernetes.py +0 -0
  39. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/loki.py +0 -0
  40. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/metallb.py +0 -0
  41. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/network.py +0 -0
  42. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/observability_dashboards.py +0 -0
  43. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/sanitize.py +0 -0
  44. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/secrets.py +0 -0
  45. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/ssh_hardening.py +0 -0
  46. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/velero.py +0 -0
  47. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/modules/vpn.py +0 -0
  48. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/scripts/__init__.py +0 -0
  49. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/scripts/checklist.sh +0 -0
  50. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/scripts/install.sh +0 -0
  51. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/scripts/log_size_metric.sh +0 -0
  52. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/scripts/pre-deploy-check.sh +0 -0
  53. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/utils.py +0 -0
  54. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server/validators.py +0 -0
  55. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server.egg-info/dependency_links.txt +0 -0
  56. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server.egg-info/entry_points.txt +0 -0
  57. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server.egg-info/requires.txt +0 -0
  58. {raijin_server-0.2.41 → raijin_server-0.3.1}/src/raijin_server.egg-info/top_level.txt +0 -0
  59. {raijin_server-0.2.41 → raijin_server-0.3.1}/tests/test_full_install_sequence.py +0 -0
  60. {raijin_server-0.2.41 → raijin_server-0.3.1}/tests/test_registry.py +0 -0
@@ -0,0 +1,362 @@
1
+ Metadata-Version: 2.4
2
+ Name: raijin-server
3
+ Version: 0.3.1
4
+ Summary: CLI para automacao de setup e hardening de servidores Ubuntu Server.
5
+ Home-page: https://example.com/raijin-server
6
+ Author: Equipe Raijin
7
+ License: MIT
8
+ Classifier: Programming Language :: Python :: 3
9
+ Classifier: Programming Language :: Python :: 3 :: Only
10
+ Classifier: Programming Language :: Python :: 3.9
11
+ Classifier: License :: OSI Approved :: MIT License
12
+ Classifier: Intended Audience :: System Administrators
13
+ Classifier: Environment :: Console
14
+ Requires-Python: >=3.9
15
+ Description-Content-Type: text/markdown
16
+ License-File: LICENSE
17
+ Requires-Dist: typer>=0.12
18
+ Requires-Dist: rich>=13.7
19
+ Provides-Extra: yaml
20
+ Requires-Dist: pyyaml>=6.0; extra == "yaml"
21
+ Provides-Extra: dev
22
+ Requires-Dist: pytest>=7.0; extra == "dev"
23
+ Requires-Dist: pytest-cov>=4.0; extra == "dev"
24
+ Requires-Dist: black>=23.0; extra == "dev"
25
+ Requires-Dist: ruff>=0.1; extra == "dev"
26
+ Provides-Extra: all
27
+ Requires-Dist: pyyaml>=6.0; extra == "all"
28
+ Requires-Dist: pytest>=7.0; extra == "all"
29
+ Requires-Dist: pytest-cov>=4.0; extra == "all"
30
+ Requires-Dist: black>=23.0; extra == "all"
31
+ Requires-Dist: ruff>=0.1; extra == "all"
32
+ Dynamic: license-file
33
+
34
+ # Raijin Server
35
+
36
+ CLI em Python para automatizar setup e hardening de servidores Ubuntu Server. Orquestra rede, firewall, Kubernetes, observabilidade e backups de forma segura e idempotente.
37
+
38
+ ## Índice
39
+
40
+ - [Requisitos](#requisitos)
41
+ - [Instalação](#instalação)
42
+ - [Primeiros Passos](#primeiros-passos)
43
+ - [Módulos Disponíveis](#módulos-disponíveis)
44
+ - [Acesso Remoto Seguro](#acesso-remoto-seguro)
45
+ - [Documentação](#documentação)
46
+
47
+ ---
48
+
49
+ ## Requisitos
50
+
51
+ - Ubuntu Server 20.04+
52
+ - Python 3.9+
53
+ - 4GB RAM mínimo (8GB recomendado)
54
+ - 20GB disco livre
55
+
56
+ ```bash
57
+ # Instalar dependências Python (se necessário)
58
+ sudo apt update && sudo apt install -y python3 python3-venv python3-pip
59
+ ```
60
+
61
+ ---
62
+
63
+ ## Instalação
64
+
65
+ > ⚠️ **Importante:** Sempre use um ambiente virtual (venv) para isolar dependências.
66
+
67
+ ### 1. Criar ambiente virtual
68
+
69
+ ```bash
70
+ # Criar venv chamado "midgard"
71
+ python3 -m venv ~/.venvs/midgard
72
+
73
+ # Ativar o venv
74
+ source ~/.venvs/midgard/bin/activate
75
+
76
+ # Atualizar pip
77
+ pip install -U pip setuptools
78
+ ```
79
+
80
+ ### 2. Instalar Raijin Server
81
+
82
+ ```bash
83
+ # Instalar do PyPI (substitua X.X.X pela versão desejada)
84
+ pip install raijin-server==X.X.X
85
+ ```
86
+
87
+ ### 3. Executar com sudo
88
+
89
+ O Raijin precisa de permissões root. Use `-E` para preservar o venv:
90
+
91
+ ```bash
92
+ # Verificar instalação
93
+ sudo -E ~/.venvs/midgard/bin/raijin-server --version
94
+
95
+ # Abrir menu interativo
96
+ sudo -E ~/.venvs/midgard/bin/raijin-server menu
97
+ ```
98
+
99
+ ### 4. Desativar venv (quando terminar)
100
+
101
+ ```bash
102
+ deactivate
103
+ ```
104
+
105
+ > 💡 **Dica:** Para reinstalar, remova o venv (`rm -rf ~/.venvs/midgard`) e repita os passos.
106
+
107
+ ---
108
+
109
+ ## Primeiros Passos
110
+
111
+ ### Validar Sistema
112
+
113
+ Verifica se o sistema atende aos pré-requisitos:
114
+
115
+ ```bash
116
+ sudo -E ~/.venvs/midgard/bin/raijin-server validate
117
+ ```
118
+
119
+ ### Menu Interativo
120
+
121
+ Forma mais fácil de usar - navegue pelos módulos visualmente:
122
+
123
+ ```bash
124
+ sudo -E ~/.venvs/midgard/bin/raijin-server menu
125
+ ```
126
+
127
+ ### Instalação Completa Automatizada
128
+
129
+ Instala tudo de uma vez, na ordem correta:
130
+
131
+ ```bash
132
+ sudo -E ~/.venvs/midgard/bin/raijin-server full-install
133
+ ```
134
+
135
+ **Opções úteis:**
136
+
137
+ | Opção | Descrição |
138
+ |-------|-----------|
139
+ | `--select-steps` | Escolher módulos antes de executar |
140
+ | `--confirm-each` | Confirmar cada módulo |
141
+ | `--dry-run` | Simular sem aplicar mudanças |
142
+ | `--steps "a,b,c"` | Executar módulos específicos |
143
+
144
+ ### Executar Módulo Específico
145
+
146
+ ```bash
147
+ # Exemplo: instalar apenas Kubernetes
148
+ sudo -E ~/.venvs/midgard/bin/raijin-server kubernetes
149
+
150
+ # Modo dry-run (apenas simula)
151
+ sudo -E ~/.venvs/midgard/bin/raijin-server --dry-run kubernetes
152
+ ```
153
+
154
+ ---
155
+
156
+ ## Módulos Disponíveis
157
+
158
+ ### 🔧 Base do Sistema
159
+
160
+ | Módulo | Descrição |
161
+ |--------|-----------|
162
+ | `sanitize` | Remove instalações antigas do Kubernetes |
163
+ | `bootstrap` | Instala helm, kubectl, containerd |
164
+ | `essentials` | Pacotes básicos (curl, git, jq, etc.) |
165
+ | `hardening` | Fail2ban, sysctl, unattended-upgrades |
166
+ | `network` | IP estático via Netplan (opcional) |
167
+ | `firewall` | Regras UFW para SSH/HTTP/HTTPS/K8s |
168
+
169
+ ### ☸️ Kubernetes
170
+
171
+ | Módulo | Descrição |
172
+ |--------|-----------|
173
+ | `kubernetes` | Inicializa cluster com kubeadm |
174
+ | `calico` | CNI com network policies |
175
+ | `metallb` | LoadBalancer para bare metal |
176
+ | `secrets` | Sealed-secrets + external-secrets |
177
+ | `cert-manager` | Certificados TLS automáticos |
178
+
179
+ ### 🌐 Ingress (escolha um)
180
+
181
+ | Módulo | Descrição |
182
+ |--------|-----------|
183
+ | `traefik` | Ingress controller com TLS/ACME |
184
+ | `kong` | API Gateway avançado |
185
+
186
+ ### 📊 Observabilidade
187
+
188
+ | Módulo | Descrição |
189
+ |--------|-----------|
190
+ | `prometheus` | Métricas e alertas |
191
+ | `grafana` | Dashboards de visualização |
192
+ | `loki` | Agregação de logs |
193
+ | `observability-ingress` | Ingress seguro para dashboards |
194
+ | `observability-dashboards` | Dashboards pré-configurados |
195
+
196
+ ### 💾 Storage e Mensageria
197
+
198
+ | Módulo | Descrição |
199
+ |--------|-----------|
200
+ | `minio` | Object storage S3-compatível |
201
+ | `kafka` | Mensageria distribuída |
202
+ | `velero` | Backup e restore do cluster |
203
+
204
+ ### 🔒 VPN e Segurança
205
+
206
+ | Módulo | Descrição |
207
+ |--------|-----------|
208
+ | `vpn` | Servidor WireGuard + cliente inicial |
209
+ | `vpn-client` | Gerenciar clientes VPN (adicionar/remover) |
210
+ | `ssh-hardening` | Políticas seguras de SSH |
211
+ | `internal-dns` | DNS interno (*.asgard.internal) |
212
+
213
+ ### 🚀 Service Mesh
214
+
215
+ | Módulo | Descrição |
216
+ |--------|-----------|
217
+ | `istio` | Service mesh completo |
218
+
219
+ ---
220
+
221
+ ## Acesso Remoto Seguro
222
+
223
+ O Raijin prioriza segurança. Dashboards administrativos **não são expostos publicamente** por padrão.
224
+
225
+ ### Opção 1: VPN (Recomendado)
226
+
227
+ ```bash
228
+ # 1. Configurar servidor VPN
229
+ sudo -E ~/.venvs/midgard/bin/raijin-server vpn
230
+
231
+ # 2. Adicionar clientes
232
+ sudo -E ~/.venvs/midgard/bin/raijin-server vpn-client
233
+
234
+ # 3. Configurar DNS interno (opcional, mas muito útil!)
235
+ sudo -E ~/.venvs/midgard/bin/raijin-server internal-dns
236
+ ```
237
+
238
+ Após conectar à VPN, acesse diretamente:
239
+ - `http://grafana.asgard.internal`
240
+ - `http://prometheus.asgard.internal`
241
+ - `http://minio.asgard.internal`
242
+
243
+ ### Opção 2: Port-Forward via SSH
244
+
245
+ ```bash
246
+ # Grafana
247
+ ssh -L 3000:localhost:3000 usuario@servidor
248
+ kubectl port-forward svc/grafana -n observability 3000:80
249
+
250
+ # Acesse: http://localhost:3000
251
+ ```
252
+
253
+ ### Opção 3: Script Automatizado
254
+
255
+ ```bash
256
+ # Iniciar todos os port-forwards
257
+ ~/raijin-server/scripts/port-forward-all.sh start
258
+
259
+ # Parar
260
+ ~/raijin-server/scripts/port-forward-all.sh stop
261
+ ```
262
+
263
+ ---
264
+
265
+ ## Documentação
266
+
267
+ | Documento | Descrição |
268
+ |-----------|-----------|
269
+ | [ARCHITECTURE.md](ARCHITECTURE.md) | Arquitetura técnica do ambiente |
270
+ | [SECURITY.md](SECURITY.md) | Políticas de segurança |
271
+ | [AUDIT.md](AUDIT.md) | Relatório de auditoria |
272
+ | [docs/VERSIONING.md](docs/VERSIONING.md) | Versionamento e tags |
273
+ | [docs/INFRASTRUCTURE_GUIDE.md](docs/INFRASTRUCTURE_GUIDE.md) | Guia completo de infraestrutura |
274
+ | [docs/VPN_REMOTE_ACCESS.md](docs/VPN_REMOTE_ACCESS.md) | Configuração de VPN |
275
+ | [docs/INTERNAL_DNS.md](docs/INTERNAL_DNS.md) | DNS interno para domínios privados |
276
+ | [docs/VISUAL_TOOLS.md](docs/VISUAL_TOOLS.md) | Ferramentas visuais (Lens, K9s) |
277
+ | [docs/SSH_WINDOWS.md](docs/SSH_WINDOWS.md) | Acesso SSH do Windows |
278
+ | [docs/MINIO_OPERATIONS.md](docs/MINIO_OPERATIONS.md) | Operações do MinIO |
279
+
280
+ ---
281
+
282
+ ## Comandos Úteis
283
+
284
+ ```bash
285
+ # Atalho para o comando (após ativar venv)
286
+ alias raijin='sudo -E ~/.venvs/midgard/bin/raijin-server'
287
+
288
+ # Exemplos
289
+ raijin --version
290
+ raijin validate
291
+ raijin menu
292
+ raijin --dry-run kubernetes
293
+ ```
294
+
295
+ ### Logs e Debug
296
+
297
+ ```bash
298
+ # Ver logs do CLI
299
+ raijin debug logs --lines 200
300
+
301
+ # Seguir logs em tempo real
302
+ raijin debug logs --follow
303
+
304
+ # Snapshot do cluster
305
+ raijin debug kube --events 100
306
+ ```
307
+
308
+ ---
309
+
310
+ ## Desenvolvimento
311
+
312
+ ### Instalar em modo dev
313
+
314
+ ```bash
315
+ # Clonar repositório
316
+ git clone https://github.com/rafaelluisdacostacoelho/raijin-server
317
+ cd raijin-server
318
+
319
+ # Criar venv de desenvolvimento
320
+ python3 -m venv .venv
321
+ source .venv/bin/activate
322
+
323
+ # Instalar em modo editável
324
+ pip install -e ".[dev]"
325
+
326
+ # Rodar testes
327
+ pytest
328
+ ```
329
+
330
+ ### Publicar no PyPI
331
+
332
+ ```bash
333
+ # 1. Criar venv limpo para publicação
334
+ python3 -m venv ~/.venvs/publish
335
+ source ~/.venvs/publish/bin/activate
336
+ pip install -U pip build twine
337
+
338
+ # 2. Build
339
+ rm -rf dist build
340
+ python -m build
341
+
342
+ # 3. Publicar (configure TWINE_API_TOKEN no .env)
343
+ ./release.sh X.X.X
344
+ ```
345
+
346
+ ---
347
+
348
+ ## Destaques
349
+
350
+ - ✅ **Validações automáticas** de pré-requisitos
351
+ - ✅ **Health checks** após cada instalação
352
+ - ✅ **Retry inteligente** com backoff exponencial
353
+ - ✅ **Logging estruturado** com rotação
354
+ - ✅ **Modo dry-run** para simular mudanças
355
+ - ✅ **Idempotente** - re-execução segura
356
+ - ✅ **VPN-first** - dashboards seguros por padrão
357
+
358
+ ---
359
+
360
+ ## Licença
361
+
362
+ MIT License - veja [LICENSE](LICENSE) para detalhes.
@@ -0,0 +1,329 @@
1
+ # Raijin Server
2
+
3
+ CLI em Python para automatizar setup e hardening de servidores Ubuntu Server. Orquestra rede, firewall, Kubernetes, observabilidade e backups de forma segura e idempotente.
4
+
5
+ ## Índice
6
+
7
+ - [Requisitos](#requisitos)
8
+ - [Instalação](#instalação)
9
+ - [Primeiros Passos](#primeiros-passos)
10
+ - [Módulos Disponíveis](#módulos-disponíveis)
11
+ - [Acesso Remoto Seguro](#acesso-remoto-seguro)
12
+ - [Documentação](#documentação)
13
+
14
+ ---
15
+
16
+ ## Requisitos
17
+
18
+ - Ubuntu Server 20.04+
19
+ - Python 3.9+
20
+ - 4GB RAM mínimo (8GB recomendado)
21
+ - 20GB disco livre
22
+
23
+ ```bash
24
+ # Instalar dependências Python (se necessário)
25
+ sudo apt update && sudo apt install -y python3 python3-venv python3-pip
26
+ ```
27
+
28
+ ---
29
+
30
+ ## Instalação
31
+
32
+ > ⚠️ **Importante:** Sempre use um ambiente virtual (venv) para isolar dependências.
33
+
34
+ ### 1. Criar ambiente virtual
35
+
36
+ ```bash
37
+ # Criar venv chamado "midgard"
38
+ python3 -m venv ~/.venvs/midgard
39
+
40
+ # Ativar o venv
41
+ source ~/.venvs/midgard/bin/activate
42
+
43
+ # Atualizar pip
44
+ pip install -U pip setuptools
45
+ ```
46
+
47
+ ### 2. Instalar Raijin Server
48
+
49
+ ```bash
50
+ # Instalar do PyPI (substitua X.X.X pela versão desejada)
51
+ pip install raijin-server==X.X.X
52
+ ```
53
+
54
+ ### 3. Executar com sudo
55
+
56
+ O Raijin precisa de permissões root. Use `-E` para preservar o venv:
57
+
58
+ ```bash
59
+ # Verificar instalação
60
+ sudo -E ~/.venvs/midgard/bin/raijin-server --version
61
+
62
+ # Abrir menu interativo
63
+ sudo -E ~/.venvs/midgard/bin/raijin-server menu
64
+ ```
65
+
66
+ ### 4. Desativar venv (quando terminar)
67
+
68
+ ```bash
69
+ deactivate
70
+ ```
71
+
72
+ > 💡 **Dica:** Para reinstalar, remova o venv (`rm -rf ~/.venvs/midgard`) e repita os passos.
73
+
74
+ ---
75
+
76
+ ## Primeiros Passos
77
+
78
+ ### Validar Sistema
79
+
80
+ Verifica se o sistema atende aos pré-requisitos:
81
+
82
+ ```bash
83
+ sudo -E ~/.venvs/midgard/bin/raijin-server validate
84
+ ```
85
+
86
+ ### Menu Interativo
87
+
88
+ Forma mais fácil de usar - navegue pelos módulos visualmente:
89
+
90
+ ```bash
91
+ sudo -E ~/.venvs/midgard/bin/raijin-server menu
92
+ ```
93
+
94
+ ### Instalação Completa Automatizada
95
+
96
+ Instala tudo de uma vez, na ordem correta:
97
+
98
+ ```bash
99
+ sudo -E ~/.venvs/midgard/bin/raijin-server full-install
100
+ ```
101
+
102
+ **Opções úteis:**
103
+
104
+ | Opção | Descrição |
105
+ |-------|-----------|
106
+ | `--select-steps` | Escolher módulos antes de executar |
107
+ | `--confirm-each` | Confirmar cada módulo |
108
+ | `--dry-run` | Simular sem aplicar mudanças |
109
+ | `--steps "a,b,c"` | Executar módulos específicos |
110
+
111
+ ### Executar Módulo Específico
112
+
113
+ ```bash
114
+ # Exemplo: instalar apenas Kubernetes
115
+ sudo -E ~/.venvs/midgard/bin/raijin-server kubernetes
116
+
117
+ # Modo dry-run (apenas simula)
118
+ sudo -E ~/.venvs/midgard/bin/raijin-server --dry-run kubernetes
119
+ ```
120
+
121
+ ---
122
+
123
+ ## Módulos Disponíveis
124
+
125
+ ### 🔧 Base do Sistema
126
+
127
+ | Módulo | Descrição |
128
+ |--------|-----------|
129
+ | `sanitize` | Remove instalações antigas do Kubernetes |
130
+ | `bootstrap` | Instala helm, kubectl, containerd |
131
+ | `essentials` | Pacotes básicos (curl, git, jq, etc.) |
132
+ | `hardening` | Fail2ban, sysctl, unattended-upgrades |
133
+ | `network` | IP estático via Netplan (opcional) |
134
+ | `firewall` | Regras UFW para SSH/HTTP/HTTPS/K8s |
135
+
136
+ ### ☸️ Kubernetes
137
+
138
+ | Módulo | Descrição |
139
+ |--------|-----------|
140
+ | `kubernetes` | Inicializa cluster com kubeadm |
141
+ | `calico` | CNI com network policies |
142
+ | `metallb` | LoadBalancer para bare metal |
143
+ | `secrets` | Sealed-secrets + external-secrets |
144
+ | `cert-manager` | Certificados TLS automáticos |
145
+
146
+ ### 🌐 Ingress (escolha um)
147
+
148
+ | Módulo | Descrição |
149
+ |--------|-----------|
150
+ | `traefik` | Ingress controller com TLS/ACME |
151
+ | `kong` | API Gateway avançado |
152
+
153
+ ### 📊 Observabilidade
154
+
155
+ | Módulo | Descrição |
156
+ |--------|-----------|
157
+ | `prometheus` | Métricas e alertas |
158
+ | `grafana` | Dashboards de visualização |
159
+ | `loki` | Agregação de logs |
160
+ | `observability-ingress` | Ingress seguro para dashboards |
161
+ | `observability-dashboards` | Dashboards pré-configurados |
162
+
163
+ ### 💾 Storage e Mensageria
164
+
165
+ | Módulo | Descrição |
166
+ |--------|-----------|
167
+ | `minio` | Object storage S3-compatível |
168
+ | `kafka` | Mensageria distribuída |
169
+ | `velero` | Backup e restore do cluster |
170
+
171
+ ### 🔒 VPN e Segurança
172
+
173
+ | Módulo | Descrição |
174
+ |--------|-----------|
175
+ | `vpn` | Servidor WireGuard + cliente inicial |
176
+ | `vpn-client` | Gerenciar clientes VPN (adicionar/remover) |
177
+ | `ssh-hardening` | Políticas seguras de SSH |
178
+ | `internal-dns` | DNS interno (*.asgard.internal) |
179
+
180
+ ### 🚀 Service Mesh
181
+
182
+ | Módulo | Descrição |
183
+ |--------|-----------|
184
+ | `istio` | Service mesh completo |
185
+
186
+ ---
187
+
188
+ ## Acesso Remoto Seguro
189
+
190
+ O Raijin prioriza segurança. Dashboards administrativos **não são expostos publicamente** por padrão.
191
+
192
+ ### Opção 1: VPN (Recomendado)
193
+
194
+ ```bash
195
+ # 1. Configurar servidor VPN
196
+ sudo -E ~/.venvs/midgard/bin/raijin-server vpn
197
+
198
+ # 2. Adicionar clientes
199
+ sudo -E ~/.venvs/midgard/bin/raijin-server vpn-client
200
+
201
+ # 3. Configurar DNS interno (opcional, mas muito útil!)
202
+ sudo -E ~/.venvs/midgard/bin/raijin-server internal-dns
203
+ ```
204
+
205
+ Após conectar à VPN, acesse diretamente:
206
+ - `http://grafana.asgard.internal`
207
+ - `http://prometheus.asgard.internal`
208
+ - `http://minio.asgard.internal`
209
+
210
+ ### Opção 2: Port-Forward via SSH
211
+
212
+ ```bash
213
+ # Grafana
214
+ ssh -L 3000:localhost:3000 usuario@servidor
215
+ kubectl port-forward svc/grafana -n observability 3000:80
216
+
217
+ # Acesse: http://localhost:3000
218
+ ```
219
+
220
+ ### Opção 3: Script Automatizado
221
+
222
+ ```bash
223
+ # Iniciar todos os port-forwards
224
+ ~/raijin-server/scripts/port-forward-all.sh start
225
+
226
+ # Parar
227
+ ~/raijin-server/scripts/port-forward-all.sh stop
228
+ ```
229
+
230
+ ---
231
+
232
+ ## Documentação
233
+
234
+ | Documento | Descrição |
235
+ |-----------|-----------|
236
+ | [ARCHITECTURE.md](ARCHITECTURE.md) | Arquitetura técnica do ambiente |
237
+ | [SECURITY.md](SECURITY.md) | Políticas de segurança |
238
+ | [AUDIT.md](AUDIT.md) | Relatório de auditoria |
239
+ | [docs/VERSIONING.md](docs/VERSIONING.md) | Versionamento e tags |
240
+ | [docs/INFRASTRUCTURE_GUIDE.md](docs/INFRASTRUCTURE_GUIDE.md) | Guia completo de infraestrutura |
241
+ | [docs/VPN_REMOTE_ACCESS.md](docs/VPN_REMOTE_ACCESS.md) | Configuração de VPN |
242
+ | [docs/INTERNAL_DNS.md](docs/INTERNAL_DNS.md) | DNS interno para domínios privados |
243
+ | [docs/VISUAL_TOOLS.md](docs/VISUAL_TOOLS.md) | Ferramentas visuais (Lens, K9s) |
244
+ | [docs/SSH_WINDOWS.md](docs/SSH_WINDOWS.md) | Acesso SSH do Windows |
245
+ | [docs/MINIO_OPERATIONS.md](docs/MINIO_OPERATIONS.md) | Operações do MinIO |
246
+
247
+ ---
248
+
249
+ ## Comandos Úteis
250
+
251
+ ```bash
252
+ # Atalho para o comando (após ativar venv)
253
+ alias raijin='sudo -E ~/.venvs/midgard/bin/raijin-server'
254
+
255
+ # Exemplos
256
+ raijin --version
257
+ raijin validate
258
+ raijin menu
259
+ raijin --dry-run kubernetes
260
+ ```
261
+
262
+ ### Logs e Debug
263
+
264
+ ```bash
265
+ # Ver logs do CLI
266
+ raijin debug logs --lines 200
267
+
268
+ # Seguir logs em tempo real
269
+ raijin debug logs --follow
270
+
271
+ # Snapshot do cluster
272
+ raijin debug kube --events 100
273
+ ```
274
+
275
+ ---
276
+
277
+ ## Desenvolvimento
278
+
279
+ ### Instalar em modo dev
280
+
281
+ ```bash
282
+ # Clonar repositório
283
+ git clone https://github.com/rafaelluisdacostacoelho/raijin-server
284
+ cd raijin-server
285
+
286
+ # Criar venv de desenvolvimento
287
+ python3 -m venv .venv
288
+ source .venv/bin/activate
289
+
290
+ # Instalar em modo editável
291
+ pip install -e ".[dev]"
292
+
293
+ # Rodar testes
294
+ pytest
295
+ ```
296
+
297
+ ### Publicar no PyPI
298
+
299
+ ```bash
300
+ # 1. Criar venv limpo para publicação
301
+ python3 -m venv ~/.venvs/publish
302
+ source ~/.venvs/publish/bin/activate
303
+ pip install -U pip build twine
304
+
305
+ # 2. Build
306
+ rm -rf dist build
307
+ python -m build
308
+
309
+ # 3. Publicar (configure TWINE_API_TOKEN no .env)
310
+ ./release.sh X.X.X
311
+ ```
312
+
313
+ ---
314
+
315
+ ## Destaques
316
+
317
+ - ✅ **Validações automáticas** de pré-requisitos
318
+ - ✅ **Health checks** após cada instalação
319
+ - ✅ **Retry inteligente** com backoff exponencial
320
+ - ✅ **Logging estruturado** com rotação
321
+ - ✅ **Modo dry-run** para simular mudanças
322
+ - ✅ **Idempotente** - re-execução segura
323
+ - ✅ **VPN-first** - dashboards seguros por padrão
324
+
325
+ ---
326
+
327
+ ## Licença
328
+
329
+ MIT License - veja [LICENSE](LICENSE) para detalhes.
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = raijin-server
3
- version = 0.2.41
3
+ version = 0.3.1
4
4
  description = CLI para automacao de setup e hardening de servidores Ubuntu Server.
5
5
  long_description = file: README.md
6
6
  long_description_content_type = text/markdown
@@ -0,0 +1,5 @@
1
+ """Pacote principal do CLI Raijin Server."""
2
+
3
+ __version__ = "0.3.1"
4
+
5
+ __all__ = ["__version__"]