Azure Stack Hub is an extension of Azure, thereby enabling a truly consistent hybrid cloud platform. Consistency removes hybrid cloud complexity, which helps you maximize your investments across cloud and on-premises environments. Consistency enables you to build and deploy applications using the exact same approach – same APIs, same DevOps tools, same portal which leading to increased developer productivity in your organization.
In this article, I will share with you how to run Azure Stack Development Kit at home with few resources.
Table of Contents
In July 2017, Microsoft announced that in coordination with hardware OEMs (Dell EMC, Hewlett-Packard Enterprise, Cisco, and Lenovo) you can now order Azure Stack Integrated Systems hardware, with the first systems beginning to ship starting September 27th, 2017. These systems come ready to run and offer consistent, end-to-end customer support no matter who you call. They will initially be available in 46 countries covering key markets across the world.
This is an exciting time for everyone, now that we can finally see it all coming together where we’ll finally be able to run Azure services natively in an on-premises data center or absolutely anywhere else. Azure Stack is going to change the world.
Azure Stack Development Kit
The Azure Stack Development Kit (ASDK) is a free version of Microsoft Azure Stack (known previously as POC), which can be installed and run on hardware with fewer resources than what you would use for Azure Stack Hub Integrated Systems. The features and capabilities of Azure Stack Hub Integrated Systems and the Azure Stack Development Kit are identical without any real difference. The only difference between the two is the support for running Production workloads and using much larger, resourceful hardware. The aim of the Azure Stack Development Kit is for trial purposes, which is available for web download today. You can use it to build and validate your applications to run on Integrated Systems deployments.
As of writing this article, the current Microsoft Azure Stack Development Kit build is 20171020.1 which was released on 31/10/2017.
The Azure Stack Development Kit (ASDK) has lower resource requirements than Azure Stack Integrated Systems. This allows you to run it on small, lower resourceful hardware in a lower cost environment to be used for Development, Testing, and Learning purposes. Another benefit of running the Azure Stack Development Kit is that you can run it on your own custom hardware, without the requirement to purchase a special Azure Stack system from third-party OEMs. However, Azure Stack Development Kit does still require some pretty beefy hardware in comparison to your desktop, laptop, or smartphone you’re reading this article from.
Here are the official hardware requirements announced by Microsoft for Azure Stack Development Kit:
|OS Disk drives||1 OS disk with minimum of 200 GB available for system partition (SSD or HDD)||1 OS disk with minimum of 200 GB available for system partition (SSD or HDD)|
|Data Disk drives||4 disks. Each disk provides a minimum of 140 GB of capacity (SSD or HDD). All available disks will be used.||4 disks. Each disk provides a minimum of 250 GB of capacity (SSD or HDD). All available disks will be used.|
|Compute: CPU||Dual-Socket: 12 Physical Cores (total)||Dual-Socket: 16 Physical Cores (total)|
|Compute: Memory||96 GB RAM||128 GB RAM (This is the minimum to support PaaS resource providers.)|
|Compute: BIOS||Hyper-V Enabled (with SLAT support)||Hyper-V Enabled (with SLAT support)|
|Network: NIC||Windows Server 2012 R2 Certification required for NIC; no specialized features required||Windows Server 2012 R2 Certification required for NIC; no specialized features required|
|HW logo certification||Certified for Windows Server 2012 R2, 2016, or 2019||Certified for Windows Server 2012 R2, 2016, or 2019|
The above-listed specifications are the minimum and the recommended requirements. In all likelihood, you’ll need to have more resources than these to really be able to test and add many of the marketplace items from Azure with the development kit. If you’d like to view the full list of Azure Stack Development Kit hardware and deployment prerequisites, you can view the full specifications on the official documentation page from Microsoft.
Bill of Materials Azure Stack Dev Kit
As you could see from the list above that most of the desktops and laptops in the market today couldn’t meet the minimum requirement. I want to run Azure Stack at home with the following in mind:
- Less space
- Less cooling
- Minimal power consumption
- Minimum noise
- Full flash
- Small and lightweight
Some workstations have up to 64GB of RAM. For laptops, the number of disks is another issue. ASDK requires 4 disks + 1 disk for OS, however, 3 disks configuration with 1 disk for OS may work but are not tested by Microsoft. So, I had to look at a bigger workstation or server for this purpose without hacks in the code. Despite the fact that you could run ASDK in public Azure as well, but the cost of the nested Dv3 and Ev3 VMs is very high, and the Internet connection could be another issue for me. I get inspired by Larry Zhang’s article and I thought that this piece of hardware could solve my challenge.
SuperMicro SYS-E300-8D can meet the majority of Azure Stack Development Kit hardware requirements. It’s a very small and 1U mini server.
The SYS-E300-D supports up to 128GB RAM, but the CPU is the bottleneck as it supports a maximum 4-Core. I managed to replace the motherboard with a higher CPU version X10SDV-7TP8F, which includes a 16-Core / 32 Threats Intel(R) Xeon(R) D-1587. The next challenge is the number of disks, how to put 4 data disks into a very small chassis.
Luckily, I managed also to leverage the 1U 2 PCIe mini slots in the X10SDV-7TP8F and 1 M.2 slot embedded on the motherboard. Thus, we need two PCIe to M.2 SSD modules. I added two Amfeltec SQUID PCIe Carrier Board (1U PCI Express Gen 3 Carrier Board for M.2 SSD module). With 3 X M.2 NVMe SSD drives in the mini server, we could install Azure Stack. But Microsoft recommends 4 disks and not 3. Actually, the deployment script only validates where or not you have 3 or more data disks.
I used 3 Samsung SSD 950 PRO NVMe M.2 512GB. The 950 PRO also features Dynamic Thermal Throttling Protection technology, which controls the temperature of the device to reduce overheating and maintain a high level of sustained performance.
As for the OS Disk, I tried to leverage my exiting 1TB mSATA (Full Size) Samsung SSD 850 EVO for the system drive, but unfortunately, Azure Stack Dev Kit installation was failing at Step 60.61.101. I worked with Azure Stack Team on troubleshooting this issue for one month. Kudos to the Team. After checking with SuperMicro, I found out that the mSATA should be Mini (Half Size) versus the traditional mSATA (Full Size). So, I ordered 256GB mSATA Mini (Half Size) SATAIII SSD for the system drive, and I am good to go.
The motherboard X10SDV-7TP8F also supports SATA-DOM. Microsoft announced recently support for SATA-DOM boot drives for the operating system in Windows Server 2016. You could even order two SATA-DOM drives and configure them as RAID1. However, the maximum size for SATA-DOM drives as of this writing is 128 GB which does NOT meet the minimum requirements for Azure Stack 200 GB. In all cases, I ordered 1 SATA-DOM drive (SSD-DM128-SMCMVN1) for additional storage.
So, here is the final bill of materials that I bought:
|Part Number||Product||Price USD|
|CSE-E300||Supermicro CSE-E300 Flex-ATX/Mini-ITX Compact Desktop 1U Chassis||$3,762|
|MB-SMDX10SDV-7TP8F||Supermicro X10SDV-7TP8F Mini-ITX Motherboard; Intel Xeon D-1587|
16C/32T; 128GB ECC RDIMM; 2 10G SFP+ and 6 GbE;12V DC-IN/ATX
|MM-SM393A4K40BB1-CRC||4 X Samsung Memory M393A4K40BB1-CRC 32GB DDR4 2433 Registered Bare||-|
|FAN-0065L4||Supermicro 40x40x28mm 13000 RPM 4 Pin PWM (additional Fan)||-|
|MB-AOMTPM9665V-S||Supermicro AOM-TPM-9665V-S TPM 2.0 Module w/ Provisioning||-|
|RC-A086-31||2 X Amfeltec SQUID PCIe Carrier Board for 1 M.2 SSD module||$184|
|SSD-DM128-SMCMVN1||1 X Supermicro 128GB SATADOM||$145|
|PS-SPI120WACL6||SPI 120W 12V@10.0A AC Adapter, ROHS, Level 6 0.00T - 150C Power Cable, NEMA5-15P/IEC320-C13, 150cm/3C,RoHS,75||-|
|mSATA Mini (MO-300B Variation B)||1 X 256GB mSATA Mini (Half Size) SATAIII SSD||$179|
|MZ-V5P512BW||3 X Samsung 950 PRO Series - 512GB PCIe NVMe - M.2 Internal SSD||$1,797|
|Shipping & Handling||Shipping & Handling Charges (INSURED)||$87|
I know the price is quite expensive. I am by no means recommending that you should buy the same hardware that I have, you should buy the hardware that suits your requirements and is also within your budget. Please add to the comments if you have any relevant experience with different products that you prefer.
The little monster now perfectly matches the recommended hardware requirements for Azure Stack Development Kit:
|Component||Microsoft Recommendation||SuperMicro Custom Config|
|OS Disk drives||1 OS disk with minimum of 200 GB available for system partition (SSD or HDD)||1 OS Disk: miniSATA 256GB SSD|
|Data Disk drives||4 disks. Each disk provides a minimum of 250 GB of capacity (SSD or HDD). All available disks will be used.||3 X 512 GB NVMe SSD|
|Compute: CPU||Dual-Socket: 16 Physical Cores (total)||Single-Socket: 16 Physical Cores (total)|
|Compute: Memory||128 GB RAM (This is the minimum to support PaaS resource providers.)||128 GB RAM|
|Compute: BIOS||Hyper-V Enabled (with SLAT support)||Hyper-V Enabled (with SLAT support)|
|Network: NIC||Windows Server 2012 R2 Certification required for NIC; no specialized features||Windows Server 2012 R2 Certification required for NIC; no specialized features|
|HW logo certification||Certified for Windows Server 2012 R2||Certified for Windows Server 2012 R2|
Here is how it looks like eventually.
Running Azure Stack Dev Kit at Home
Now before we start the deployment, let’s run the Azure Stack prerequisites checker and validate the system.
You can disregard the failure message regarding CPU count and physical disks in the pre-checks.
As you can see, all NVMe drives can be pooled to create the shared storage. As we all know that Azure Stack is built on top of Storage Spaces Direct (S2D) cluster.
Then I kick off the deployment script.
After 4 hours and 20 minutes, the deployment of Azure Stack Development Kit build 20171020.1 has been completed successfully.
Here is the view after the deployment:
Failover Cluster Manager
We still have around 55 GB of RAM remaining to deploy Azure Stack services (IaaS and PaaS).
Azure Stack Administrator Portal
I would like to give a huge thanks to Eric Yui from MITXPC Embedded Systems Solutions for working with me on this project and helping me outreaching my objective.
Good luck building out your mini Private Azure Cloud at home!