Agent-based deployment in Release Management

Release Management now supports robust in-the-box multi-machine deployment. You can now orchestrate  deployments across multiple machines, perform rolling updates while ensuring high availability of the application throughout.

Agent based deployment capability relies on the same build and deployment agents. However, unlike the current approach, where you install the build and deployment agents on a set of proxy servers in an agent pool and drive deployments to remote target servers, you install the agent on each of your target servers directly and drive rolling deployment to those servers.

Preview

Agent based deployment feature is currently in early adopter phase. Submit requests for participation and suggestions here.

Deployment Group

Deployment group is a logical group of targets (machines) with agents installed on each of them. Deployment groups represent your physical environments like single box Dev, multi-machine QA or farm of machines for UAT/Prod. They also specify the security context for your physical environments.

Here are a few screenshots to explain how this experience is shaping up.

  • Create your ‘Deployment Group’,  register your machines with the cmdlet.createdeploymentgroup
  • Author release definition: If you are deploying to farm of servers, you can use deployment configuration options viz., one target at a time, or half the targets at a time, or deploy to all targets at once, or use custom value. 
    deploymentgroupphase
  • Deploy: view live logs for each server, download logs for all servers. Track your deployments steps for each server using Release log view.deploymentgrouplivelogs
  • Manage: Track the deployments down to each machine. Tag the machine in the group so that you can deploy to the targets having specific tags.deploymentgroups

Bootstraping agents: We have made bootstrapping the agents on the target simpler. You can just copy-paste the cmdlet appropriate for the OS and it will take care of downloading, installation and configuring the agent against the deployment group. It even has an option to generate the cmdlet with ‘Personal Access Token’ with right scope so that you don’t have to.

  • If it is Azure, you can do it on-demand using Team Services extension for the VM or use Azure PowerShell/CLI to add the extension which will bootstrap the deployment agent. Or you can automate using resource extension in the Azure template json.
  • We plan to enhance ‘Azure Resource Group’ task to dynamically bootstrap agents on the newly provisioned / pre-existing Virtual Machines on Azure.teamservicesagent

With this you can use the same proven cross-platform agent and its pull-based execution model to easily drive deployments on a large number of servers no matter which domain they are on, without having to worry about the myriad of pre-requisites.