In evaluating Octopus Deploy, we have a specific need to deploy to remote servers (agents) that may have been offlline for some time. Can Octopus Deploy queue these deployments up, and once the remote server comes online, deploy whatever deployments it may be missing to bring itself up to date?
Thanks for getting in touch! In Octopus 3.4 we are planning to ship support for transient machines, primarily for supporting cloud-style infrastructure that comes and goes ephemerally. https://octopus.com/blog/rfc-cloud-and-infrastructure-automation-support
One of the key components of that is when a transient machine is created in Octopus, we will figure out which releases of which projects should be deployed to it based on the Roles it’s been given, and enqueue deployments to make it happen.
Your situation would be very similar, except where you probably don’t want Octopus to automatically delete the machine if it has failed health checks for a certain period of time.
Does this sound like it would be a good fit for your situation?
Hope that helps!
For arguments sake, lets say we have 100 remote servers. When we have a deployment, we package up the application and push it to all connected remote machines. We have an agent listening on the remote machines that acknowledge the deployment, and install it at the specified time. Although there is virtually no visibility to this task, it works pretty well.
Our business is very seasonal, so come winter, many of these remote servers are physically powered off. However, deployments continue. Come Springtime when some of these remote servers are powered back up, they check in with a central server and get the instruction to download and install N deployments.
This current process works OK for us as it is, but what we’re really lacking is visibility and a less complicated solution.
That’s how I’m hoping OD can help.
OD would require the ability to take remote servers out of the deployment loop if they were off line (and not delete the machine from OD) and when they come back online N days/months later, pick up where things were left off.
Can OctopusDeploy help with this scenario?
I think the features we’re building for transient machines in Octopus 3.4 will suit this scenario perfectly. To be clear, these features are not available yet, but we are working on them actively now and plan to ship a pre-release in about 2 months.
That being said, with Octopus you can manually disable a Deployment Target (Machine) to take it out of deployments while offline, and manually re-enable them when you bring the machines back online - but you would have to manually deploy the latest version of the Projects to those machines when they come online.
The Octopus 3.4 features will automate all of that manual work for you.
Hope that helps!
+1 for ability to schedule deployment to offline deoloyment targets. When the targets comes online some time in the future Octopus takes care of deploying the scheduled deplyments.
With version 3.3.2 my deployment partially fail because some of my deployment-targets are always offline.
Will the feature you are working on install only the latest scheduled deployment to a Deployment target when it comes online, or will it deploy all scheduled deplyments in sequence?
Thanks for getting in touch. At this point we are planning that when a Machine comes back online (transition from failed -> successful health check) Octopus could automatically deploy the latest Release for each Project (mapped by Roles) onto that Machine. We don’t currently have a plan to deploy each missed Release onto the Machine. Is that a behaviour your deployments depend on?
I typically recommend designing your deployments such that it doesn’t matter whether deployments are skipped/missed - deploying the latest would apply any changes cumulatively from the most recent deployment. For example, if someone installs Octopus 3.2.1, then skips everything until Octopus 3.3.2, we still want that upgrade to work. I do the same with Web App/Database deployments too.
Does that sound about right to you, and suit your situation? If not it would be wonderful if you could provide some more context so I can understand how we can help make your situation easier to automate!
Hope that helps!