I have been working through your documentation but appear to have hit the end of it. If possible I would like to confirm that I have setup my environment correctly as it currently feels a bit clunky
We have 200+ tenants split across 4 data centre regions plus some clients who self-host.
Within each region we have multiple environments consisting of a SQL server and 1 or more web servers setup in farm.
I have setup each of these as separate environments in Octopus rather than doing it as the region level.
Therefore if I assign a tenant to an environment I want every machine in that environment to be deployed to rather than having to select individual servers.
When I create a tenant I get the option to select an environment when I connect them to a project.
However if I then jump straight to deployment after setting the variables I get informed that the tenant has no deployment targets in the environment. I then have to go to each machine in the environment and manually add that tenant in order to perform the deployment.
Is there are a shortcut of doing this? Even better is there a way of deploying to all machines in the environment.
I think I may have found a solution using Tenant Tag Sets.
I have set one up for environment and tagged all tenants to each environment.
I can then associate each machine in the environment with the correct environment tag.
Feels a bit like double handling but is much easier than adding each client individually.
Please let me know if I am on the right track or going about it completely wrong.
Thanks for getting in touch.
You are correct and are on the right track If you assign the environment tag to your new machines as you provision them (eg. if you’re registering your tentacles via the command line, see the register with documentation and the
tenanttag parameter) it will let you match up your machines to tenants (via these environment tags) much more easily.
I have now decided that I set it up incorrectly and should have used the tenant tags to be specific about the environment that the tenant runs upon use the environments for DEV and PROD instead.
I have come across a related problem that I have thus far been unable to find a great solution for though. My deployment process contains a step to deploy a Windows Service which is required for 98% of my sites. I have been unable to find a way of excluding this step from running for the handful of sites that don’t require it.
My solution thus far is to create a tenant tag for RequiresWindowsService and ensuring that the sites that require it are tagged with it. I can then set that step to only run on these tenants via the tag.
My preferred approach would be for the tag to be DontDeployWindowsService and add the handful of applicable sites to it. However I see no way to exclude tenants from a step based upon a tenant tag.
I’m glad you’ve got a solution that’s working. We designed the tagging features to work in an inclusive way, so you tag the things you want included (like you are doing currently). This is also consistent with our use of tagging in other areas, like roles. There is no way to exclude tenants from a step based upon a tenant tag, it’s always an inclusive action.
If you think this is a feature that you and others would benefit from (and you can recommend a way of clearly separating inclusive tagging vs exclusive tagging), we’d recommend making a uservoice suggestion. This allows our community to vote on features and helps us determine priorities.