Don’t just migrate your legacy operating system to the cloud
he adoption of the public cloud is a prominent topic these days – the business case has been made, and you’ve been appointed to migrate resources to the cloud. Have you already thought of your migration strategy? Far too frequently, organizations do not take the time to plan how they will migrate from an on-premises environment, onto a cloud platform.
While everyone speaks of application transformation to PaaS, a critical mass is still “fighting” with legacy systems or applications which can’t be moved away quickly from an IaaS based solution. However, before migrating them 1:1, also known as Lift & Shift, to Azure, it would be a good momentum to rethink your operating system lifecycle. Could the move to cloud be an opportunity to upgrade to the latest OS Version? As you anyway have to touch the system, why not make more out of it? While this sounds like a smart idea, there are a few things to consider. Let’s have a look.
You may think, I’ll move the VM first to the cloud and plan the upgrade of the operating system for a later stage. While this could make sense from a project timeline perspective, you might want to give KB 4014997 a read:
Microsoft does not support an upgrade of the operating system of an Azure VM.
In other words, machines running in an Azure environment do not support an in-place upgrade. While this sounds bad as a first, it isn’t really. I was never a fan of in-place upgrade and always preferred a fresh install. This always is an excellent opportunity also to update application and keep the installation and configuration documented. However, there might are cases for in-place upgrades. For those, the upgrade-path is a vital roadmap to consider. Windows Server can be upgraded in-place at least one, and sometimes two versions forward.
The graphic below from the Windows Server Upgrade Center is a helpful illustration to understand the various upgrade paths:
Supported Operating Systems
Another important fact to look after, the support policies for operating system running in Azure. In general, Windows Server 2003 and later versions are supported for deployment in Microsoft Azure. However, Microsoft does not support operating systems that are past their End of Support date. In case you still want/need to run your Windows Server 2003 VM, a Custom Support Agreement (CSA) is required.
Images for Windows Server 2003 and 2008 (R1) are not available from the Azure Marketplace. Also the Azure VM agent and extensions do not function correctly on Windows Server 2003. Read the FAQ provided in KB 3206074 to understand all limitations.
In addition to the operating system support, also ensure your server role, feature or application deployed are supported on Azure. Microsoft addresses this for their OS in KB 2721672
For the Linux operating system, partners provide their Linux images for the Azure Marketplace. The Linux Integration Services (LIS) drivers for Hyper-V and Azure are kernel modules that Microsoft contributes directly to the upstream Linux kernel. The following distributions are available on Azure:
- Canonical (Ubuntu)
- Credativ (Debian)
- Red Hat (RHEL, CentOS)
- SUSE (SLES, openSUSE)
The Azure Linux Agent is already pre-installed on the Azure Marketplace images and is typically available from the distribution’s package repository. For distributions that are not available from the Marketplace, follow the guidelines at Create and upload a virtual hard disk that contains the Linux operating system to bring your own OS.
There’s just one more Thing
Before migrating, make sure you have a clear plan for your operating system lifecycle. And keep in mind, there are various of migration services available these days. For example, if you have to migrate an IIS server, have a look at the Azure App Service Migration Tool. This tool supports migrating from IIS running on Windows Server and webservices from Linux (for WordPress, Drupal, Joomla) servers to the cloud. Also the Azure Migrate is a very powerful service to keep in mind – we save this for anohter day, another post.