At TechEd Europe 2014 Azure announced support
for Octopus Deploy
, among many other things. Providing the ability to create Azure Virtual Machines with Octopus components pre-installed was one of the top requested features on Azure User Voice
and we are very excited to provide this functionality!
Before we drill into this, take a look at our Extensions documentation page
to see the full list of VM Extensions we support and how they can be used in various VM Management operations. While this blog post focuses on the Octopus Extension, for a quick overview of VM Extensions please refer to blog posts here
Octopus Deploy is an automated deployment tool which makes it easy to deploy ASP.NET web applications, Windows Services and other applications. Octopus provides a dashboard so your team can view the status of deployments, and the logs for deployments that span many machines are centralized in one place. Octopus uses a Tentacle, which is a secure, lightweight agent service on the Virtual Machine for deploying software and with this integration Tentacle can be deployed and configured on an Azure VM in a fully automated way .
There are two steps involved in setting up Octopus system:
1. Setting up Octopus Server.
2. Installing the tentacle agents using the Azure Octopus extension.
Setting up Octopus Server:
If you have an existing Octopus Server deployment, you can use it. If not, you can setup one as below:
1. You can setup an Azure Virtual Machine to be an Octopus Server by downloading the msi . This includes setting up the license key info.
2. Once the Server is setup, add the http (or https) end point on the Virtual Machine. This can be done from Azure Portal (http://portal.azure.com ), browse to the Octopus Server VM and add the ‘http’ endpoint with public and private port values of 80.
3. Browse to the Octopus server URL using the DNS name and create an environment. At this point the server has been setup successfully.
Installing Tentacle Agents:
To install Tentacle agent on any windows VM, browse to the VM from https://portal.azure.com
and select Octopus Extension . Provide the Octopus Server Url (from the step above), the API key
, the environment that you created and the listen port(default value of 10933) as input. Don’t forget to specify the listen port endpoint on the VM with public and private port values (default 10933).
Once everything is installed, you’ll see the VM in the Octopus Dashboard. All the steps we discussed can be fully automated using Azure PowerShell cmdlets
. For a complete overview of installing tentacle agent from Azure Portal UI and Azure PowerShell cmdlets, see the blog post from Octopus team here
Once the Server and the clients are setup you can use the regular Octopus publishing mechanism to manage software on the VM. It’s also worth calling out that PowerShell’s Desired State Configuration
(DSC) is the underlying technology that’s being used to configure the tentacle agent. In fact the Octopus DSC resource that’s being used is available here
We are very excited to have the Octopus extension on Azure and we will continue to work on providing improvements to make the experience even better. Here are a couple of them:
1. Detailed Status reporting from Portal and PowerShell:
All the detailed configuration logs for this extension are available on the VM but they are not reported in the UI or from Azure PowerShell cmdlets. In the future release we want to provide this detailed status via a REST API just like we do for other extensions so Portal, PowerShell and other clients can consume them.
2. Support for Server 2012 and Below.
In the current version the DSC is supported on Windows Server 2012 R2 but we are actively working on porting this to Windows Server 2012 and below in the upcoming releases. The update for 2012 support is coming very soon.
In the upcoming blog posts, we’ll discuss how to use Microsoft Release Management extension on Azure for performing Release Management tasks.
We’d like to hear from you on what other DevOps technologies/solutions you’d like to us to integrate with Azure. Please post your ideas to Azure User Voice