Introduce concept of stages
When running multiple servers, it's quite common to have a test environment that replicates the production environment. In cases where a change spans multiple machines, it becomes a little bit difficult to roll that out with comin.
Example:
I have a server that runs a DNS service (prod-1) and another server that I want to deploy NextCloud to (prod-2). When deploying NextCloud, I also want to add a DNS record for it. I have the same set up in my test environment (servers test-1 and test-2). When I want to test this change in my test environment, I need to create a branch called testing-test-1 with the DNS change and push that and then another branch called testing-test-2 with the NextCloud change.
It would be great to be able to mark the stage of a server, so that I can simply create a branch called testing-stage-test and it would apply to all servers that are assigned to the test stage. The stage should be configurable in the module options.
Currently, comin first checkout a commit from a "Main" branch and then from a "Testing" branch, if the "Testing" branch is on top of the Main branch.
Instead of having a single "Testing" branch, i think we could have a list of testing branches. Moreover, to each testing branch branch, we could add an attribute to indicate the switch-to-configuration operation (switch or test).
It would then be possible to have this kind of comin configuration:
{
remotes={
main.name = "main";
testings = [
{name="testing-host1"; operation="test";}
{name="stage"; operation="switch";}
];
};
}
(Still need to find a better name for "testings")
@nlewo thank you for the response. With your proposal, how would I assign multiple hosts to stage-test for example? I think there needs to be a mapping between hostname and the stage the host is assigned to.