sync dari sicabe-doc/deploy @ 733df6c

This commit is contained in:
2026-10-12 11:57:24 +07:00
parent 4bb51143c3
commit 3fbd579a04
3 changed files with 36 additions and 29 deletions
+10 -3
View File
@@ -133,9 +133,15 @@ def external_components(doc: dict) -> set[str]:
Komponen ini TIDAK dijalankan cluster (tak masuk `placement`/`plan`); endpoint-nya
diarahkan ke alamat itu di SEMUA host (lihat generate.endpoint_lines). Berguna untuk
IAM/objek-storage milik pihak lain, termasuk di host/IP yang berbeda satu per komponen.
Turunan: `minio-init` (pembuat bucket MinIO **LOKAL** via `mc`) IKUT eksternal bila
`minio` eksternal — kalau tidak, ia nyasar ke bundle `state` padahal `minio` absen.
"""
return {n for n, s in (doc.get("components") or {}).items()
if (s.get("address") or "").strip()}
ext = {n for n, s in (doc.get("components") or {}).items()
if (s.get("address") or "").strip()}
if "minio" in ext:
ext.add("minio-init")
return ext
def external_address(doc: dict, service: str) -> str | None:
@@ -320,8 +326,9 @@ def validate(doc: dict) -> list[str]:
# (c) tiap komponen harus bisa ditempatkan
placement = resolve(doc)
external_all = external_components(doc)
for service in (svc for svcs in TIER_SERVICES.values() for svc in svcs):
if service not in placement and not external_address(doc, service):
if service not in placement and service not in external_all:
errors.append(
f"komponen '{service}' tidak bisa ditempatkan — tidak ada host bertier "
f"'{tier_of(service)}', tidak ada components.{service}.host, "