I am a Microsoft guy. I thought I would get that out of the way up front. With so much press regarding Microsoft’s courting of Linux (and all things open source), I started investigating running Linux on Azure several months ago and have been surprised by what I found. I thought I would share some of my observations.
Microsoft has been making several overtures to Linux and the open source community over the last few years. Everything from running SQL Server and Visual Studio on Linux to running a legitimate Bash shell in Windows 10. In fact, in November of 2016, Microsoft joined the Linux Foundation as a platinum member. With all of this it might be easy to overlook the first, and in many ways the most important, Microsoft platform to embrace and fully support Linux—Microsoft Azure. I want to share some of the main reasons I have become a big believer in running Linux on Azure.
Linux is a first-class player in Azure
When I started looking into running Linux on Azure, I was ready to have to learn a whole new approach to working in Azure. I have been working with (okay, mostly playing with) Azure since pretty much its public inception. I made the transition from the developer platform to infrastructure platform and even from version one of Azure to version two. I was ready to make the transition to Linux on Azure.
Turns out, I overthought it. Azure infrastructure is just that—its infrastructure. It works the same for Linux as it does for Windows, exactly the way you expect a switch or firewall to work regardless of the platform using it. Frankly, it was almost a bit anti-climactic.
Over the last several years Microsoft has made significant changes to their philosophy and products when it comes to open source in general and Linux in particular. Open source is no longer viewed in, shall we say, a negative light. Microsoft Azure is arguably where this is most evident and it is the first Microsoft platform where the integration of Linux is evident.
One interesting fact (that you will hear at any Microsoft presentation on Azure) is that somewhere over 40 percent of new virtual machines created in Azure are actually Linux based. I have been to some presentations where they state that it’s the majority of new workloads, but either way it is very significant. Imagine going back 10 years and telling Microsoft that significant percentage of new work on their most important ecosystem will be Linux. That would be fun, but I digress.
Microsoft has come to the party late, but they are all in at this point. Creating Linux-based resources in Azure is as easy as creating Windows-based resources. More importantly, Linux resources have equal access and functionality in Azure. Microsoft has already partnered with several prominent Linux-based vendors to provide services at the infrastructure, platform and software levels. Providers such as Red Hat and Docker have services that can be created within minutes in Azure. Open source services such as Redis Cache and Chef are now a core part of the Azure infrastructure.
It’s easy to create and manage Linux assets in Azure
The basic architecture within Azure makes Linux an equal player to Windows. Core cloud infrastructure breaks into three main categories: storage, network and compute. The storage and networking capabilities in Azure are OS agnostic, meaning they are going to work the same way whether running Windows or Linux.
The only thing that really changes is the operating system running on a virtual machine. Well that and of course the applications running within the operating system:
In Azure you can create all of the other resources before you create the virtual machine then simply tie the virtual machine into the right resources. You can also create all of the resources at once using the command line or the portal. The process is the same whether you are creating Windows resources or Linux resources.
As mentioned several times I am a Windows guy, but I have been using a Linux client to create and manage everything in Azure for several months. Now, admittedly I generally use a GUI shell, but I have been using the Bash shell for all of my work creating and maintaining virtual machines. Microsoft provides a set of cross platform tools, such as CLI or XPLAT CLI if you want to search for them, that allow you to fully manage Azure. For example, to create a virtual machine, you would use:
azure vm create –Q canonical:ubuntuserver:14.04.4-LTS:latest …
The structure of the cross platform tool syntax is really logical. I actually find the command structure of the CLI tools more natural than the PowerShell tools (which are the primary command line tools for the Windows environment).
There are many great reasons to run Linux on Azure. Look for part two of this article where I’ll talk about integration, scalability, security, and dev-ops. Two short, innovative courses that give you practical experience to get up and running with Linux on Azure are now available.