115 lines
5.1 KiB
Markdown
115 lines
5.1 KiB
Markdown
# 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` |
|