Allow operator to specify arbitrary variables in their .env #532
Closed
opened 2025-04-14 23:33:43 +00:00 by FunPecan
·
3 comments
No Branch/Tag Specified
main
renovate/golang-1.27
renovate/github.com-charmbracelet-bubbletea-2.x
fix/492
local-integration-testing
renovate/github.com-charmbracelet-lipgloss-2.x
renovate/otel-weaver-0.x
renovate/codespell-2.x
renovate/tonistiigi-xx-1.x
renovate/alpine-3.x
renovate/github.com-charmbracelet-log-2.x
chore-deps
fix/deps
fix/613
0.13.0-beta
0.13.0-rc2-beta
0.13.0-rc1-beta
0.12.0-beta
0.11.0-beta
0.10.1-beta
0.10.0-beta
0.10.0-rc2-beta
0.10.0-rc1-beta
0.9.0-beta
0.8.1-beta
0.8.0-beta
0.8.0-rc2-beta
0.8.0-rc1-beta
0.7.0-beta
0.7.0-rc3-beta
0.7.0-rc2-beta
0.6.0-beta
0.5.1-beta
0.5.0-alpha
0.4.1-alpha
0.4.0-alpha
0.4.0-alpha-rc8
0.4.0-alpha-rc7
0.4.0-alpha-rc6
0.4.0-alpha-rc5
0.4.0-alpha-rc4
0.4.0-alpha-rc3
0.4.0-alpha-rc2
0.4.0-alpha-rc1
0.3.1-alpha-rc2
0.3.1-alpha-rc1
0.3.1-rc1
0.3.0-alpha
0.2.2-alpha
0.2.1-alpha
0.2.0-alpha
0.1.8-alpha
0.1.7-alpha
0.1.6-alpha
0.1.5-alpha
0.1.4-alpha
0.1.3-alpha
0.1.2-alpha
0.1.1-alpha
0.1.0-alpha
10.0.5
10.0.3
10.0.2
10.0.1
10.0.0
9.0.0
8.0.1
8.0.0
0.7.4
0.7.3
0.7.2
0.7.1
0.7.0
checkout
0.6.0
0.5.0
0.4.1
0.4.0
0.3.1
0.3.0
0.2.0
0.1.2
0.1.1
0.1.0
Labels
Clear labels
bug
build
ci/cd
critical fix
design
documentation
duplicate
easy-first-issue
enhancement
help wanted
i10n
i18n
installer
invalid
question
release
release-candidate
security
tech-debt
test
wontfix
Something is not working
go build related issues
Building things with CI/CD
https://docs.coopcloud.tech/federation/resolutions/passed/010/
UI/UX
Documenting all the things
This issue or pull request already exists
Something for new people to get stuck into. We hope it's easy!
New feature
Need some help
Everything to do with localisation
Everything to do with internationalisation
Everything to do with the install script.
Something is wrong
More information is needed
Release management
Related to the new release candidate
Security related
Unit/integration testing
This won't be fixed
No labels
question
Milestone
No items
No Milestone
Projects
Clear projects
No projects
Assignees
3wordchant
aadil (Aadil Ayub)
abra-bot (Abra Bot)
ammaratef45
amras (Sarma)
Apfelwurm
BornDeleuze
Brooke
carla
cas (Cassowary)
coopcloud
cyrnel
decentral1se (d1)
dede
devydave
fauno (fauno)
iexos
jade (Jade Ambrose)
jjsfunhouse
jmakdah2 (Jackie Makdah)
joe-irving (Joe Irving)
kawaiipunk (KawaiiPunk)
knoflook
kolaente
lambdabundesverband
linnealovespie (April)
moosemower
moritz
notplants
oxaliq (sorrel)
p4u1
pharaohgraphy (Andrew 🐦🔥❤️🔥✴️)
renovate-bot (Comrade Renovate Bot)
ripclap
simon
sixsmith (Sixsmith)
stevensting
trav (Trav Fryer)
val (val (he/him))
yksflip
Clear assignees
No Assignees
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: toolshed/abra#532
Reference in New Issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
This is closely related to #530 but I want to offer a broader solution.
PROBLEM - As a design choice, it seems like it will create an really high degree of friction to always need to define variables in the compose.yaml and .env.template before the operator can use them.
(NOT GREAT) SOLUTION #1 - If the operator always has to fork the repo to add new variables, that's a big increase in work for them.
(NOT GREAT) SOLUTION #2 - If the recipe maintainer always has to make sure to include every possible variable, that's a little more achievable. But it seems like it will always fall behind the upstream changes.
PROPOSED SOLUTION - I'm curious about a happy middle ground: Allow the operator to specify anything in .env and have abra (or a specific recipe) understand what to do with those arbtrary "unmapped" variables. At least for matrix.org, this would be a simple conversion from "UPPER_CASE_VARIABLE=true" (.env) to "lower_case_variable: true" (in the homeserver.yaml). Maybe other recipes would need different configuration to do the translation properly.
Curious what y'all think.
Allow arbitrary variables through from .envto Allow operator to specify arbitrary variables in their .envI know it might seem like a total pain in the ass as a newcomer but we've been doing it like this roughly 4-5 years now. When I say "we" I mean the initiators of the project but also all the new people that joined over the years. I would say this doesn't really strike me as a major issue and mostly just an annoying hoop to jump through which most people pick up after a few hacking sessions and just move on. You'll see the wealth of recipes that have been packaged and this would be the first time someone said "damn we need to smash this specific hoop that we're jumping through".
Experience has shown that it's better that
abradoes less and less and specifically as less "magic" as possible. We've reduced so many things that we thought "would be good" that turned out to be maintenance issues or not applicable or didn't work completely for everyone. This seems like one of those things that will be v hard to get right and I'm not sure it's worth the effort given my comment above. We also need to remember that specific env vars need to go in specific compose files (e.g.compose.smtp.yml) andabrawould have to handle all that as well. I'm v doubtful of that working out.I'm open to hear what the rest think but I'm generally in favour of just sticking with the current imperfect solution of jumping through the hoop. I'm all for #530.
Gotcha. Yeah I agree that it seems hard to implement reliably.
#530 is definitely better than nothing. And definitely simpler!
I guess the solution (in addition to #530) is just: attempt to maintain a robust enough
compose.ymlthat most operators won't encounter any config variables they can't access. Is that right?@FunPecan yeh, that's it. In practice, we see people add these things over time and it's generally "OK" and not so much of a hindrance. There's like a handful of things that the Swarm runtime make awkward and probably if we could start over, we'd do things differently 🙃 Also the docs do generally help people: here. If anyone want's to get a PR in for #530, I'll review it! I'm gonna close this for now.