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>
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
---
|
||||
name: metabase_fix_permissions
|
||||
kind: pipeline
|
||||
lang: py
|
||||
domain: pipelines
|
||||
version: "1.0.0"
|
||||
purity: impure
|
||||
signature: "metabase_fix_permissions() -> None"
|
||||
description: "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."
|
||||
tags: [metabase, sqlite, permissions, docker, pipeline, infra, launcher]
|
||||
uses_functions:
|
||||
- metabase_auth_py_infra
|
||||
- metabase_list_databases_py_infra
|
||||
uses_types: []
|
||||
returns: []
|
||||
returns_optional: false
|
||||
error_type: "error_go_core"
|
||||
imports: []
|
||||
tested: false
|
||||
tests: []
|
||||
test_file_path: ""
|
||||
file_path: "python/functions/pipelines/metabase_fix_permissions.py"
|
||||
---
|
||||
|
||||
## Ejemplo
|
||||
|
||||
```bash
|
||||
# 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
|
||||
Reference in New Issue
Block a user