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
@@ -0,0 +1,55 @@
# =============================================================================
# eBdesk SiCABE — Ingestion agent OpenMetadata: dbt (LINEAGE bronze→silver→gold)
# =============================================================================
# Mengapa file ini ada:
# Ingestion metadata (`ingest-trino.yaml`) hanya mengambil tabel & kolom — TIDAK
# menghasilkan lineage, karena lineage berasal dari definisi transformasi, bukan
# dari katalog. Transformasi bronze→silver→gold dijalankan oleh dbt, sehingga
# lineage-nya diambil dari ARTEFAK dbt:
# target/manifest.json (grafik model: ref()/source() → relasi antar tabel)
# target/catalog.json (skema kolom per model → lineage antar KOLOM)
# target/run_results.json(hasil eksekusi/test)
#
# Artefak dibuat di dalam container Airflow (project di /home/airflow/dbt/sicabe):
# dbt docs generate --profile trino --target prod
#
# ⚠️ Catatan: `target/` berada di layer container (bukan bind-mount), jadi artefak
# HILANG bila container Airflow di-recreate → jalankan `dbt docs generate` lagi
# sebelum ingestion dbt.
#
# Jalankan (butuh OM_JWT_TOKEN):
# ./scripts/ingest-openmetadata.sh --workflow config/openmetadata/ingest-dbt.yaml
# =============================================================================
source:
type: dbt
# Service database tempat model dbt ditautkan (harus sama dengan service Trino).
serviceName: trino_sicabe
sourceConfig:
config:
# Enum-nya huruf besar: DbtConfigType.DBT = 'DBT' (bukan 'dbt').
type: DBT
dbtConfigSource:
dbtConfigType: local
# Artefak dbt dibaca dari DBT_TARGET_PATH (lihat docker-compose.yml), BUKAN dari
# <project>/target di dalam bind-mount repo — bind-mount itu tidak bisa ditulis
# container (uid host vs uid 50000), sehingga artefaknya memang tidak pernah ada
# di sana dan ingestion lineage selalu menghasilkan 0 relasi.
dbtManifestFilePath: /tmp/dbt/target/manifest.json
dbtCatalogFilePath: /tmp/dbt/target/catalog.json
dbtRunResultsFilePath: /tmp/dbt/target/run_results.json
dbtUpdateDescriptions: true
dbtUpdateOwners: true
includeTags: false
searchAcrossDatabases: false
sink:
type: metadata-rest
config: {}
workflowConfig:
loggerLevel: INFO
openMetadataServerConfig:
hostPort: http://openmetadata-server:8585/api
authProvider: openmetadata
securityConfig:
jwtToken: ${OM_JWT_TOKEN}
@@ -0,0 +1,71 @@
# =============================================================================
# eBdesk SiCABE — Ingestion agent OpenMetadata: Trino (Iceberg via Nessie)
# =============================================================================
# Menjelaskan mengapa file ini ada:
# Membuat SERVICE di OpenMetadata hanya menyimpan konfigurasi koneksi. Metadata
# sesungguhnya (database → schema → tabel → kolom) baru diambil oleh AGENT
# (ingestion pipeline). Halaman Explore membaca search index, dan index itu
# hanya terisi setelah agent berjalan. Tanpa file ini, service `trino_sicabe`
# ada tetapi Explore kosong.
#
# Catatan skema (penting, berbeda dari skema API):
# - di API OM 1.13.1 field TLS 'verifySSL' DITOLAK; di Ingestion Framework
# yang benar adalah `verify` (string), di sini "false" karena sertifikat Trino
# self-signed.
# - `username` wajib di level config; `authType` memakai BasicAuth (username+password).
# - Identitas agent = `svc_om` dengan role `data-catalog`: baca-saja
# (select + kolom "*" untuk SEMUA tabel) sehingga katalog Explore LENGKAP,
# namun TANPA hak write/ddl. (Sebelumnya identitas ini memakai `data-analyst`
# sehingga katalog hanya sebagian.)
#
# Jalankan (butuh TRINO_SVC_OM_PASSWORD & OM_JWT_TOKEN di environment):
# metadata ingest -c ingest-trino.yaml
# =============================================================================
source:
type: trino
serviceName: trino_sicabe
serviceConnection:
config:
type: Trino
scheme: trino
hostPort: trino-coordinator:8443
username: svc_om
# BasicAuth hanya berisi `password` (username ada di level config) —
# sesuai contoh resmi 'metadata ingest' untuk Trino.
authType:
password: ${TRINO_SVC_OM_PASSWORD}
catalog: iceberg
# `verify` adalah path CA bundle (string) — OM hanya meneruskannya bila
# truthy, dan klien Trino memperlakukannya sebagai path. Memakai sertifikat
# Trino (diekspor scripts/generate-trino-keystore.sh, di-mount ke
# /etc/ssl/trino) membuat TLS DIVERIFIKASI, bukan dimatikan.
verify: /etc/ssl/trino/trino.crt
supportsMetadataExtraction: true
supportsProfiler: true
supportsQueryComment: true
# Batasi ke namespace yang dikelola (bronze/silver/gold). Karena ini
# pattern di level KONEKSI, filter schema juga tersedia di sourceConfig.
schemaFilterPattern:
includes:
- bronze
- silver
- gold
sourceConfig:
config:
type: DatabaseMetadata
markDeletedTables: false
includeTables: true
includeViews: true
includeTags: false
sink:
type: metadata-rest
config: {}
workflowConfig:
loggerLevel: INFO
openMetadataServerConfig:
hostPort: http://openmetadata-server:8585/api
authProvider: openmetadata
securityConfig:
jwtToken: ${OM_JWT_TOKEN}