Can I install Azure on my own server, on-premises?

Yes, it is possible, for few years now. If you are eager to know more about this concept, its benefits and constraints, read on!

Azure On-Premises is called Azure Stack

Azure Stack basically brings Azure to your own server in your data center or home lab – your On-Premises environment. In July 2017 Microsoft announced Azure Stack Development Kit (ASDK) which I will be writing about. I have to say I was truly excited when I installed this first time and saw Azure Dashboard on my own machine with all the magic behind it in my own work/homelab. ASDK has the same foundations as the “real” Azure.

Azure Stack gets updated very often, regularly brings new features, and current version (in the moment of writing this) is 1.1910 – based on Windows Server 2019.

I find ASDK just very fun to explore and play with. I can dig in into hardware beneath it, I can explore underlying structure of Azure, get to the core of it, and at the same time practice with much much more resources than I’m able to afford in the online Azure.

Sounds interesting to you? Keep reading, I will try to shed some light on ASDK, and help you jump in a bit easier.

There are different flavors of Azure Stack, and I will mention two, just to compare – Azure Stack Hub and ASDK. Azure Stack Hub is fully fledged Azure on Premise, coordinated with hardware OEMs (Dell EMC, HPE, Cisco, Lenovo) and can be highly available, patched, supported by Microsoft Customer Service.

On the other hand, ASDK which I’m writing about and will be exploring with you through some tutorials, is single-node deployment, only for testing purposes – not for production.

ASDK is targeting administrators and developers, and is constantly evolving with more services added. ASDK is the same product as Azure, so you can learn Azure or code modern apps for cloud on your own machine. 

ASDK is at the moment of writing this (November, 2019) free to use. 

Limitations of ASDK deployment

Some things to consider – ASDK is single-node and does not provide high availability. It also uses only one network card and cannot be patched or updated. If you want new version, you will have to redeploy ASDK from scratch.

Also, besides MSDN Azure Stack forum and community support there is no official support from Microsoft (it is for non-production environment).

You will need some kind of authentication for your ASDK, so you can deploy it in connected (Azure AD) or disconnected state (AD FS). 

If you deploy it in connected state, you can register your ASDK install with free Azure account.

I would recommend Azure AD installation, since access to Azure Marketplace is easier and in general, this type of installation is more convenient for a lot of details in ASDK. Azure account is really free, you won’t be charged if you use your Azure account exclusively for ASDK purposes.

Hardware

Now, to the important part, while ASDK is free and fun it can still get expensive, why? Hardware requirements are, let’s say – a bit steep.

ASDK will check if your server/workstation meets minimum requirements during precheck phase, and also before installation.

There are also tutorials which can show you where in the scripts you can lower hardware requirements so your installation goes through.

I would not recommend messing with scripts and rigging the check process – why?

Because your ASDK installation will run poorly and will not make much sense. Stats below are for my machine just after installation. So, system is idling at 90GB of RAM.

If you have solid system with lets say 130+GB of RAM and few less CPU cores than specified, I would say go for it, try it, lower settings in scripts that are checking hardware specs, but really if you want to see full potential, you should at least have above mentioned specs.

Yeah, but these requirements are crazy high, I cannot afford it! Or can I?

Do not despair, you have selection of used server equipment via eBay, maybe your company or local companies are selling their old server equipment. You can get pretty powerful machine for pretty cheap.  

Example from German eBay – 

Used HP ML350 Gen 8 with 2CPU sockets filled with 2x Intel E5-2620 v2 (12cores in total), 24 RAM slots, 8SFF drive cage with RAID controller, redundant 460W PSU is 360€

CPU: If you want to beef up CPUs, you can get 2x Intel E5-2697 v2 (24cores in total) for 460€

RAM: 192GB DDR3 PC3L-10600R RAM would cost you 345€ (there were also better deals, but this is an ok example)

Storage: SSD SATA drives should be ok, and I chose new Intel D3-4510 480GB which are compatible with Microsoft S2D and should not make problems with ASDK install. 

5x new SSD Intel D3-4510 480GB drives is 880€. If you look for refurbed disks of course this price can get much lower, for half this price.

RAID controller: For details about ASDK storage config see here – https://docs.microsoft.com/en-gb/azure-stack/asdk/asdk-deploy-considerations?view=azs-1908 P420 should be able to work as HBA in pass-through mode according to Microsoft, I don’t have personal experience with it on ASDK.

So, used HP ML350 Gen8 with 2xIntel E5-2697 v2 (24cores), 192GB DDR3 RAM and 2.4TB of SATA SSD storage would cost you 2045€. 

If you take out extra CPUs (E5-2697 v2) and new SSD drives – 5 refurbs of 500GB capacity are around 500€, then this configuration is only 1200€ and is still a beast.

