raijin-server 0.2.40__tar.gz → 0.3.0__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.0/PKG-INFO +361 -0
  2. raijin_server-0.3.0/README.md +328 -0
  3. {raijin_server-0.2.40 → raijin_server-0.3.0}/setup.cfg +1 -1
  4. raijin_server-0.3.0/src/raijin_server/__init__.py +5 -0
  5. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/cli.py +6 -0
  6. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/__init__.py +3 -1
  7. raijin_server-0.3.0/src/raijin_server/modules/grafana.py +554 -0
  8. raijin_server-0.3.0/src/raijin_server/modules/internal_dns.py +446 -0
  9. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/kong.py +8 -4
  10. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/minio.py +24 -53
  11. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/observability_ingress.py +29 -1
  12. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/prometheus.py +266 -3
  13. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/traefik.py +35 -1
  14. raijin_server-0.3.0/src/raijin_server/modules/vpn_client.py +438 -0
  15. raijin_server-0.3.0/src/raijin_server.egg-info/PKG-INFO +361 -0
  16. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server.egg-info/SOURCES.txt +2 -0
  17. raijin_server-0.2.40/PKG-INFO +0 -564
  18. raijin_server-0.2.40/README.md +0 -531
  19. raijin_server-0.2.40/src/raijin_server/__init__.py +0 -5
  20. raijin_server-0.2.40/src/raijin_server/modules/grafana.py +0 -205
  21. raijin_server-0.2.40/src/raijin_server.egg-info/PKG-INFO +0 -564
  22. {raijin_server-0.2.40 → raijin_server-0.3.0}/LICENSE +0 -0
  23. {raijin_server-0.2.40 → raijin_server-0.3.0}/pyproject.toml +0 -0
  24. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/config.py +0 -0
  25. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/healthchecks.py +0 -0
  26. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/module_manager.py +0 -0
  27. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/apokolips_demo.py +0 -0
  28. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/bootstrap.py +0 -0
  29. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/calico.py +0 -0
  30. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/cert_manager.py +0 -0
  31. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/essentials.py +0 -0
  32. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/firewall.py +0 -0
  33. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/full_install.py +0 -0
  34. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/hardening.py +0 -0
  35. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/harness.py +0 -0
  36. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/istio.py +0 -0
  37. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/kafka.py +0 -0
  38. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/kubernetes.py +0 -0
  39. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/loki.py +0 -0
  40. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/metallb.py +0 -0
  41. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/network.py +0 -0
  42. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/observability_dashboards.py +0 -0
  43. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/sanitize.py +0 -0
  44. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/secrets.py +0 -0
  45. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/ssh_hardening.py +0 -0
  46. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/velero.py +0 -0
  47. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/modules/vpn.py +0 -0
  48. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/scripts/__init__.py +0 -0
  49. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/scripts/checklist.sh +0 -0
  50. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/scripts/install.sh +0 -0
  51. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/scripts/log_size_metric.sh +0 -0
  52. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/scripts/pre-deploy-check.sh +0 -0
  53. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/utils.py +0 -0
  54. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server/validators.py +0 -0
  55. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server.egg-info/dependency_links.txt +0 -0
  56. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server.egg-info/entry_points.txt +0 -0
  57. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server.egg-info/requires.txt +0 -0
  58. {raijin_server-0.2.40 → raijin_server-0.3.0}/src/raijin_server.egg-info/top_level.txt +0 -0
  59. {raijin_server-0.2.40 → raijin_server-0.3.0}/tests/test_full_install_sequence.py +0 -0
  60. {raijin_server-0.2.40 → raijin_server-0.3.0}/tests/test_registry.py +0 -0
