Pull Latest Changes When Server Comes Online

Hi,

I have my servers load balanced and auto-scaled on Azure. With auto-scaling there is a chance that when a deployment happens some of the servers won’t be online, is there anyway to have the tentacle when it checks in for the first time to ask if it has the latest version, and if it doesn’t have it install the latest for the environment group?

Thanks,
Nick

Hi Nick,

Are you using cloud services or VM roles? How do you install Tentacle on the machines currently?

Using Octo.exe it is possible to trigger a deployment of a project to a specific machine (the new machines in this case) so it should be possible with some automation.

Paul

Hi Paul,

The tentacle is already installed on the server. But how Azure auto scales is that say I create 5 servers for my server group. I set that I want a min of 2 running at all times. The other 3 in the group turn on as needed. When I update there is a chance that not all 5 will be running. Which is my problem.

Which brings me to the second problem I have noticed. Installs for the tentacles are all or nothing. It takes a really long time for the octopus server to realize that a couple servers in the group aren’t running when I do a release.

It would be nice if the install would continue if a min number of servers were present. And then upgrade the rest as they come online.

Right now there is a lot of manually starting the servers with PowerShell scripts and then waiting about 10 mins before I can deploy the release to all servers. Which is not exactly optimal for large server deployments.

If you have any suggestions for a better way that I can use Octopus, I am always open to improvements.

Nick

Sent from Surface

Hi Nick - it might not be directly applicable, but you could take a look at how scaling’s achieved using https://github.com/MRCollective/AzureWebFarm.OctopusDeploy.

Another alternative would be to create a small script based on the Octopus API (HTTP or C# client) that retrieves the list of “healthy” machines, and then initiates a deployment specifying the target machines explicitly (excluding the unhealthy ones). Should be quite straightforward, and could run in a loop to identify and push to new machines as they come online.

If you decide to try the API approach there are docs at: http://docs.octopusdeploy.com/display/OD/API+and+Integration and we’re happy to help answer any questions that come up.

Regards,
Nick

Hi Nick,

Thanks I will take a dive into that. Are there any plans for any of the
features I have listed on the road map? Current big ones would be:

  • Set minimum number of online servers (in my case 2 out of 4) to allow the
    deployment to go through.
  • Bring newly online machines in an environment up to the latest deployment
    version in same environment.

Thanks,
Nick

Hi Nick - not in the immediate future though they are things we’d strongly consider supporting.

You might find them already (or you might like to add some details) on our UserVoice site - we’re leaning pretty strongly on UserVoice for prioritisation of these smaller enhancements: http://octopusdeploy.uservoice.com/

Regards,
Nick