raijin-server 0.2.40__py3-none-any.whl → 0.3.0__py3-none-any.whl

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.

Potentially problematic release.


This version of raijin-server might be problematic. Click here for more details.

@@ -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.
@@ -1,11 +1,11 @@
1
- raijin_server/__init__.py,sha256=PET19zpBabvgsdbOZwr8T9CyQlc69zOhgFzYRP5DDI8,95
2
- raijin_server/cli.py,sha256=2m7q1znMLbBdnUwN6oOUrCZXEqC2e7SfbjYkymbP4lQ,37884
1
+ raijin_server/__init__.py,sha256=MvrRbjHr0fpwAuK-h3JmhGK1xckNu_HpfUU0CsifboQ,94
2
+ raijin_server/cli.py,sha256=rqkAQCU5imi52YJCIeEuZqWo8bWYkVErOQh3JpKIDok,38149
3
3
  raijin_server/config.py,sha256=QNiEVvrbW56XgvNn5-h3bkJm46Xc8mjNqPbvixXD8N0,4829
4
4
  raijin_server/healthchecks.py,sha256=lzXdFw6S0hOYbUKbqksh4phb04lXgXdTspP1Dsz4dx8,15401
5
5
  raijin_server/module_manager.py,sha256=Wmhj603CN0XGUVr7_Fo8CHzKd9yIbS9x5BJLqDj78kw,10259
6
6
  raijin_server/utils.py,sha256=9RnGnPoUTYOpMVRLNa4P4lIQrJNQLkSkPUxycZRGv78,20827
7
7
  raijin_server/validators.py,sha256=EATYPy2pllAb6IX4gUZKnELvospWwyGV3DHrzxb_RMg,11761
8
- raijin_server/modules/__init__.py,sha256=e_IbkhLGPcF8to9QUmIESP6fpcTOYcIhaXLKIvqRJMY,920
8
+ raijin_server/modules/__init__.py,sha256=ojxAdnJfXifNUVa4WuLVh97jHqeVzIi6DZ_fAtXB9tM,984
9
9
  raijin_server/modules/apokolips_demo.py,sha256=8ltsXRbVDwlDwLMIvh02NG-FeAfBWw_v6lh7IGOyNqs,13725
10
10
  raijin_server/modules/bootstrap.py,sha256=oVIGNRW_JbgY8zXNHGAIP0vGbbHNHyQexthxo5zhbcw,9762
11
11
  raijin_server/modules/calico.py,sha256=TTPF1bLFdAKb3IVOqFqRxNblULkRmMMRylsIBp4w8I8,6700
@@ -13,34 +13,36 @@ raijin_server/modules/cert_manager.py,sha256=XkFlXJjiP4_9It_PJaFcVYMS-QKTzzFAt83
13
13
  raijin_server/modules/essentials.py,sha256=2xUXCyCQtFGd2DnCKV81N1R6bEJqH8zaet8mLovtQ1I,689
14
14
  raijin_server/modules/firewall.py,sha256=h6AISqiZeTinVT7BjmQIS872qRAFZJLg7meqlth3cfw,757
15
15
  raijin_server/modules/full_install.py,sha256=xiKe2GLuZ97c4YdTmhP-kwDVuJJ9Xq3dlgcLlqSPeYM,15518
16
- raijin_server/modules/grafana.py,sha256=DdDLxmTeFnDRvcRLkpg1RuR9o1ZAArk2W-DTLLyfWHg,6009
16
+ raijin_server/modules/grafana.py,sha256=r4U6FJZ9OeTk4d3LDJT0NbN8wumB3REMtd3E3PRL_oE,17383
17
17
  raijin_server/modules/hardening.py,sha256=4hz3ifkMhPlXa2n7gPxN0gitQgzALZ-073vuU3LM4RI,1616
18
18
  raijin_server/modules/harness.py,sha256=uWTxTVJlY_VB6xi4ftMtTSaIb96HA8WJQS-RbyxU45M,5391
19
+ raijin_server/modules/internal_dns.py,sha256=Jynngq0TEEUo3jkAR4m8F1ihF10rkQuKHVP-gZYyDFY,15191
19
20
  raijin_server/modules/istio.py,sha256=o0K5-Fw4LRs-kbAVgwzYxHzEt_aPFJG8suqOqvg2748,7297
20
21
  raijin_server/modules/kafka.py,sha256=n7ZpLPWv6sKBJhdBiPe7VgeDB24YiCIOWvOQkWwt03Y,5664
21
- raijin_server/modules/kong.py,sha256=eDSagvEP9_BCs9pZ-pCVs1BDdlYOoJfY5PnUSiTvvgc,13416
22
+ raijin_server/modules/kong.py,sha256=_w1VIkND6zZuUwIl_CNDxbwWdzaEdXZEO_Iqc1ngPwQ,13654
22
23
  raijin_server/modules/kubernetes.py,sha256=9E6zV0zGQWZW92NVpxwYctpi-4JDmi6YzF3tKRI4HlU,13343
23
24
  raijin_server/modules/loki.py,sha256=aNiUpnOFppZMXoQwYhn7IoPMzwUz4aHi6pbiqj1PRjc,5022
24
25
  raijin_server/modules/metallb.py,sha256=uUuklc_RsQ-W2qDVRMQAxQm9HKGEqso444b1IwBpM6w,8554
