Using Kudu to figure out why your Azure deployment suffered a rapid unscheduled disassembly


It’s the last day of the sprint and your team are watching as you and your colleague are going balder and balder and balder. Your deployments are failing and you can’t tell why.

All Azure says in the diagnostic audit log is

New-AzureRmResourceGroupDeployment : 14:29:51 - Resource Microsoft.Web/sites/extensions 'xxx-xx-0-0-226/MSDeploy' failed with message 'The resource operation completed with terminal provisioning state 'Failed'.'

Great. But what does that even mean? This is 2016, I don’t even have a terminal to provision!


The detailed deployment log may help:

  1. Find your Web site URL. It’ll be something like
  2. The Kudu entry point for this will be https// Navigate there.
  3. Open the Debug Console: this is at e.g.
  4. Navigate to d:\home\LogFiles and drill down. Here you’ll find log files that will contain much more detailed information.

In my case I was using the MSDeploy extension to deploy, so the log file in question was in d:\home\LogFiles\SiteExtensions\MSDeploy\appManagerLog.xml . It immediately showed that the package URI was incorrect.

I’ve written a lot more about Kudu here.

Author: Jeremy McGee

I write software, and try to help others do the same.