I'm trying to think through devops and using melta...
# announcements
a
I'm trying to think through devops and using meltano in production. Specifically, config values. The .env file and meltano.db are in .gitignore. Are there any recommendations or practices around deploying and around managing production config values?
d
@adam_roderick Right now, I would suggest using
config
objects on your plugins' definitions in
meltano.yml
for non-sensitive values, which I intend to make more accessible through
meltano config
soon: https://gitlab.com/meltano/meltano/-/issues/2013. For sensitive values, environment variables are your best bet since many systems exist to manage them in production environments, some of which also support hiding the most sensitive ones in vaults. I would love it if Meltano would develop into a more scalable, more mature direction on this front. The 2 paragraphs I just wrote above could be the start of a "Production" section in the docs, and I think we should discuss more forward-thinking solutions in an issue. Since you appear to have some thoughts on the topic, I would suggest creating an issue to get the conversation started, and I will update the docs with what I wrote above: https://gitlab.com/meltano/meltano/-/issues/2038
e
I imagine a good Docker workflow for meltano would allow one to set config for each component via environment variables, picked up at runtime by meltano (using something like
<https://github.com/segmentio/chamber>
in a production setting). An example of a local environment using docker compose (meltano + meltano db + some source + some target) would be incredibly helpful.
Also, since
config.json
is such a hallmark of Singer taps and targets, the configuration could be stored in a temp file so in the background a
tap -c config.json
runs and taps remain compatible with the rest of the ecosystem
d
An example of a local environment using docker compose (meltano + meltano db + some source + some target)
would be incredibly helpful.
I agree this would be useful, and I created a related issue at https://gitlab.com/meltano/meltano/-/issues/1970, although my thinking there was that this would be primarily useful for people wanting to use Meltano UI. In any case, what you describe should already be possible in principle—perhaps you would like to have a crack at setting it up and I can help out if you run into any issues?
Also, since 
config.json
 is such a hallmark of Singer taps and targets,
the configuration could be stored in a temp file so in the background a 
tap -c config.json
 runs and taps remain compatible with the rest of the ecosystem
This is already what happens, right? When
tap-gitlab
is run through
meltano elt
or
meltano invoke
, Meltano automatically generates
.meltano/run/tap-gitlab/tap.config.json
which is then passed to the tap executable in the
--config
flag. Or am I misunderstanding what you're suggesting? 🙂
Adam filed an issue to continue this discussion at: https://gitlab.com/meltano/meltano/-/issues/2023 I'll respond there in a moment 🙂