25
- raijin_server/modules/minio.py,sha256=XvWg4XJ2URZhiJYHrqf1Eg5tvLGXMxu45Rr_9C58SP4,18915
26
+ raijin_server/modules/minio.py,sha256=QbladHGefZBZ8l3f9D7t45nwfwVcuAgHi78E4Ygi300,17614
26
27
  raijin_server/modules/network.py,sha256=QRlYdcryCCPAWG3QQ_W7ld9gJgETI7H8gwntOU7UqFE,4818
27
28
  raijin_server/modules/observability_dashboards.py,sha256=fVz0WEOQrUTF5rJ__Nu_onyBuwL_exFmysWMmg8AE9w,7319
28
- raijin_server/modules/observability_ingress.py,sha256=Fh1rlFWueBNHnOkHuoHYyhILmpO-iQXINybSUYbYsHQ,5738
29
- raijin_server/modules/prometheus.py,sha256=wT9jdcC-8vVysVKgMR5isGbxxpvGFPRf7fhMAGd9kJU,10761
29
+ raijin_server/modules/observability_ingress.py,sha256=S4MtJKahiZ1qSx0P71P3IhKvq4RY-g01Z4IogW3c1hs,7045
30
+ raijin_server/modules/prometheus.py,sha256=y5sy_mH1YeQWTOt5CNqqj5JD92-GMxbWQaaZKwx505U,19728
30
31
  raijin_server/modules/sanitize.py,sha256=_RnWn1DUuNrzx3NnKEbMvf5iicgjiN_ubwT59e0rYWY,6040
31
32
  raijin_server/modules/secrets.py,sha256=d4j12feQL8m_4-hYN5FfboQHvBc75TFeGno3OzrXokE,9266
32
33
  raijin_server/modules/ssh_hardening.py,sha256=Zd0dlylUBr01SkrI1CS05-0DB9xIto5rWH1bUVs80ow,5422
33
- raijin_server/modules/traefik.py,sha256=crEYIqAidAhh_H93qIvCbTtJ7BjO-3ef77alLc_--Gg,3535
34
+ raijin_server/modules/traefik.py,sha256=omziywss4o-8t64Kj-upLqbXdFYm2JwqOoOukDUmqxY,5008
34
35
  raijin_server/modules/velero.py,sha256=yDtqd6yUu0L5wzLCjYXqvvxB_RyaAoZtntb6HoHVAOo,5642
35
36
  raijin_server/modules/vpn.py,sha256=hF-0vA17VKTxhQLDBSEeqI5aPQpiaaj4IpUf9l6lr64,8297
37
+ raijin_server/modules/vpn_client.py,sha256=sea5PtJB3Q612cVvW4Pz8_fEN7Zu0eNf34D2uEfHnkw,13463
36
38
  raijin_server/scripts/__init__.py,sha256=deduGfHf8BMVWred4ux5LfBDT2NJ5XYeJAt2sDEU4qs,53
37
39
  raijin_server/scripts/checklist.sh,sha256=j6E0Kmk1EfjLvKK1VpCqzXJAXI_7Bm67LK4ndyCxWh0,1842
38
40
  raijin_server/scripts/install.sh,sha256=Y1ickbQ4siQ0NIPs6UgrqUr8WWy7U0LHmaTQbEgavoI,3949
39
41
  raijin_server/scripts/log_size_metric.sh,sha256=Iv4SsX8AuCYRou-klYn32mX41xB6j0xJGLBO6riw4rU,1208
40
42
  raijin_server/scripts/pre-deploy-check.sh,sha256=XqMo7IMIpwUHF17YEmU0-cVmTDMoCGMBFnmS39FidI4,4912
41
- raijin_server-0.2.40.dist-info/licenses/LICENSE,sha256=kJsMCjOiRZE0AQNtxWqBa32z9kMAaF4EUxyHj3hKaJo,1105
42
- raijin_server-0.2.40.dist-info/METADATA,sha256=gpXIeSzpsrBImaDzxLWQgddp1QZa3rOJmn3fZJ18HfA,22851
43
- raijin_server-0.2.40.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
44
- raijin_server-0.2.40.dist-info/entry_points.txt,sha256=3ZvxDX4pvcjkIRsXAJ69wIfVmKa78LKo-C3QhqN2KVM,56
45
- raijin_server-0.2.40.dist-info/top_level.txt,sha256=Yz1xneCRtsZOzbPIcTAcrSxd-1p80pohMXYAZ74dpok,14
46
- raijin_server-0.2.40.dist-info/RECORD,,
43
+ raijin_server-0.3.0.dist-info/licenses/LICENSE,sha256=kJsMCjOiRZE0AQNtxWqBa32z9kMAaF4EUxyHj3hKaJo,1105
44
+ raijin_server-0.3.0.dist-info/METADATA,sha256=nyqyXiUg4iGNViT9GKvXT1zelFsKUya3HO3QBBAjeVM,8761
45
+ raijin_server-0.3.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
46
+ raijin_server-0.3.0.dist-info/entry_points.txt,sha256=3ZvxDX4pvcjkIRsXAJ69wIfVmKa78LKo-C3QhqN2KVM,56
47
+ raijin_server-0.3.0.dist-info/top_level.txt,sha256=Yz1xneCRtsZOzbPIcTAcrSxd-1p80pohMXYAZ74dpok,14
48
+ raijin_server-0.3.0.dist-info/RECORD,,