Selective deployment to servers within an environment

In a scenario where we have hundreds of hosted clients, we currently use a model where we make one octopus deployment per client using a single tenancy model i.e. one app server and one database per client. All clients are hosted on one server groups i.e (web server and database server ). Moving forward, we are setting up another server group so that we can begin to scale out and if this trend continues we will have many server groups with multiple clients.

Using octopus deploy constructs (environments, roles, etc) how can we selectively deploy to various server groups ? Would this be possible to do in a clean way ?

As a first impression it seems to me that the way to go may be to setup one deployment process per server group (i.e. Web and database) but perhaps there is a better way.

Thanks in advance for your advice.



A solution that seems to be emerging is to use the Restrict Deployment to specific machines feature (visible on the deployment page) so that given a set of prompt variables (eg web server name, database server name), I can target only the relevant associated servers - possibly from a lookup table with custom code.
I could potentially use octo.exe with the --specificmachines parameter to the same effect.

Could there be another way ?


Hi Tuka,

Thanks for getting in touch and sorry for the delay here.

Lots of other Octopus users have ran into the exact same situation as you, and for this we decided to implement a “Multi-Tenancy” feature for the next version of Octopus (3.4)

You can read more about it on the 2 RFC posts we wrote:

At the current version (3.3) the best approach for your scenario would be to have an Environment per customer. But as you probably already know, that’s quite annoying to maintain. For this reason we are very excited to be currently working on this new feature/

Best regards,