first commit

This commit is contained in:
2026-10-09 02:35:14 +07:00
commit 4ca7a9a58e
108 changed files with 23035 additions and 0 deletions
+114
View File
@@ -0,0 +1,114 @@
# Runbook Rollback — Integrasi OpenMetadata 2.0.2 ke `deploy/`
**Dibuat**: 2026-09-16 · **Tugas**: `merge-om20x` (subtask 01)
**Tag titik kembali**: `pre-merge-om20x` @ `5627353`
Runbook ini adalah dokumen yang ditulis tangan (bukan keluaran uji otomatis), sengaja
diletakkan di `deploy/output/` mengikuti penugasan subtask 01. Isinya harus tetap
akurat selama integrasi berlangsung.
---
## 1. Kapan runbook ini dipakai
Saat integrasi ke OpenMetadata 2.0.2 + OpenSearch 3.x + Airflow ber-plugin gagal dan
kita memutuskan kembali ke kondisi 1.13.1 yang stabil (sebelumnya gate Fase 1-6 hijau,
`test-verification.sh` = 60 PASS / 0 FAIL / 2 SKIP).
## 2. Kondisi baseline (terverifikasi sebelum perubahan apa pun)
| Aspek | Nilai |
|---|---|
| git HEAD | `5627353` (tag `pre-merge-om20x`) |
| OpenMetadata server | **1.13.1** (`openmetadata/server:1.13.1`) |
| OpenSearch | **2.19.6** (`opensearchproject/opensearch:2.19.6`) |
| Airflow image | **`sicabe/airflow:3.3.1-slim`** (id `15ae04b69228`), Airflow 3.3.1 |
| Plugin OpenMetadata di Airflow | **TIDAK ADA** — `/api/v1/openmetadata/health` → 404 |
| Data OM | database `openmetadata_db` di volume `sicabe_postgres-data` |
| Data OpenSearch | **tidak di volume** — ada di layer container (index derived) |
Catatan penting soal "plugin tidak ada": di Airflow deploy,
`/pluginsv2/api/v2/openmetadata/health-auth` menjawab **200 tetapi `content-type: text/html`**
(HTML aplikasi Airflow) — itu fallback UI, bukan respons plugin. Bukti plugin absen
adalah `/api/v1/openmetadata/health` → **404**. Jangan tertipu angka 200 di path
`/pluginsv2/`.
## 3. Cara memverifikasi kita benar-benar sudah kembali ke baseline
```bash
cd /home/broto/sicabe-doc
git rev-parse --short HEAD # harus 5627353 (atau turunannya yg setara)
docker inspect sicabe-openmetadata --format '{{.Config.Image}}' # openmetadata/server:1.13.1
docker inspect sicabe-opensearch --format '{{.Config.Image}}' # opensearchproject/opensearch:2.19.6
docker inspect sicabe-airflow-webserver --format '{{.Config.Image}}' # sicabe/airflow:3.3.1-slim
curl -s -o /dev/null -w '%{http_code}\n' -u "admin:$AIRFLOW_ADMIN_PASSWORD" \
http://localhost:12082/api/v1/openmetadata/health # harus 404
cd deploy && ./test-verification.sh # harus 60 PASS / 0 FAIL / 2 SKIP
```
## 4. Langkah rollback
### 4.1 Kembalikan berkas konfigurasi
```bash
cd /home/broto/sicabe-doc
git checkout pre-merge-om20x -- deploy/ docs/
git status -s # tinjau: hanya berkas deploy/docs yang kembali
```
Jangan `git reset --hard` — commit hasil eksperimen (`f47945d`, `5627353`) dan
`experiments/om20x/` tidak perlu ikut hilang.
### 4.2 Nyalakan ulang container lama
```bash
cd deploy
set -a && . ./.env && set +a
docker compose --profile all up -d --force-recreate \
openmetadata-opensearch openmetadata-migrate openmetadata-server \
airflow-init airflow-webserver airflow-scheduler airflow-dag-processor
```
Image lama **tidak boleh dihapus**: `openmetadata/server:1.13.1`,
`opensearchproject/opensearch:2.19.6`, `sicabe/airflow:3.3.1-slim`.
OpenSearch akan membuat index baru dari nol saat container dibuat ulang
(tidak ada volume; index memang derived dan OM akan mem-populasinya kembali).
### 4.3 Bila database OM sudah telanjur dikosongkan (subtask 12)
Setelah `openmetadata_db` di-drop, **data katalog OM tidak bisa dipulihkan dari
deploy** — tidak ada dump (keputusan sadar: jaring pengaman cukup tag git). Yang bisa
dilakukan: membuat ulang database kosong lalu membiarkan OM 1.13.1 membangun skemanya,
lalu mengisi ulang katalog dari sumber yang reproducible:
```bash
# buat ulang database kosong (pola sama dgn deploy/config/postgres/init/01-create-dbs.sh)
docker exec sicabe-postgres psql -U postgres -c "DROP DATABASE IF EXISTS openmetadata_db;"
docker exec sicabe-postgres psql -U postgres -c "CREATE DATABASE openmetadata_db OWNER openmetadata;"
cd deploy
docker compose --profile all up -d --force-recreate openmetadata-migrate # migrate schema 1.13.1
docker compose --profile all up -d openmetadata-server
./scripts/ingest-openmetadata.sh # katalog Trino + lineage dbt
# lalu jalankan DAG utk mengirim ulang hasil Great Expectations
```
## 5. Yang bisa dan tidak bisa dipulihkan (jujur)
| Bisa dipulihkan | Tidak bisa dipulihkan |
|---|---|
| Versi komponen (kembali 1.13.1 / 2.19.6 / image slim) | Isi katalog OM bila DB sudah di-drop (reproducible, bukan mustahil) |
| Konfigurasi (`deploy/`, `docs/`) via tag git | Riwayat DQ (test case + hasil) — dibangun ulang oleh DAG |
| Lineage dbt | Dashboard/artefak yang hanya ada di OM |
Alasan ini dapat diterima: seluruh isi katalog berasal dari
`scripts/ingest-openmetadata.sh` + DAG `sicabe_batch_daily`, jadi bisa dibangun ulang.
## 6. Titik tidak-balik (penting)
| Setelah subtask | Kondisi |
|---|---|
| 05 (+07) | Airflow memakai image ber-plugin; rollback = kembalikan 4 baris `AIRFLOW_IMAGE` |
| 10 | OpenSearch 3.x; index lama sudah hilang saat container dibuat ulang |
| **12** | **`openmetadata_db` di-drop → satu-satunya titik yang kehilangan data** |
| 13-15 | OM 2.0.2 jalan dgn password admin dari `.env` |