I would say that it is a great deal and you get a lot for your money – after all you will for sure get your money back if you use and learn from ASDK, and you can learn a lot from it.

Of course, If you have money to spend, new equipment is great, Supermicro gives you a lot of options, you can combine from micro servers, towers, 1u, 2u racks… 

But with new equipment (especially 16core Xeon CPUs) expect to spend minimum 5000€.

And a bit extra about storage

One thing in particular you would need to be careful with is storage – ASDK needs 5 disks – one for OS, and four for storage (you can get by with three disks for storage). 

I would go with full SSD setup (you can use SATA drives) since in my experience, HDDs are painfully slow, and very time consuming for any operation in ASDK.

ASDK is based on Storage Spaces Direct, and I had a few storage problems while deploying ASDK. 

Storage Spaces Direct has some storage compatibility requirements in order to be able to create pool. My SSDs went through all the validation tests for Storage Spaces Direct (S2D). I ran S2D tests independently of ASDK deployment, but while deploying ASDK my deployment would fail on creating pools every time.

I was reading and watching other people and their hardware specs and installs (although, mostly with older version of ASDK) and many of them went fine with standard customer grade SSDs. You can also try that option if you have spare SSD drives at hand – test it.

My last installations went through only after I selected compatible drive from Windows Server Catalog – https://www.windowsservercatalog.com  

Few more details on storage can be found in my installation guide.

Software

You will simply download ASDK from Microsoft and deploy it. I have tutorials ready and will be publishing them here soon. Important thing to remember about this concept is that it is constantly changing and ASDK does not have full functionality of Azure.

Microsoft packed whole bundle, all in trial mode, so you don’t need to worry much about extra downloads, licenses… Once you download ASDK package (which is with version 1910 at cca 20GB in size) you have all you need.

At the time of writing ASDK has following foundational services:

-Compute

-Storage

-Networking

-Key Vault

With these services you can offer IaaS services in your test environment.

There are also few PaaS (Platform-as-a-Service) services supported, namely:

-App Service

-Azure Functions

-SQL and MySQL Databases

Support for deployment?

There is great documentation in Microsoft Docs, I will link few below. Many of colleagues are also writing great posts on various ASDK topics on their blogs and there are discussions on IT forums, so you should be more or less be able to find all the info you need.

My experience

I neglected a bit my Microsoft certification for some time. I have hands on enterprise experience for 18 years now, many Microsoft certs, projects and conferences under my belt, so I thought to myself – I have time.

This year was the time for renewal of my Microsoft certs, and one of the things I found very useful in study process for last one and a half year – is ASDK. For practicing some Azure scenarios ASDK was really so much better and faster. I used Azure free account and companies Azure account for learning and testing, but ASDK was so much faster (since I cannot afford beefy “real” Azure services.).

I went through a lot of ASDK builds and I have to say I like a lot recent ones – 1.1908, 1.1910.

ASDK is also very stable in my experience. Downside is that it is pretty closed, almost as ASDK machine is in the “bubble”. 

Network was one of my main problems, since ASDK gives you “public” ip range of 192.168.102.xx and it really is not accessible from anywhere, even from your own LAN (at least in my case).

That made whole deployment just not flexible enough for me, it felt very crude, too closed to make sense for serious testing.

Microsoft has a VPN solution in place for Windows clients that want to connect to ASDK, but really it just doesn’t cut it for me, because I wanted to integrate ASDK more natural to my work/homelab.

There is a solution to make your ASDK fit more natural into your test network, at first it was editing AzS-BGPNAT VM that ASDK deploys, now, in recent builds, it is enough to just edit networking on the ASDK host server.

There are also quite a few things you need to tinker with to make ASDK suit your needs – but the time you spend to tinker with your ASDK is definitely worth it.

One more thing that I don’t get in this scenario is that you cannot upgrade your ASDK, you have to redeploy from scratch – which again is time consuming when you take into account installation time (6 hours in my case) and whole configuration from the beginning.

Upgrades would be nice.

But will all the restrictions, barriers, and high hardware expectations I just love the ASDK experience and enjoy it.

Time and money you spend on it are definitely worth it, you will learn more, have a chance to tinker with the backbone of Azure. If you are developing, you will definitely benefit from capabilities and efficiencies it brings. 

It is just great, so find and older server, buy a new one for testing if the money is no object of discussion and try it.

I will have basic topics covered here in series of articles about ASDK, since it is time that I share my experiences with the rest of you, so browse through my blog for more.

For more resources and info, check here

– https://docs.microsoft.com/en-us/azure-stack/asdk/asdk-what-is?view=azs-1908 and here https://docs.microsoft.com/en-gb/azure-stack/asdk/asdk-deploy-considerations?view=azs-1908