raijin-server 0.2.38__py3-none-any.whl → 0.2.39__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.
- raijin_server/__init__.py +1 -1
- raijin_server/modules/minio.py +80 -15
- {raijin_server-0.2.38.dist-info → raijin_server-0.2.39.dist-info}/METADATA +2 -1
- {raijin_server-0.2.38.dist-info → raijin_server-0.2.39.dist-info}/RECORD +8 -8
- {raijin_server-0.2.38.dist-info → raijin_server-0.2.39.dist-info}/WHEEL +0 -0
- {raijin_server-0.2.38.dist-info → raijin_server-0.2.39.dist-info}/entry_points.txt +0 -0
- {raijin_server-0.2.38.dist-info → raijin_server-0.2.39.dist-info}/licenses/LICENSE +0 -0
- {raijin_server-0.2.38.dist-info → raijin_server-0.2.39.dist-info}/top_level.txt +0 -0
raijin_server/__init__.py
CHANGED
raijin_server/modules/minio.py
CHANGED
|
@@ -2,7 +2,10 @@
|
|
|
2
2
|
|
|
3
3
|
import secrets
|
|
4
4
|
import socket
|
|
5
|
+
import tempfile
|
|
5
6
|
import time
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
import textwrap
|
|
6
9
|
|
|
7
10
|
import typer
|
|
8
11
|
|
|
@@ -12,6 +15,7 @@ LOCAL_PATH_PROVISIONER_URL = (
|
|
|
12
15
|
"https://raw.githubusercontent.com/rancher/local-path-provisioner/"
|
|
13
16
|
"v0.0.30/deploy/local-path-storage.yaml"
|
|
14
17
|
)
|
|
18
|
+
RAIJIN_LOCAL_PATH_SC_NAME = "raijin-local-path"
|
|
15
19
|
|
|
16
20
|
|
|
17
21
|
def _detect_node_name(ctx: ExecutionContext) -> str:
|
|
@@ -31,6 +35,51 @@ def _generate_secret(length: int = 32) -> str:
|
|
|
31
35
|
return secrets.token_urlsafe(length)[:length]
|
|
32
36
|
|
|
33
37
|
|
|
38
|
+
def _apply_manifest(ctx: ExecutionContext, manifest: str, description: str) -> bool:
|
|
39
|
+
"""Aplica manifest YAML temporario com kubectl."""
|
|
40
|
+
tmp_path = None
|
|
41
|
+
try:
|
|
42
|
+
with tempfile.NamedTemporaryFile("w", delete=False, suffix=".yaml") as tmp:
|
|
43
|
+
tmp.write(manifest)
|
|
44
|
+
tmp.flush()
|
|
45
|
+
tmp_path = Path(tmp.name)
|
|
46
|
+
result = run_cmd(
|
|
47
|
+
["kubectl", "apply", "-f", str(tmp_path)],
|
|
48
|
+
ctx,
|
|
49
|
+
check=False,
|
|
50
|
+
)
|
|
51
|
+
if result.returncode != 0:
|
|
52
|
+
typer.secho(f" Falha ao aplicar {description}.", fg=typer.colors.RED)
|
|
53
|
+
return False
|
|
54
|
+
typer.secho(f" ✓ {description} aplicado.", fg=typer.colors.GREEN)
|
|
55
|
+
return True
|
|
56
|
+
finally:
|
|
57
|
+
if tmp_path and tmp_path.exists():
|
|
58
|
+
tmp_path.unlink(missing_ok=True)
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _create_raijin_local_path_sc(ctx: ExecutionContext) -> bool:
|
|
62
|
+
"""Cria StorageClass com volumeBindingMode=Immediate baseada no local-path."""
|
|
63
|
+
manifest = textwrap.dedent(
|
|
64
|
+
f"""
|
|
65
|
+
apiVersion: storage.k8s.io/v1
|
|
66
|
+
kind: StorageClass
|
|
67
|
+
metadata:
|
|
68
|
+
name: {RAIJIN_LOCAL_PATH_SC_NAME}
|
|
69
|
+
provisioner: rancher.io/local-path
|
|
70
|
+
reclaimPolicy: Delete
|
|
71
|
+
volumeBindingMode: Immediate
|
|
72
|
+
allowVolumeExpansion: true
|
|
73
|
+
parameters:
|
|
74
|
+
type: ""
|
|
75
|
+
"""
|
|
76
|
+
).strip()
|
|
77
|
+
typer.echo(
|
|
78
|
+
f"Criando StorageClass '{RAIJIN_LOCAL_PATH_SC_NAME}' com binding imediato para PVCs do MinIO..."
|
|
79
|
+
)
|
|
80
|
+
return _apply_manifest(ctx, manifest, f"StorageClass {RAIJIN_LOCAL_PATH_SC_NAME}")
|
|
81
|
+
|
|
82
|
+
|
|
34
83
|
def _get_default_storage_class(ctx: ExecutionContext) -> str:
|
|
35
84
|
"""Retorna o nome da StorageClass default do cluster, se existir."""
|
|
36
85
|
result = run_cmd(
|
|
@@ -117,28 +166,41 @@ def _set_default_storage_class(ctx: ExecutionContext, name: str) -> None:
|
|
|
117
166
|
|
|
118
167
|
def _ensure_storage_class(ctx: ExecutionContext) -> str:
|
|
119
168
|
"""Garante que existe uma StorageClass disponivel, instalando local-path se necessario."""
|
|
120
|
-
# Verifica se ja tem default
|
|
121
169
|
default_sc = _get_default_storage_class(ctx)
|
|
122
|
-
|
|
170
|
+
available = _list_storage_classes(ctx)
|
|
171
|
+
|
|
172
|
+
# Se ja houver StorageClass dedicada do Raijin, usa ela
|
|
173
|
+
if default_sc == RAIJIN_LOCAL_PATH_SC_NAME:
|
|
123
174
|
typer.echo(f"StorageClass default detectada: {default_sc}")
|
|
124
175
|
return default_sc
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
176
|
+
if RAIJIN_LOCAL_PATH_SC_NAME in available:
|
|
177
|
+
typer.echo(f"StorageClass '{RAIJIN_LOCAL_PATH_SC_NAME}' detectada.")
|
|
178
|
+
_set_default_storage_class(ctx, RAIJIN_LOCAL_PATH_SC_NAME)
|
|
179
|
+
return RAIJIN_LOCAL_PATH_SC_NAME
|
|
180
|
+
|
|
181
|
+
# Se ja existir default diferente de local-path, respeita configuracao do cluster
|
|
182
|
+
if default_sc and default_sc != "local-path":
|
|
183
|
+
typer.echo(f"StorageClass default detectada: {default_sc}")
|
|
184
|
+
return default_sc
|
|
185
|
+
|
|
186
|
+
# Se local-path estiver disponivel (default ou nao), cria uma classe dedicada com binding imediato
|
|
187
|
+
if "local-path" in available or default_sc == "local-path":
|
|
188
|
+
if _create_raijin_local_path_sc(ctx):
|
|
189
|
+
_set_default_storage_class(ctx, RAIJIN_LOCAL_PATH_SC_NAME)
|
|
190
|
+
return RAIJIN_LOCAL_PATH_SC_NAME
|
|
191
|
+
typer.echo("Nao foi possivel criar StorageClass dedicada; usando 'local-path'.")
|
|
192
|
+
_set_default_storage_class(ctx, "local-path")
|
|
193
|
+
return "local-path"
|
|
194
|
+
|
|
128
195
|
if available:
|
|
129
196
|
typer.echo(f"StorageClasses disponiveis (sem default): {', '.join(available)}")
|
|
130
|
-
# Se local-path existe, define como default
|
|
131
|
-
if "local-path" in available:
|
|
132
|
-
_set_default_storage_class(ctx, "local-path")
|
|
133
|
-
return "local-path"
|
|
134
|
-
# Pergunta qual usar
|
|
135
197
|
choice = typer.prompt(
|
|
136
198
|
f"Qual StorageClass usar? ({'/'.join(available)})",
|
|
137
199
|
default=available[0],
|
|
138
200
|
)
|
|
139
201
|
return choice
|
|
140
|
-
|
|
141
|
-
#
|
|
202
|
+
|
|
203
|
+
# Nenhuma StorageClass disponivel - instala local-path automaticamente
|
|
142
204
|
typer.secho(
|
|
143
205
|
"Nenhuma StorageClass encontrada no cluster.",
|
|
144
206
|
fg=typer.colors.YELLOW,
|
|
@@ -153,11 +215,14 @@ def _ensure_storage_class(ctx: ExecutionContext) -> str:
|
|
|
153
215
|
fg=typer.colors.RED,
|
|
154
216
|
)
|
|
155
217
|
raise typer.Exit(1)
|
|
156
|
-
|
|
218
|
+
|
|
157
219
|
if not _install_local_path_provisioner(ctx):
|
|
158
220
|
raise typer.Exit(1)
|
|
159
|
-
|
|
160
|
-
|
|
221
|
+
|
|
222
|
+
if _create_raijin_local_path_sc(ctx):
|
|
223
|
+
_set_default_storage_class(ctx, RAIJIN_LOCAL_PATH_SC_NAME)
|
|
224
|
+
return RAIJIN_LOCAL_PATH_SC_NAME
|
|
225
|
+
|
|
161
226
|
_set_default_storage_class(ctx, "local-path")
|
|
162
227
|
return "local-path"
|
|
163
228
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: raijin-server
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.39
|
|
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
|
|
@@ -46,6 +46,7 @@ CLI em Python (Typer) para automatizar setup e hardening de servidores Ubuntu Se
|
|
|
46
46
|
- Segurança: [SECURITY.md](SECURITY.md)
|
|
47
47
|
- Acesso SSH (Windows): [docs/SSH_WINDOWS.md](docs/SSH_WINDOWS.md)
|
|
48
48
|
- VPN para acesso remoto (WireGuard): [docs/VPN_REMOTE_ACCESS.md](docs/VPN_REMOTE_ACCESS.md)
|
|
49
|
+
- MinIO (monitorar/testar): [docs/MINIO_OPERATIONS.md](docs/MINIO_OPERATIONS.md)
|
|
49
50
|
|
|
50
51
|
## Destaques
|
|
51
52
|
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
raijin_server/__init__.py,sha256=
|
|
1
|
+
raijin_server/__init__.py,sha256=xacey6j4K59BQrjBoDCtOtRtB9BSq7vxACgXc8_pFlg,95
|
|
2
2
|
raijin_server/cli.py,sha256=2m7q1znMLbBdnUwN6oOUrCZXEqC2e7SfbjYkymbP4lQ,37884
|
|
3
3
|
raijin_server/config.py,sha256=QNiEVvrbW56XgvNn5-h3bkJm46Xc8mjNqPbvixXD8N0,4829
|
|
4
4
|
raijin_server/healthchecks.py,sha256=lzXdFw6S0hOYbUKbqksh4phb04lXgXdTspP1Dsz4dx8,15401
|
|
@@ -22,7 +22,7 @@ raijin_server/modules/kong.py,sha256=eDSagvEP9_BCs9pZ-pCVs1BDdlYOoJfY5PnUSiTvvgc
|
|
|
22
22
|
raijin_server/modules/kubernetes.py,sha256=9E6zV0zGQWZW92NVpxwYctpi-4JDmi6YzF3tKRI4HlU,13343
|
|
23
23
|
raijin_server/modules/loki.py,sha256=aNiUpnOFppZMXoQwYhn7IoPMzwUz4aHi6pbiqj1PRjc,5022
|
|
24
24
|
raijin_server/modules/metallb.py,sha256=uUuklc_RsQ-W2qDVRMQAxQm9HKGEqso444b1IwBpM6w,8554
|
|
25
|
-
raijin_server/modules/minio.py,sha256=
|
|
25
|
+
raijin_server/modules/minio.py,sha256=KSpoFP7RhXpDCaubHLo0amy6NWWVfdp5tuj8qVDB4tQ,15265
|
|
26
26
|
raijin_server/modules/network.py,sha256=QRlYdcryCCPAWG3QQ_W7ld9gJgETI7H8gwntOU7UqFE,4818
|
|
27
27
|
raijin_server/modules/observability_dashboards.py,sha256=fVz0WEOQrUTF5rJ__Nu_onyBuwL_exFmysWMmg8AE9w,7319
|
|
28
28
|
raijin_server/modules/observability_ingress.py,sha256=Fh1rlFWueBNHnOkHuoHYyhILmpO-iQXINybSUYbYsHQ,5738
|
|
@@ -38,9 +38,9 @@ raijin_server/scripts/checklist.sh,sha256=j6E0Kmk1EfjLvKK1VpCqzXJAXI_7Bm67LK4ndy
|
|
|
38
38
|
raijin_server/scripts/install.sh,sha256=Y1ickbQ4siQ0NIPs6UgrqUr8WWy7U0LHmaTQbEgavoI,3949
|
|
39
39
|
raijin_server/scripts/log_size_metric.sh,sha256=Iv4SsX8AuCYRou-klYn32mX41xB6j0xJGLBO6riw4rU,1208
|
|
40
40
|
raijin_server/scripts/pre-deploy-check.sh,sha256=XqMo7IMIpwUHF17YEmU0-cVmTDMoCGMBFnmS39FidI4,4912
|
|
41
|
-
raijin_server-0.2.
|
|
42
|
-
raijin_server-0.2.
|
|
43
|
-
raijin_server-0.2.
|
|
44
|
-
raijin_server-0.2.
|
|
45
|
-
raijin_server-0.2.
|
|
46
|
-
raijin_server-0.2.
|
|
41
|
+
raijin_server-0.2.39.dist-info/licenses/LICENSE,sha256=kJsMCjOiRZE0AQNtxWqBa32z9kMAaF4EUxyHj3hKaJo,1105
|
|
42
|
+
raijin_server-0.2.39.dist-info/METADATA,sha256=5CikB8uMIOaqFLxSS3kQyQMbmu5C1TkpJy-l9JrLEfQ,22851
|
|
43
|
+
raijin_server-0.2.39.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
44
|
+
raijin_server-0.2.39.dist-info/entry_points.txt,sha256=3ZvxDX4pvcjkIRsXAJ69wIfVmKa78LKo-C3QhqN2KVM,56
|
|
45
|
+
raijin_server-0.2.39.dist-info/top_level.txt,sha256=Yz1xneCRtsZOzbPIcTAcrSxd-1p80pohMXYAZ74dpok,14
|
|
46
|
+
raijin_server-0.2.39.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|