Reproducability between deployments and recipes between multiple admins/devs working on the same server #338
Labels
No Label
abra
abra-gandi
awaiting-feedback
backups
bug
build
ci/cd
community organising
contributing
coopcloud.tech
democracy
design
documentation
duplicate
enhancement
finance
funding
good first issue
help wanted
installer
kadabra
performance
proposal
question
recipes.coopcloud.tech
security
test
wontfix
No Milestone
No project
No Assignees
2 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: coop-cloud/organising#338
Loading…
Reference in New Issue
No description provided.
Delete Branch "%!s(<nil>)"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Hi,
this is a bit more of a meta question, maybe docs, maybe a feature request :)
I started to setup two servers, for two different organizations. I really like the structure for me locally, having the configs for all services for all servers layed out in a tree. Now some of the services will use custom (private for now) recipes. I have put those into repositories on the gitea instances (each of the two orgs already had a gitea instance). Now I want to introduce the setup to other members of both orgs and ideally have more-or-less foolproof identical setup between myself and everyone else working on the servers (before, we just had everything on the servers themselves in compose files and used direct ssh access).
If I see things correctly, there is currently nothing in the configs that would pin that config to a specific recipe repository or version, they just have the TYPE variable that, I assume, identifies the recipe in ~/.abra/recipes (on every admin's local machine).
I have put the configs for each server into a private repo at each org. That would mean that to onboard others, I would have to tell them to a) clone the server config into .abra/servers and b) clone each of the service repos or init them via abra app new if they're from the official registiry. Is that correct?
With this setup, I have a fear of different people working on the server getting "out of sync", leading to "abra deploy" having potentially different results depending on which repos and revisions are checked out on a developer's machine.
Are there previous thoughts on that? I was thinking about maybe adding a repo URL and revision to the config, and pre-checking this (if not in chaos mode) or using that info to auto-clone the correct repos before deploying or so. Maybe that could also be a custom shell script in the server config folder/repo.
My thinking was: If each service defined in
.abra/servers/YOURDOMAIN
would contain a reference to a Git repo and commit, that would make this folder (if in a git repo) a single source of truth for "that server". Aabra server init-recipes
or so command could clone/checkout the repos mentioned for that server locally and thus provide easy onboarding and reproducible environments.@Frando
True! It might be nice alright to have a
PINNED_DEPLOY_COMMIT=<sha>
(or$some_other_name
) which can be put in the.env
and abra will read to only deploy that version. Would that match what you're thinking about here?If the recipes are from the "official" listing then
abra
will automatically clone them fromgit.coopcloud.tech/coop-cloud/...
when it needs them. Otherwise, yes, they'll have to manually clone them. I thinkabra
will error out with a "i don't know where that recipe is?` message?Following from #303 & #139, we could imagine having a way to point
abra
at another recipe listing (e.g. private gitea) where it could clone stuff?I like this thought!
What we have at Autonomic right is basically this makefile approach which serves us on a team of 8+ or so people working on it together. We haven't need to do more than bootstrapping the
~/.abra/servers/...
folder, sinceabra
will auto-clone the required recipes.Related to onboarding: #340Solved that one finally!Converging on #434.