dbt Artifact Storage: Local/Shared Filesystem
This guide walks you through configuring a local or shared filesystem as the artifact storage layer for dbt Core + OpenMetadata integration. Ideal for development, single-server deployments, or Kubernetes with shared volumes.Prerequisites Checklist
Configuration Options
Option A: Same Machine (Development)
If dbt and OpenMetadata run on the same machine: 1. Run dbt and generate artifacts:- Manifest:
/path/to/dbt/project/target/manifest.json - Catalog:
/path/to/dbt/project/target/catalog.json - Run Results:
/path/to/dbt/project/target/run_results.json
Option B: Docker Compose with Shared Volume
Perfect for local development stacks. docker-compose.yml:- Manifest:
/dbt-artifacts/manifest.json - Catalog:
/dbt-artifacts/catalog.json - Run Results:
/dbt-artifacts/run_results.json
Option C: Kubernetes with PersistentVolumeClaim
For Kubernetes deployments where dbt and OpenMetadata run in the same cluster. 1. Create PersistentVolumeClaim:- Manifest:
/dbt-artifacts/manifest.json - Catalog:
/dbt-artifacts/catalog.json - Run Results:
/dbt-artifacts/run_results.json
Option D: NFS Mounted Shared Storage
For VMs or bare-metal servers with shared NFS storage. 1. Set up NFS share: On NFS server:- Manifest:
/mnt/dbt-artifacts/manifest.json - Catalog:
/mnt/dbt-artifacts/catalog.json - Run Results:
/mnt/dbt-artifacts/run_results.json
Step 2: Configure OpenMetadata
Configuration
- Go to Settings → Services → Database Services
- Click on your database service
- Go to the Ingestion tab
- Click Add Ingestion
- Select dbt from the dropdown
Configure dbt Options:
Verification
Best Practices
1. Use Absolute Paths
Always use absolute paths, not relative:- ✓
/dbt-artifacts/manifest.json - ✗
../dbt/target/manifest.json
2. Ensure Read Permissions
3. Automate Artifact Copying
4. Use ReadWriteMany for Kubernetes
For Kubernetes PVC, ensureaccessMode: ReadWriteMany:
- Works: NFS, EFS, Azure Files, GlusterFS
- Doesn’t work: EBS (ReadWriteOnce only)
Troubleshooting
- No built-in versioning or backup
- File locking issues possible with concurrent access
- Requires shared filesystem infrastructure
- S3 Storage for AWS
- GCS Storage for GCP
- Azure Blob Storage for Azure