been experimenting with 3.4 beta 2, and the addition of tenants as a first class dimension will be very useful and simplify our environments greatly.
however, for a few conditions, it complicated things.
we have 10 clients, which we will now track as tenants. in our enterprise, we have 5 services, and we track the deployment of each of them with roles, applied to steps in the project, and applied to deployment targets in the environments. depending on the environment, these services might run on one common server, 2 servers, or a handful of servers (but in no case is there a separate server for every client.)
currently, in v3.3, we have each octopus environment map to an environment/client combination, and so the servers that host these services will appear more than once as a deployment target in multiple octopus environments, and each instance will have the appropriate roles assigned (as appropriate for the client.)
in 3.4, when we create a deployment target, we assign it 1 or more Roles, and 1 or more Tenants (or tags).
this doesn’t quite work for our server(s) that host these 5 services. it is NOT the case that all the tenants assigned to this deployment target run all five of the services (as defined by the roles.) it’s more like Tenant 1 uses services 1,2,3; Tenant 2 uses services 3,4,5, and Tenant 3 uses services 1,3,5; but they all will run on the same server.
what would be useful to us would be that, on a deployment target, we assign tenants to each Role assigned to the deployment target. e.g. for Role 1: Tenants A,B,C; Role 2: Tenants C,D,E; Role 3: Tenants A,C,E; etc. OR the reverse, e.g. Tenant A: roles 1,2,3; Tenant B: roles 3,4,5; Tenant C: roles 1,3,5.
our workaround looks like we will be creating multiple deployment targets for the same physical server, and apply one role to each target, each with it’s unique combination of tenants (or tags.) This should work, but isn’t ideal, because Octopus doesn’t recognize that these multiple targets are really the same physical server, and whenever there is an environment-wide task (health check, tentacle upgrade), it will send the commands to the same server multiple times, and this often causes problems, and they get out of sync (upgrade a tentacle though one target, the other targets don’t realize that they’ve been upgraded.)
this isn’t a must have, but if it could be considered for a future release, that would be great. thanks.