Nano Server use cases

Geplaatst op: 21-03-2016

Geinspireerd door het artikel van mijn collega Eddy heb ik besloten mij ook in Nano Server te verdiepen. Waarom heeft Microsoft deze kleine Windows Server variant ontwikkeld? Hoe maakt dit organisaties meer ‘agile’? En hoe werkt dat dan in de praktijk?

Waarom Nano

Het is al weer bijna een jaar geleden dat Microsoft Nano Server introduceerde. Er zijn twee use cases voor Nano:

  • Born-in-the-cloud applications – support for multiple programming languages and runtimes. (e.g. C#, Java, Node.js, Python, etc.) running in containers, virtual machines, or on physical servers.
  • Microsoft Cloud Platform infrastructure – support for compute clusters running Hyper-V and storage clusters running Scale-out File Server.

Nano Server is dus onder meer bedoeld voor het hosten van applicaties, al dan niet in containers. De focus op applicaties is volgens mij een logische. We zitten immers middenin de shift van client/server apps naar web based apps. En dat betekent dat onze huidige legacy applicatie infrastructuur in onze serverruimten langzaam maar zeker overbodig aan het worden is. Web apps zijn opgebouwd uit web services (api’s). Web services kun je verpakken in een container. Containers zijn behoorlijk agile. Dus Nano server in zijn rol als application of container host is een begrijpelijke move.

De tweede use case betreft het bieden van server cloud infrastructure services zoals Hyper-V, Hyper-V cluster en Scale-Out File Servers (SOFSs). Ik kan me zo voorstellen dat Nano Server het gemakkelijk maakt om je cloud loads on premises te draaien om ze vervolgens eenvoudig richting Azure te pushen.

Business value

Nano Server zal vooral worden ingezet ten behoeve van developers of organisaties met een behoorlijke dev populatie. Nano Server past naadloos in de Devops filosofie. Containers worden gecreeerd en moeten worden gemanaged richting productie en naar de Cloud kunnen worden gepushed. De business value zit in de agility.

Nano Server is dus niet bedoeld om de reguliere Windows Server te vervangen, maar het biedt ons wel een kijkje in de toekomst van servers zoals Microsoft die ziet. En dat woordje ‘toekomst’ kan ik meteen weer relativeren. Installeer immers een gemiddelde Linux distro, apt-get, yum of dnf het Docker package en je hebt een container host en het is klaar. Node.js, Nginx, het is al zo gestroomlijnd en uitgedacht. De toekomst is er al, dus ook zonder Nano Server en alle Powershell, wim en dism shenanigans om de vhdx te maken. Maar dat is mijn persoonlijke mening en wellicht zie ik iets belangrijks over het hoofd. Ik wil alle IT pro’s wel alvast adviseren om nu al in productie de Core editites van de Windows Servers te installeren, alleen al om gewend te raken aan het voorland: de GUI-less servers

.NET Core

In dit recente artikel wordt beschreven hoe je een ASP.NET site kunt hosten in Nano. Momenteel wordt alleen .NET Core ondersteund. De reden dat ik verwijs naar deze blog en het niet zelf heb getest is omdat de procedure nogal bewerkelijk is. Het is nog te vroeg, er is nog te weinig documentatie en ik denk dat we nog even geduld moeten hebben voor een goede walkthrough.

Experiment: NanoServer en Node.js

Wil je snel aan de slag met Nano, dan is er een manier om snel Nano Servers te installeren om er mee te experimenteren en wel met behulp van Vagrant in combinatie met Virtualbox. Met Vagrant kun je heel snel testomgevingen opspinnen en neerhalen. Vagrant en Virtualbox zijn beiden cross-platform. Alleen heb je voor het management van de Nano box wel een Windows host nodig vanwege Powershell.

Ik heb een Nano image geupload naar Hashicorp. Dit image heeft IIS, DSC en Container support ingebakken.

Installeer Vagrant en Virtualbox, open je favoriete terminal, maak een folder voor Nano en voer het volgende commando uit:

  1. vagrant init jacqinthebox/nano

De Nano box is ongeveer 400 MB en zal de eerste keer dat ‘vagrant up’ wordt uitgevoerd gedownload moeten worden. 
Vervolgens kun je als volgt inloggen op de box:

  1. Enable-PSRemoting -Force
  2. Set-Item "wsman:\localhost\client\trustedhosts" -Value "*" -Force
  3. $creds = Get-Credential vagrant
  4. Enter-PSSession -Computername localhost -Port 55985 -Credential $creds
  5.  

We zijn aan het testen, dus kan de firewall uit zodat we zeker weten dat deze ons niet in de weg zit:

  1. netsh advfirewall set allprofiles state off

Vervolgens gaan we Node.js installeren, dus op zoek naar beschikbare packages:

  1. Find-PackageProvider

Klik Y om Nuget te installeren. We gaan meteen door met installeren van Node.js.

  1. Install-Package node.js -Destination c:\node -ProviderName nuget -Source http://www.nuget.org/api/v2

Kopieer de aldus verkregen node.exe van \node\Node.js.5.3.0\node.js naar c:\windows\system32 want dan heb je de executable lekker in je pad.

Ik heb vervolgens een mapping gemaakt vanaf mijn machine naar de c dollar share van mijn Nano server en heb een Node applicatie gekopieerd naar c$\apps\chat-example.

  1. PS C:\apps\chat-example> node .\index.js
  2.  
  3. listening on *:3000
  • Ik heb nog een extra bridged network interface toegevoegd in Virtualbox. (Dit moet overigens ook met een Vagrantfile kunnen)
  • Het gaat om deze Node applicatie.

En het werkt inderdaad:

En op poort 80 zien we IIS overigens ook werkend:

Conclusie

Het nut van Nano op dit moment is dat het vooral leuk is om mee te experimenteren. Als het je ding is. We moeten vooral niet vergeten dat we het nog over een Preview hebben! Ik zie de toekomst van Nano best zonnig in. Ik stel me zo voor dat we in de toekomst IIS en DSC kunnen toevoegen met Import-Module of Install-Package in plaats van met Dism en dat er out of the box support beschikbaar komt voor git, curl en wget. Nu nog een goede editor erbij (Vi for Windows) en niets staat ons in de weg om volop te profiteren van deze kleine gigant.

Nieuwsbrief Aanmelden

Meld je aan voor onze nieuwsbrief en blijf op de hoogte van de laatste trends en events.