Comparing Azure and Azure Stack

Recently, a client asked me to investigate Azure Stack. Like many enterprises, this client is intensely interested in the ability to run cloud-compatible systems on-premises. In their case, security is the prime driver. But improved security and control are just appetizers, IMO. What is more exciting is the prospect of a 100% API-consistent environment for developers, operations and administrators across public and on-prem computing environments. I got a chance recently to talk about this idea at length on an episode of the Datanauts podcast.

As you may know, Microsoft offers an Azure Stack Development Kit (ASDK). Since Azure Stack is supplied as a hardware appliance, the ASDK is only supported on hardware. But it’s an open secret that you can, if you are adventurous enough, run the ASDK on Azure itself. Advice on how to do that is beyond the scope of this post. Here’s a link to a GitHub project for Azure Stack on Azure that should get you started. But if you really want to compare Azure with Azure Stack nothing beats being able to run Azure Stack in Azure.

This post focuses on the question, “How compatible are the cloud and on-premises versions?” If you agree with me that understanding the cloud means understanding its APIs, then the best way to answer the question is to do a “diff” between the Azure and Azure Stack APIs.

To answer this question, here is an Excel spreadsheet containing a list of all the Azure ARM APIs, circa February, 2019, compared with all the ARM resource APIs in Azure Stack ASDK 1901. You can filter column D to see which APIs and API levels are common between Azure and Azure Stack. If you need to go beyond analysis and actually test some IaaC or PaaS code, you can set up a policy in Azure that limits you to Azure Stack feature availability.

Based on the spreadsheet comparison, I think it’s fair to say:

  • The “big” IaaS features, like compute, networking and storage, are there in Azure Stack and are largely compatible with Azure.
  • The most glaring, and in my opinion most disappointing, omission is the lack of Azure SQL (Microsoft.Sql/servers). Yes, you can add a Azure Stack resource provider to emulate PaaS Azure SQL. But I believe any on-prem cloud appliance should provide native, integrated PaaS database. I hope Microsoft is working on this.
  • If you are happy with API levels that are about 12 months behind Azure, Azure Stack is remarkably compatible with Azure.

Here’s a PowerShell script you can use to extract all the APIs to a .csv file. It’s based on this script. Note that you can run this with the Az module on PowerShell 6 as long as you Enable-AzureRmAlias. Doing so lets you target Azure Stack (which requires PowerShell 5.1) but also run the script on a Mac to obtain the Azure resource list.

Get-AzureRmResourceProvider | Select-Object ProviderNamespace -Expand ResourceTypes | Select-Object * -Expand ApiVersions | Select-Object ProviderNamespace, ResourceTypeName, @{Name="ApiVersion"; Expression={$_}} | ConvertTo-Csv | Out-File $HOME/downloads/api.csv




, ,




Leave a Reply

Your email address will not be published. Required fields are marked *