@@ -0,0 +1,361 @@
1
+ Metadata-Version: 2.4
2
+ Name: raijin-server
3
+ Version: 0.3.0
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/INFRASTRUCTURE_GUIDE.md](docs/INFRASTRUCTURE_GUIDE.md) | Guia completo de infraestrutura |
273
+ | [docs/VPN_REMOTE_ACCESS.md](docs/VPN_REMOTE_ACCESS.md) | Configuração de VPN |
274
+ | [docs/INTERNAL_DNS.md](docs/INTERNAL_DNS.md) | DNS interno para domínios privados |
275
+ | [docs/VISUAL_TOOLS.md](docs/VISUAL_TOOLS.md) | Ferramentas visuais (Lens, K9s) |
276
+ | [docs/SSH_WINDOWS.md](docs/SSH_WINDOWS.md) | Acesso SSH do Windows |
277
+ | [docs/MINIO_OPERATIONS.md](docs/MINIO_OPERATIONS.md) | Operações do MinIO |
278
+
279
+ ---
280
+
281
+ ## Comandos Úteis
282
+
283
+ ```bash
284
+ # Atalho para o comando (após ativar venv)
285
+ alias raijin='sudo -E ~/.venvs/midgard/bin/raijin-server'
286
+
287
+ # Exemplos
288
+ raijin --version
289
+ raijin validate
290
+ raijin menu
291
+ raijin --dry-run kubernetes
292
+ ```
293
+
294
+ ### Logs e Debug
295
+
296
+ ```bash
297
+ # Ver logs do CLI
298
+ raijin debug logs --lines 200
299
+
300
+ # Seguir logs em tempo real
301
+ raijin debug logs --follow
302
+
303
+ # Snapshot do cluster
304
+ raijin debug kube --events 100
305
+ ```
306
+
307
+ ---
308
+
309
+ ## Desenvolvimento
310
+
311
+ ### Instalar em modo dev
312
+
313
+ ```bash
314
+ # Clonar repositório
315
+ git clone https://github.com/rafaelluisdacostacoelho/raijin-server
316
+ cd raijin-server
317
+
318
+ # Criar venv de desenvolvimento
319
+ python3 -m venv .venv
320
+ source .venv/bin/activate
321
+
322
+ # Instalar em modo editável
323
+ pip install -e ".[dev]"
324
+
325
+ # Rodar testes
326
+ pytest
327
+ ```
328
+
329
+ ### Publicar no PyPI
330
+
331
+ ```bash
332
+ # 1. Criar venv limpo para publicação
333
+ python3 -m venv ~/.venvs/publish
334
+ source ~/.venvs/publish/bin/activate
335
+ pip install -U pip build twine
336
+
337
+ # 2. Build
338
+ rm -rf dist build
339
+ python -m build
340
+
341
+ # 3. Publicar (configure TWINE_API_TOKEN no .env)
342
+ ./release.sh X.X.X
343
+ ```
344
+
345
+ ---
346
+
347
+ ## Destaques
348
+
349
+ - ✅ **Validações automáticas** de pré-requisitos
350
+ - ✅ **Health checks** após cada instalação
351
+ - ✅ **Retry inteligente** com backoff exponencial
352
+ - ✅ **Logging estruturado** com rotação
353
+ - ✅ **Modo dry-run** para simular mudanças
354
+ - ✅ **Idempotente** - re-execução segura
355
+ - ✅ **VPN-first** - dashboards seguros por padrão
356
+
357
+ ---
358
+
359
+ ## Licença
360
+
361
+ MIT License - veja [LICENSE](LICENSE) para detalhes.
@@ -0,0 +1,328 @@
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/INFRASTRUCTURE_GUIDE.md](docs/INFRASTRUCTURE_GUIDE.md) | Guia completo de infraestrutura |
240
+ | [docs/VPN_REMOTE_ACCESS.md](docs/VPN_REMOTE_ACCESS.md) | Configuração de VPN |
241
+ | [docs/INTERNAL_DNS.md](docs/INTERNAL_DNS.md) | DNS interno para domínios privados |
242
+ | [docs/VISUAL_TOOLS.md](docs/VISUAL_TOOLS.md) | Ferramentas visuais (Lens, K9s) |
243
+ | [docs/SSH_WINDOWS.md](docs/SSH_WINDOWS.md) | Acesso SSH do Windows |
244
+ | [docs/MINIO_OPERATIONS.md](docs/MINIO_OPERATIONS.md) | Operações do MinIO |
245
+
246
+ ---
247
+
248
+ ## Comandos Úteis
249
+
250
+ ```bash
251
+ # Atalho para o comando (após ativar venv)
252
+ alias raijin='sudo -E ~/.venvs/midgard/bin/raijin-server'
253
+
254
+ # Exemplos
255
+ raijin --version
256
+ raijin validate
257
+ raijin menu
258
+ raijin --dry-run kubernetes
259
+ ```
260
+
261
+ ### Logs e Debug
262
+
263
+ ```bash
264
+ # Ver logs do CLI
265
+ raijin debug logs --lines 200
266
+
267
+ # Seguir logs em tempo real
268
+ raijin debug logs --follow
269
+
270
+ # Snapshot do cluster
271
+ raijin debug kube --events 100
272
+ ```
273
+
274
+ ---
275
+
276
+ ## Desenvolvimento
277
+
278
+ ### Instalar em modo dev
279
+
280
+ ```bash
281
+ # Clonar repositório
282
+ git clone https://github.com/rafaelluisdacostacoelho/raijin-server
283
+ cd raijin-server
284
+
285
+ # Criar venv de desenvolvimento
286
+ python3 -m venv .venv
287
+ source .venv/bin/activate
288
+
289
+ # Instalar em modo editável
290
+ pip install -e ".[dev]"
291
+
292
+ # Rodar testes
293
+ pytest
294
+ ```
295
+
296
+ ### Publicar no PyPI
297
+
298
+ ```bash
299
+ # 1. Criar venv limpo para publicação
300
+ python3 -m venv ~/.venvs/publish
301
+ source ~/.venvs/publish/bin/activate
302
+ pip install -U pip build twine
303
+
304
+ # 2. Build
305
+ rm -rf dist build
306
+ python -m build
307
+
308
+ # 3. Publicar (configure TWINE_API_TOKEN no .env)
309
+ ./release.sh X.X.X
310
+ ```
311
+
312
+ ---
313
+
314
+ ## Destaques
315
+
316
+ - ✅ **Validações automáticas** de pré-requisitos
317
+ - ✅ **Health checks** após cada instalação
318
+ - ✅ **Retry inteligente** com backoff exponencial
319
+ - ✅ **Logging estruturado** com rotação
320
+ - ✅ **Modo dry-run** para simular mudanças
321
+ - ✅ **Idempotente** - re-execução segura
322
+ - ✅ **VPN-first** - dashboards seguros por padrão
323
+
324
+ ---
325
+
326
+ ## Licença
327
+
328
+ MIT License - veja [LICENSE](LICENSE) para detalhes.
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = raijin-server
3
- version = 0.2.40
3
+ version = 0.3.0
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.0"
4
+
5
+ __all__ = ["__version__"]