How to distribute select questions only to production site

Hi,

i am working on a local windows/java instance of the latest Metabase software. I wish to deploy only select questions/pulses/dashboards to a production server, thus isolating production sites from my dev work. Is there any documentation on this topic?

Additionally want to lock production servers from doing any editing of my canned reports.

appreciated,
Charles

Hi @crwheelr

There’s currently no documentation on that. If you search for “production”, then you should find other threads about it.

There’s several ways to hack something together. Some people just manually create stuff on production, others duplicate the metadata, and some are using the API.
What works best for you, depends on your environment, how skilled you are, and how often you need to push stuff to production.

The Enterprise Edition has a feature that somewhat helps with this called Serialization.

You can limit your users on the production, so they don’t have database access and only view access on collections - that will act like read-only.

@flamber

referring to “duplicate the metadata”, would this entail copying records from the dev MB database to a production one? would this be pretty straightforward do you think?
perhaps i could just copy the entire dev H2 file to a new name, open the new one and start deleting the dev items.

alternatively could I just move table records from one H2 file to another with a database editor tool?

chuck

@crwheelr
We’re back to talking about H2 - I cannot recommend that you use that.
You cannot move/copy individual records (dashboards/questions/etc) manually. There are way too many connected IDs that need to match.
The easiest option would be what you said - simply duplicate your dev-metadata to prod-metadata and remove any dev-items that shouldn’t be in production.

@flamber,
What about the Serialization feature in the documentation. This seems to address precisely the need to replicate select reports/questions form a dev instance to prod instance of Metabase.
Can you comment if this is fully supported at this time?

Chuck

@crwheelr

As I wrote in the comment a month ago, Serialization is part of Enterprise Edition.

But let me make it perfectly clear. You are going to end up with a corrupted H2 database some day, which will mean that you need to try to fix that or revert to a backup, so if you’re okay with that and have many backups, then great, but there are other issues with H2, like cleanup and optimization, where some of them can only be run when closing Metabase (without killing the process).

Yes reviewing the thread, Serialization for enterprise only. i am stuck again. Can this feature be purchased w/o enterprise? I doubt I can find enterprise affordable knowing what i know of Tableau. I am a one man show who in the end game will have tens of customers probably.

regarding H2. The thing is that i am supporting an installation document for clients that are likely barely PC savvy. It’s enough task to get Java installed, setup to run as service (best way i have found, using nssm), installing metabase, getting my initial H2 file copied in…and then configuring pulse email destinations for their local recipients.

Its a lot. Instruction on setting up another database pushes it too far i think. i have daily backups, I believe to be pressed to use H2 to avoid the added hassle to my clients.

Chuck

without the serialization feature, each time i send an update, users will need to reconfigure their pulse emails, their specific user names etc. argh!!

@crwheelr

I don’t know what or how you’re trying to setup, but something tells me that you might want to do it a different way.
As for user-friendly setup, you should create a script that does everything for the customer, so they don’t have to do anything by clicking a file.

Have you considered not running Metabase at your customer, but hosting it somewhere you control and finding a way to read the customer data (via sync, VPN, or some other secure way)?

Otherwise I think you should look into the API, since you can script that, so you update specific parts without changing the pulse recipients:
https://github.com/metabase/metabase/wiki/Using-the-REST-API
https://github.com/metabase/metabase/blob/master/docs/api-documentation.md

There’s a project that tried to create a way to import/export data via the API, but hasn’t been updated for a while:
https://github.com/elevate/elevate.metabase.tools

But since you’re not really trying to use some of the main features of Metabase, like sharing data-access with the end-user and let them create their own queries or do drill-through, then have you thought if Metabase is even the correct tool for the job?
If you’re just displaying a couple of dashboards, then perhaps Redash might be a better tool:
https://github.com/getredash/redash

Hi @flamber,

i will take a look at maybe doing something to distribute my updates through API work. I am not a seasoned programmer, but perhaps i can figure out, else get a contractor to do it. Same for the installation piece.

I will be having some customers doing their own reports possibly - in their private collection area… Pulses arepart of my package, but also canned reports i intend to publish now via the public link capability of Metabase.

I think it can all work out quite nicely if i can script a reports upgrade system, like serialization.

thanks for the insight.
Chuck

@flamber,
I reviewed the code elements in GitHub and pretty quickly determined that this is beyond my abilities. What I need and will not change, is the ability to replace a collection in several client PCs. Looking at the documentation for Metabase Exporter looks like the import and export of .json files would be just the thing. don’t know about replacing the target collection with new one though. Is it reasonable to contact the author Mauricio to see if this is being maintained?

thanks
Chuck

@crwheelr
Looking at the activity of the project, and checking the issues, it seems like he’s waiting for a specific Metabase feature to get implemented before he’s considering updating the project.
So either you have to wait for that or start learning how to work with REST API, which is a very useful skill, that you will be able to use many places, so I would highly recommend that.

@flamber,

thanks for info. For time being, I will simply distribute the database and have client customize their user name and pulse info manually.

Is there a mechanism where I can watch this activity, if an update comes out?

Chuck

@crwheelr
See what activity - if the client changes their details and pulse info? Then no, not without you make a script, where the client inputs the info there, so your script makes the changes and notifies you somehow.

oh no i intercommunicated. I mean how can i get informed in Mauricio updates the exporter tool?.. so that it us usable to export collections?

Chuck

@crwheelr Go to the repo on Github and click the Watch-button and select “Releases only”.