Rolling deployments mechanism for the machines in a webfarm/cluster

I have a suggestion for the improvement of the deployment strategy in order keep at least one machine up during the deployment on Tentacles in a cluster/web farm environment which usually has a load balancer in front. I would introduce the concept of deployment strategy when defining a “Deploy a Nuget package” step in order to keep compatibility with the existing parallel deployments. The strategy might have at least two options: parallel deployments on all Tentacles in the same environment and, the other option, rolling deployments - meaning that the server will perform one deployment at a time on each Tentacle. In this way, the application (as a whole) will be up permanently.

In order to control the load balancer (remove nodes from cluster and later add it back when deployment finished on the agent), the server should have the ability to run a Powershell script before and after each deployment on a Tentacle because usually the load balancers have APIs which can be called using a scripting language in order to remove the machine from rotation and, at the end, add it back. The script should be run from server and not from Tentacle as it is no real use to transfer this responsibility on each Tentacle. Embedding the script in the nuget package to control the balancer is not a good idea security wise since the balancer credentials or its modus operandi are not under the control of developers who prepare the packages.

Hi Robert, thanks for this suggestion, I like the way you are thinking.

So we’d have a new step that was similar to the current one, only it would allow you to specify:

  • A before script (and whether it runs on the Octopus server)
  • An after script (ditto)
  • The strategy (rolling, parallel)

Currently this can be achieved by creating many steps (since steps get run sequentially) but this would make it much easier. I’ll see if we can do it for Octopus 2.0. Thanks for the suggestion!

Paul

The “many steps” approach sounds like it has the benefit of allowing the manual intervention step in between. This would allow us to deploy to one server in the environment, verify it looks good then approve the rest of the deployment.

Is this feature going to make it in v2.0? Surely you’ll get a new client if this will be implemented. :slight_smile:

Yes :slight_smile:

Paul

When should I expect v 2.0 then?

Hi Robert,

We’re planning to release a beta in October.

Paul

Any news about the release?

Hi Robert,

You can try the public beta of 2.0 right now:

Paul