raijin-server 0.3.4__tar.gz → 0.3.7__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 (58) hide show
  1. {raijin_server-0.3.4/src/raijin_server.egg-info → raijin_server-0.3.7}/PKG-INFO +1 -1
  2. {raijin_server-0.3.4 → raijin_server-0.3.7}/setup.cfg +1 -1
  3. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/__init__.py +1 -1
  4. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/cli.py +6 -25
  5. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/healthchecks.py +1 -55
  6. raijin_server-0.3.7/src/raijin_server/minio_utils.py +562 -0
  7. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/__init__.py +4 -6
  8. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/full_install.py +11 -19
  9. raijin_server-0.3.7/src/raijin_server/modules/harbor.py +669 -0
  10. raijin_server-0.3.7/src/raijin_server/modules/secrets.py +589 -0
  11. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/velero.py +49 -2
  12. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/validators.py +1 -1
  13. {raijin_server-0.3.4 → raijin_server-0.3.7/src/raijin_server.egg-info}/PKG-INFO +1 -1
  14. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server.egg-info/SOURCES.txt +2 -3
  15. raijin_server-0.3.4/src/raijin_server/modules/apokolips_demo.py +0 -414
  16. raijin_server-0.3.4/src/raijin_server/modules/observability_dashboards.py +0 -233
  17. raijin_server-0.3.4/src/raijin_server/modules/observability_ingress.py +0 -246
  18. raijin_server-0.3.4/src/raijin_server/modules/secrets.py +0 -293
  19. {raijin_server-0.3.4 → raijin_server-0.3.7}/LICENSE +0 -0
  20. {raijin_server-0.3.4 → raijin_server-0.3.7}/README.md +0 -0
  21. {raijin_server-0.3.4 → raijin_server-0.3.7}/pyproject.toml +0 -0
  22. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/config.py +0 -0
  23. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/module_manager.py +0 -0
  24. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/bootstrap.py +0 -0
  25. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/calico.py +0 -0
  26. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/cert_manager.py +0 -0
  27. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/essentials.py +0 -0
  28. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/firewall.py +0 -0
  29. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/grafana.py +0 -0
  30. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/hardening.py +0 -0
  31. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/harness.py +0 -0
  32. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/internal_dns.py +0 -0
  33. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/istio.py +0 -0
  34. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/kafka.py +0 -0
  35. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/kong.py +0 -0
  36. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/kubernetes.py +0 -0
  37. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/loki.py +0 -0
  38. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/metallb.py +0 -0
  39. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/minio.py +0 -0
  40. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/network.py +0 -0
  41. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/prometheus.py +0 -0
  42. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/sanitize.py +0 -0
  43. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/ssh_hardening.py +0 -0
  44. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/traefik.py +0 -0
  45. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/vpn.py +0 -0
  46. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/modules/vpn_client.py +0 -0
  47. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/scripts/__init__.py +0 -0
  48. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/scripts/checklist.sh +0 -0
  49. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/scripts/install.sh +0 -0
  50. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/scripts/log_size_metric.sh +0 -0
  51. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/scripts/pre-deploy-check.sh +0 -0
  52. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server/utils.py +0 -0
  53. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server.egg-info/dependency_links.txt +0 -0
  54. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server.egg-info/entry_points.txt +0 -0
  55. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server.egg-info/requires.txt +0 -0
  56. {raijin_server-0.3.4 → raijin_server-0.3.7}/src/raijin_server.egg-info/top_level.txt +0 -0
  57. {raijin_server-0.3.4 → raijin_server-0.3.7}/tests/test_full_install_sequence.py +0 -0
  58. {raijin_server-0.3.4 → raijin_server-0.3.7}/tests/test_registry.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: raijin-server
3
- Version: 0.3.4
3
+ Version: 0.3.7
4
4
  Summary: CLI para automacao de setup e hardening de servidores Ubuntu Server.
5
5
  Home-page: https://example.com/raijin-server
6
6
  Author: Equipe Raijin
@@ -1,6 +1,6 @@
1
1
  [metadata]
2
2
  name = raijin-server
3
- version = 0.3.4
3
+ version = 0.3.7
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
@@ -1,5 +1,5 @@
1
1
  """Pacote principal do CLI Raijin Server."""
2
2
 
3
- __version__ = "0.3.3"
3
+ __version__ = "0.3.7"
4
4
 
5
5
  __all__ = ["__version__"]
@@ -17,7 +17,6 @@ from rich.table import Table
17
17
 
18
18
  from raijin_server import __version__
