How to install AzureStack on Windows 10 Client – Tips and Tricks

I had a long Saturday this weekend. If you are not living in a cave you probably heard about Microsoft’s new Hybrid cloud approach AzureStack.

I’m not going to discuss the architecture or the benefits that AzureStack brings because there are bunch of good resources available:

Last week Microsoft announced that AzureStack first technical preview (TP1) will be available on 29th of Jan.

Also couple of weeks ago, hardware requirements are announced to deploy TP1. TP1 just focuses for POC deployments and available to install all components on a single server if you meet below requirements:

I’m sure most of you were expecting to install AzureStack on your laptop or home desktop PC to test basic functionalities but if you look at the requirements, that’s a bit challenging for a giant like Azure Stack.

Here are the couple req:

  • Windows Server 2016 Datacenter (TP4)

That one easy and can be installed on your lab server/desktop easily.

  • One available port on a switch for the POC machine

Shouldn’t be a problem

  • Microsoft Active Directory accounts

To deploy Azure Stack POC, you must have a valid Microsoft Azure AD account that is the directory administrator for at least one Azure Active Directory.

You can use your existing Azure subscription or create one for free.

  • Memory – 96 GB RAM

To be honest I don’t have a home lab that meets that requirement so we need to find a way for that one. Because deployment script will create bunch of virtual machines probably require around 96GM of RAM.

  • Hyper-V Enabled

If you were planning to use a virtual machine to test AzureStack, that’s another challenge as well because POC machine should have Hyper-V role installed.

  • Data Disks

Minimum configuration requires 4 disks; each disk provides a minimum of 140 GB of capacity. Also these disks should be visible in disk management as online – RAW – not in use

So like me, if you were planning to use your home lab to test AzureStack, there are couple of challenges we need to deal with.

Actually I was planning to use my home Windows 10 desktop machine which has following configurations:

  • 32 GB RAM
  • I7-6700K CPU
  • SSD System Drive
  • 1TB HDD

I know it’s not a good idea to use this system to run a giant like AzureStack but that was all I had this weekend J

So first thing first, we need to deal with Hyper-V requirement. You can always install Windows Server 2016 Datacenter edition on a dedicated partition and boot but also you can use Windows 10 latest insider version to have nested Hyper-Vs.

Currently I’m running:

So I simply enabled Hyper-V on it and then followed below instructions/scripts to install a nested Windows Server 2016 TP4 Hyper-V server as a virtual machine.

Enable-NestedVM.ps1 script does all required checks for you and at the end of the steps you will have a fully working Nested 2016TP4 Hyper-V server.

So our Hyper-V server is ready – I hope.

Next thing we need to find a way to deal with hardware requirements.

For the data disk requirements, I simply created 4 VHD on my physical Windows 10 HDD with required sizes:

$i = 1..4
foreach ($a in $i)
New-VHD -Path G:\DATA_DISKS\VHD0$a.vhdx -Fixed -SizeBytes 140GB

Then simply added these disks to my nested Hyper-V server.

If you follow official AzureStack deployment guide, you will realize that we are booting nested Hyper-V server with WindowsServer2016Datacenter.vhdx disk using following command:

bcdboot <mounted drive letter>:\windows

and then we need to run

.\DeployAzureStack.ps1 –verbose

command to start the deployment. Before changing anything I just wanted to see what this command is actually doing so just run it once and realized all prerequisites are checked before deployment.

We don’t have a problem with data disks but I got error messages for the RAM as I only have 32 GB of RAM and set my nested Hyper-V to use around 24 GB out of it.

So I just opened DeployAzureStack.ps1 script to see what’s going on. First thing I realized that script is mounting $PoCVHD
using below command.

So you have two options:

You can fire the deploy script and wait for vhdx to be mounted and then find the requirement definitions and change it. I tried this method but faced another problem.

As you may see on the above script, VHD is mounted as read-only which makes impossible to change any content in VHD.

I actually found the precheck script to change the required RAM settings but once I tried to save it gave below error:

So you can simply edit the first script and remove (-access ReadOnly) parameter. That will mount the disk in a normal state and you can hijack any file you found.

But I believe second option is much easier. Before running DeployAzureStack script you can simply mount the disk (MicrosoftAzureStackPOC.vhdx) manually, edit the files you need and then eject it. Then you can simply start the deployment with an updated VHDX.

