Files
fn_registry/python/functions/pipelines/metabase_fix_permissions.md
T
egutierrez 6a05abff03 feat: pipelines Metabase — add ops db, create ops dashboard, fix permissions
Tres pipelines Python para gestionar operations.db en Metabase:
- metabase_add_ops_db: registra la operations.db de una app como database SQLite
- metabase_create_ops_dashboard: genera dashboard operativo con 14 cards (KPIs,
  distribución, executions, assertions) para cualquier app
- metabase_fix_permissions: arregla SQLITE_READONLY_DIRECTORY haciendo chmod
  777/666 sin chown (que se propaga al host via bind mount)

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-29 00:54:24 +01:00

1.7 KiB

name, kind, lang, domain, version, purity, signature, description, tags, uses_functions, uses_types, returns, returns_optional, error_type, imports, tested, tests, test_file_path, file_path
name kind lang domain version purity signature description tags uses_functions uses_types returns returns_optional error_type imports tested tests test_file_path file_path
metabase_fix_permissions pipeline py pipelines 1.0.0 impure metabase_fix_permissions() -> None Arregla permisos SQLITE_READONLY_DIRECTORY en el contenedor Metabase. Hace chmod 777/666 en directorios y archivos .db bajo /data/ para que el usuario metabase (UID 2000) pueda crear journal files.
metabase
sqlite
permissions
docker
pipeline
infra
launcher
metabase_auth_py_infra
metabase_list_databases_py_infra
false error_go_core
false
python/functions/pipelines/metabase_fix_permissions.py

Ejemplo

# Fix permisos (usa contenedor por defecto: fn_registry-metabase)
python python/functions/pipelines/metabase_fix_permissions.py

# Contenedor custom
python python/functions/pipelines/metabase_fix_permissions.py --container mi-metabase

Problema

Metabase corre Java como UID 2000 (usuario metabase). SQLite necesita crear journal/WAL files en el mismo directorio que la BD. Si el directorio no es escribible por UID 2000, Metabase devuelve:

SQLITE_READONLY_DIRECTORY: Process does not have permission to create a
journal file in the same directory as the database

Solucion

El pipeline ejecuta dentro del contenedor (como root):

  • chmod 777 en cada directorio que contiene un .db
  • chmod 666 en cada archivo .db, -wal, -shm, -journal

Esto NO cambia ownership (evita que chown se propague al host via bind mount).

Cuando ejecutar

  • Despues de recrear el contenedor Metabase
  • Despues de añadir una nueva database con metabase_add_ops_db
  • Cuando Metabase muestra error SQLITE_READONLY_DIRECTORY