19
19
  from raijin_server.modules import (
20
- apokolips_demo,
21
20
  bootstrap,
22
21
  calico,
23
22
  cert_manager,
@@ -25,6 +24,7 @@ from raijin_server.modules import (
25
24
  firewall,
26
25
  full_install,
27
26
  grafana,
27
+ harbor,
28
28
  harness,
29
29
  hardening,
30
30
  internal_dns,
@@ -36,8 +36,6 @@ from raijin_server.modules import (
36
36
  metallb,
37
37
  minio,
38
38
  network,
39
- observability_dashboards,
40
- observability_ingress,
41
39
  prometheus,
42
40
  secrets,
43
41
  sanitize,
@@ -99,11 +97,10 @@ MODULES: Dict[str, Callable[[ExecutionContext], None]] = {
99
97
  "minio": minio.run,
100
98
  "prometheus": prometheus.run,
101
99
  "grafana": grafana.run,
102
- "observability_ingress": observability_ingress.run,
103
- "observability_dashboards": observability_dashboards.run,
104
- "apokolips_demo": apokolips_demo.run,
100
+
105
101
  "secrets": secrets.run,
106
102
  "loki": loki.run,
103
+ "harbor": harbor.run,
107
104
  "harness": harness.run,
108
105
  "velero": velero.run,
109
106
  "kafka": kafka.run,
@@ -136,11 +133,10 @@ MODULE_DESCRIPTIONS: Dict[str, str] = {
136
133
  "minio": "Objeto storage S3-compat via Helm",
137
134
  "prometheus": "Stack kube-prometheus",
138
135
  "grafana": "Dashboards e datasource Prometheus",
139
- "observability_ingress": "Ingress seguro com auth/TLS para Grafana/Prometheus/Alertmanager",
140
- "observability_dashboards": "Dashboards Grafana + alertas default Prometheus/Alertmanager",
141
- "apokolips_demo": "Landing page Apokolips para testar ingress externo",
142
- "secrets": "Instala sealed-secrets e external-secrets via Helm",
136
+
137
+ "secrets": "Secrets management (Vault + External Secrets Operator)",
143
138
  "loki": "Logs centralizados Loki",
139
+ "harbor": "Container registry privado com vulnerability scanning",
144
140
  "harness": "Delegate Harness via Helm",
145
141
  "velero": "Backup/restore de clusters",
146
142
  "kafka": "Cluster Kafka via OCI Helm",
@@ -555,21 +551,6 @@ def grafana(ctx: typer.Context) -> None:
555
551
  _run_module(ctx, "grafana")
556
552
 
557
553
 
558
- @app.command(name="apokolips-demo")
559
- def apokolips_demo_cmd(ctx: typer.Context) -> None:
560
- _run_module(ctx, "apokolips_demo")
561
-
562
-
563
- @app.command(name="observability-ingress")
564
- def observability_ingress_cmd(ctx: typer.Context) -> None:
565
- _run_module(ctx, "observability_ingress")
566
-
567
-
568
- @app.command(name="observability-dashboards")
569
- def observability_dashboards_cmd(ctx: typer.Context) -> None:
570
- _run_module(ctx, "observability_dashboards")
571
-
572
-
573
554
  @app.command()
574
555
  def loki(ctx: typer.Context) -> None:
575
556
  _run_module(ctx, "loki")
@@ -359,60 +359,6 @@ def verify_secrets(ctx: ExecutionContext) -> bool:
359
359
  return sealed_ok and eso_ok
360
360
 
361
361
 
362
- def verify_apokolips_demo(ctx: ExecutionContext) -> bool:
363
- """Health check especifico para a landing page Apokolips."""
364
- namespace = "apokolips-demo"
365
- logger.info("Verificando health check: apokolips-demo")
366
- typer.secho("\n=== Health Check: Apokolips Demo ===", fg=typer.colors.CYAN)
367
-
368
- pods_ok = check_k8s_pods_in_namespace(namespace, ctx, timeout=120)
369
- if not pods_ok:
370
- return False
371
- if ctx.dry_run:
372
- return True
373
-
374
- try:
375
- import json
376
-
377
- result = subprocess.run(
378
- [
379
- "kubectl",
380
- "get",
381
- "ingress",
382
- "apokolips-demo",
383
- "-n",
384
- namespace,
385
- "-o",
386
- "json",
387
- ],
388
- capture_output=True,
389
- text=True,
390
- timeout=10,
391
- )
392
- if result.returncode != 0:
393
- typer.secho(" ✗ Nao foi possivel consultar o ingress", fg=typer.colors.YELLOW)
394
- logger.warning("kubectl get ingress retornou codigo != 0 para apokolips-demo")
395
- return False
396
-
397
- data = json.loads(result.stdout)
398
- ingress_data = data.get("status", {}).get("loadBalancer", {}).get("ingress", [])
399
- address = ""
400
- if ingress_data:
401
- entry = ingress_data[0]
402
- address = entry.get("ip") or entry.get("hostname", "")
403
-
404
- if address:
405
- typer.secho(f" ✓ LoadBalancer publicado ({address})", fg=typer.colors.GREEN)
406
- return True
407
-
408
- typer.secho(" ✗ LoadBalancer ainda sem IP/hostname", fg=typer.colors.YELLOW)
409
- return False
410
- except Exception as exc:
411
- typer.secho(f" ✗ Erro ao verificar ingress: {exc}", fg=typer.colors.YELLOW)
412
- logger.error(f"Erro verificando ingress apokolips-demo: {exc}")
413
- return False
414
-
415
-
416
362
  # Mapeamento de modulos para funcoes de health check
417
363
  HEALTH_CHECKS = {
418
364
  "essentials": verify_essentials,
@@ -429,7 +375,7 @@ HEALTH_CHECKS = {
429
375
  "kafka": lambda ctx: verify_helm_chart("kafka", "kafka", ctx),
430
376
  "cert_manager": verify_cert_manager,
431
377
  "secrets": verify_secrets,
432
- "apokolips_demo": verify_apokolips_demo,
378
+
433
379
  }
434
380
 
435
381