Here is the file I found when I mounted VHDX.

That script includes all functions which actually checks your infrastructure. I changed CheckRAM function to lower the memory requirements for my host machine:

And then I started the deployment and forgot an important thing…

Yes my host now meets requirements for the installation but once the installation starts, it will create 10 different virtual machines with different Vcpu and memory settings. And first 3 or 4 VMs already filled my memory. You can try the ugly way and change the VM settings after the deployment of each machine. But probably you need to spend couple of hours to check each and every VM and that could also break the installation.

So we also need to find VM memory and CPU definition files.

That file is POCFabricSettings.XML

You can simply edit processor count and RAM settings according to your current infrastructure:

I simple used “1” for Processor count and “2” for the RAM. These are quite low settings to run these machines but helps you to finish installation without any problem.

You need to save changes and then eject VHD before starting deployment.

And you are ready to go!

I had two issues during the deployment.

One is the JavaScript to connect Azure subscription during the installation;

Turning of IE enhanced mode on Nested 2016TP4 resolved the problem.

Second issue is whole installation took around 9 hours to complete. I know this is not a recommended way of installing AzureStack and probably I may face serious performance issues but will help you to test some basic functionalities before you find a real gear.

Hope that helps you.

Azure Stack POC – Donanim Gereksinimleri

Gectigimiz gunlerde Microsoft tarafindan Azure Stack Technical Previwe icin donanim gereksinimleri sunuldu.

Bildiginiz gibi Azure Stack, Microsoft’un hibrit bulut vizyonunda onemli bir yer tutuyor. Windows Azure Pack ile birlikte public Azure’un en azindan portal bilesenini kendi veri merkezlerimizde kullanmaya baslamistik. Ancak konu yazilim gelistirme sureclerine, uygulamalarin yerel ve public Azure uzerinde mimari degisliklige ugramadan calisabilmesi gibi noktalara geldiginde gercek bir hibrit bulut mimarisinden bahsedemiyorduk. Portal bize yalnizca Windows Azure on yuzunu kullanmamiza izin veriyordu.

Azure Stack ise bu noktada bir adim one gidiyor. Microsoft’un yillardir Azure ile edindigi tecrubeler tamamiyle ayni mimari, API ve kod ile birlikte yerel veri merkezi icin kullanima sunuluyor. Bu bircok senaryoyu da beraberinde getiriyor olacak.

Henuz elimizde test yapabilecegimiz bir surum olmadigi icin bilgiler kisitli. Ancak kisa zaman once Microsoft, TP surumu icin donanim gereksinimlerini bizlerle paylasti. Detaylar asagida:




Compute: CPU Dual-Socket: 12 Physical Cores Dual-Socket: 16 Physical Cores
Compute: Memory 96 GB RAM 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 required Windows Server 2012 R2 Certification required for NIC; no specialized features required
Disk drives: Operating System 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)
Disk drives: General Azure Stack POC Data 4 disks. Each disk provides a minimum of 140 GB of capacity (SSD or HDD). 4 disks. Each disk provides a minimum of 250 GB of capacity.
HW logo certification Certified for Windows Server 2012 R2

Storage considerations

Data disk drive configuration: All data drives must be of the same type (SAS or SATA) and capacity.  If SAS disk drives are used, the disk drives must be attached via a single path (no MPIO, multi-path support is provided)
HBA configuration options:
     1. (Preferred) Simple HBA
2. RAID HBA – Adapter must be configured in “pass through” mode
3. RAID HBA – Disks should be configured as Single-Disk, RAID-0
Supported bus and media type combinations

  •          SATA HDD
  •          SAS HDD
  •          RAID HDD
  •          RAID SSD (If the media type is unspecified/unknown*)
  •          SATA SSD + SATA HDD**
  •          SAS SSD + SAS HDD**

* RAID controllers without pass-through capability can’t recognize the media type. Such controllers will mark both HDD and SSD as Unspecified. In that case, the SSD will be used as persistent storage instead of caching devices. Therefore, you can deploy the Microsoft Azure Stack POC on those SSDs.

** For tiered storage, you must have at least 3 HDDs.

Example HBAs: LSI 9207-8i, LSI-9300-8i, or LSI-9265-8i in pass-through mode