Each one of our environments (Development, Staging, Production), for a specific application, has several server sets, where each set is a load balancing cluster with 2 or more servers. We only want to update specific cluster(s) at a given time, never all of them. Furthermore, when deploying to a particular cluster we want to do a “rolling update”, i.e. take one server in the cluster offline, deploy, bring back online, and repeat for the other servers in the cluster if successful.
For example, lets say that our production environment has 12 server clusters, numbered 1-12. Each cluster has 3 servers for a total of 36 servers. Today we want to deploy an update of our application to cluster #4 and #6 only in production.
According to the documentation, an Octopus Deploy environment is “a group of machines that you will deploy to at the same time” (http://docs.octopusdeploy.com/display/OD/Environments). However in our scenario we only want to deploy to specific clusters in an environment at a given time, and within a cluster we want to do a rolling update. Using Octopus Deploy do we need to create environments for each environment/cluster pair (e.g. Staging_Cluster1, Production_Cluster1, Production_Cluster2), or is there a more elegant way? Is this deployment scenario supported at all using Octopus Deploy?