Best way to deploy multiple instances of project to same set of machines?

We currently have a project that we deploy as multiple separate instances (separate web processes, and background processes) to the same set of servers. We need to deploy these independently of each other.

What’s the best way to approach this? They’re the same environment but would require different configuration settings for each deployment.


We need to deploy these independently of each other.

This is really the key. If you deploy them at the same time, then you could have 1 project with multiple steps, and different variables scoped to each step.

But since they are deployed independently, I would model it as different projects. Then they would be isolated from each other and you can deploy independently.


Thanks Paul. If we were to deploy at the same time (which is what I’d like to move towards), we’d need to have multiple steps using the same NuGet package. Is this possible at the moment? It would be nice to be able to enter a step name, say


with the different variables scoped, but tied to the same NuGet package?

Although thinking about it, wouldn’t that also cause problems - in that we’d then be needing separate folders in the Applications based on step name rather than the NuGet package name?

Hi James,

Is it the same package that you are deploying to different machines?

You can add two steps using the same package/version to a project, and they’ll be named e.g., “1. Acme.Web”, “2. Acme.Web”, so you can differentiate them in the Octopus UI. On Tentacle however, one package will override the other. This feature is really only intended for places where the same package needs to go to different sets of machines.


It’s multiple packages that we’re deploying to the same machines. Our product currently consists of two websites and one background server per tenant.

In test & staging, it would go out to machines web01, db01 (under specific websites for test, staging - only one tenant). In production, it would then go out to multiple tenants (probably playing it safe and deploying one at a time rather than all at once).

Currently production also uses web01 and db01.

Any ideas?


From seeing your reply to the other post, perhaps these are just different environments? We have a test, staging environment. And then a prod-custA, prod-custB environments?

Only pain point will be adding each machine multiple times, but not a biggie for now.

Yep, different environments would definitely work.