sync dari sicabe-doc/deploy @ bc1a6e6

This commit is contained in:
2026-10-11 13:59:47 +07:00
parent 4ca7a9a58e
commit cbabe96061
29 changed files with 1210 additions and 650 deletions
+27 -5
View File
@@ -227,10 +227,11 @@ di sini komponen tetap milik klaster ini, hanya dipindah host. Override variabel
> sehingga path filesystem seperti `/etc/trino/` dan baris komentar tidak ikut berubah.
> Rencana lengkap: `reviews/sicabe-10-multi-host-installer-plan.md`.
> ⚠️ **Pilot multi-host di host yang SAMA tidak boleh dua stack berjalan bersamaan.**
> Memisah network/port saja **tidak cukup** — RAM tidak akan cukup (host pilot 15 GB,
> satu stack penuh ±10 GB). **Matikan stack lama lebih dulu** sebelum menyalakan hasil
> `generated/host-<x>/`.
> ⚠️ **Satu host = satu stack aktif.** Stack single-host dan multi-host **tidak untuk
> berjalan bersamaan** di host yang sama — **matikan stack lama lebih dulu** sebelum
> menyalakan hasil `generated/host-<x>/`. Berdampingan **tidak cukup** hanya dipisah
> network/port: pada host kecil hal itu juga menabrak RAM (pilot 15 GB, satu stack penuh
> ±10 GB).
**Trino dipisah coordinator/worker.** Sejak 2026-09-28 Trino bukan lagi satu service:
`trino-coordinator` (port host `12443`, HTTPS + OAuth2/Basic, client-facing) dan
@@ -343,15 +344,36 @@ Menyalin seluruh `deploy/` — **termasuk `.env` dan `generated/`** — ke tiap
```bash
./install.sh --sync # ke SEMUA host lain (host ini dideteksi dari alamat lokal)
./install.sh --sync --host state # hanya satu host
./install.sh --sync --user admin --dest '~/sicabe-doc/deploy' # SSH user & tujuan
./install.sh --sync --user admin --dest '~/lain/deploy' # SSH user & tujuan (timpa default)
./install.sh --sync --delete # hapus di tujuan berkas yang tak ada di sumber
```
**Tujuan default = cermin lokasi repo ini.** Nilai `--dest` diturunkan dari letak `install.sh`
di bawah `$HOME` (`sicabe_default_dest`), jadi **nama repo tidak dipatok**:
| Repo di host control | Tujuan `--sync` default di host lain |
|---|---|
| `~/sicabe-doc/deploy` | `~/sicabe-doc/deploy` |
| `~/sicabe-core/deploy` | `~/sicabe-core/deploy` |
Ini membuat **repo distribusi bersih** (mis. `sicabe-core` — hanya folder `deploy/`, tanpa
`docs/`, `reviews/`, `experiments/`) bekerja **tanpa `--dest`**. `deploy/` **self-contained**:
semua script memakai `SCRIPT_DIR`, dan bind-mount compose relatif (`./config/…`) — jadi nama
atau lokasi repo tidak berpengaruh. Timpa tujuan dengan `--dest '~/…/deploy'` bila perlu.
Host yang sedang dijalankan **dikecualikan otomatis** (kecocokan `hostname -I` dengan
`address` di inventory); bila tak cocok, ia menyinkron ke semua host. `.env` **wajib ikut**
(rahasia bersama — OIDC client secret harus identik lintas host). Setelah sync, di tiap host
jalankan `./scripts/prefetch-images.sh --host <nama>` lalu `./install.sh --host <nama>`.
> **Model distribusi: control = sumber tunggal · host lain = PENERIMA (bukan working tree git).**
> `--sync` menimpa berkas yang di-track git di `deploy/` host tujuan dengan versi control,
> sehingga `git status` di sana **selalu kotor** dan `git pull` akan **ditolak** ("local changes
> would be overwritten"). **Jangan `git pull` di host tujuan** — perbarui di **control** lalu
> `--sync` saja (clone repo di host tujuan cukup **sekali**, untuk `prepare-host.sh`).
> Gunakan **`--sync --delete`** agar berkas yang dihapus/di-rename di repo ikut terhapus di
> tujuan (`.git` & `output` dikecualikan, jadi keduanya aman).
Tanpa `cluster.yml`, installer berperilaku **persis** seperti single-host (tidak ada
yang di-generate). Hasil generate berisi per host: `docker-compose.yml` (hanya service
milik host itu), `.env` (endpoint → alamat host), dan `config/` ter-render.