For the last couple of months, everyone is talking about the new smaller, headless Windows Server 2016 deployment option: Nano Server. Microsoft is calling Nano Server the future of Windows Server.
In a nutshell, Nano Server is a new installation option for Windows Server 2016 that is designed and fully optimized for cloud-born applications, containers, or specific services you want to run on a small footprint. You can use it as a host for Hyper-V VMs, a DNS server, an IIS server, or containers.
Unfortunately, you cannot simply mount Windows Server 2016 and run setup to choose Nano Server as the desired edition. To deploy Nano Server, you need to prepare custom images using newly introduced PowerShell cmdlets and modules.
Here is a basic cmdlet that creates a VHD for Standard edition, including Hyper-V guest drivers, and sets a computer name:
New-NanoServerImage -Edition Standard -DeploymentType Guest -MediaPath <path to root of media> -BasePath .\Base -TargetPath .\NanoServerVM\NanoServerVM.vhd -ComputerName <computer name>
There are also a bunch of different options to customize your Nano Server deployment experience. For instance, you can add additional roles or features by providing appropriate parameters for each option.
In addition, especially for physical server deployments, you need to provide drivers that can be loaded during boot.
Nano Server Image Builder
Nano Server Image Builder is a new tool recently announced by Microsoft that simplifies this process. It enables you to create custom Nano Server images and bootable USB media without dealing with complex PowerShell scripts. You can modify your image as much as you like, add additional roles or features, configure drivers, join a domain, and perform remote management. The tool provides a PowerShell script at the end of the configuration so that you can re-use the same script for further deployments.
Another benefit of the tool is the ability to create bootable USB media for Nano Server installations on physical servers. This USB drive leverages WinPE during the deployment. It also detects important hardware information such as devices without a driver, available disks/volumes, and firmware details. This information can be displayed on-screen or saved as a log file on a USB drive if you don’t have a monitor.
So, we now have a single tool that can be used to create custom Nano Server images for both physical and virtual machines.
Here is a short list of some important tasks that Image Builder handles:
- Accept license agreement terms.
- Select VHD, VHDX, or WIM formats, or create a bootable ISO.
- Select server roles to install.
- Add device drivers to install.
- Set machine name, administrator password, logfile path, and time zone.
- Join a domain by using an existing Active Directory account or a harvested domain-join blob.
- Enable WinRM for communications outside the local subnet.
- Enable Virtual LAN IDs and configure static IP addresses.
- Inject new servicing packages on the fly.
- Specify setupcomplete.cmd or other custom scripts to run after the unattend.xml is processed.
- Enable Emergency Management Services (EMS) for serial port console access.
- Enable development services testing of signed drivers and unsigned applications, as well as the PowerShell default shell.
- Enable debugging over serial, USB, TCP/IP, or IEEE 1394 protocols.
- Create USB media that will use WinPE to partition the server and deploy the Nano Server image.
Image Builder requirements
Installation is pretty straightforward. All you need to install as prerequisites are two features from the Windows Assessment and Deployment Kit:
Windows Server 2016 media also contain a Nano Server folder and a Nano.wim image. Nano Server Image Builder needs to access these folders and OS system files to build a custom Nano Server image.
Creating image or bootable USB
Once all the requirements have been met and the Nano Server Image tool has been installed on your local computer, then you are ready to create your first custom image.
There are many steps in the configuration wizard, but here are some important ones of which you should be aware:
Create a new image or bootable USB
This is the actual page on which you choose whether you want to create a new Nano Server image from scratch or use the bootable USB media option to create a USB drive from an existing Nano image.
Select installation media
In this phase, you need to provide a Windows Server 2016 ISO file for accessing the Nano Server WIM image in the NanoServer folder.
Select deployment type
Here are the options you can select for your deployment target: Virtual Machine or Physical Image. If you select a Virtual Machine Image, the output file can be VHD or VHDX format, which you can simply attach to your existing VMs.
The Physical Machine Image can create VHD, VHDX, or WIM files.
Select optional packages
On this page, you can select additional packages to be added to your custom image. All roles and features you have selected will be enabled after image deployment.
I want the optional Containers package to be installed for my deployment.
You can add device drivers that will be loaded during boot. This is an important step, especially for physical deployments. As stated in the figure, VM Integration Components will be automatically selected.
The following pages enable additional configurations for computer name, password, domain, IP address, and VLAN.
Once you finish the wizard, the image creation process begins.
As discussed before, the tool just makes it easier to create Nano server images without dealing with complex PowerShell scripts. Here the tool provides me a PowerShell script that includes all of the configuration I set using the wizard:
New-NanoServerImage -MediaPath 'J:\' -Edition 'Datacenter' -DeploymentType Guest -TargetPath 'F:\NanoCustomImage.vhdx' -MaxSize 8589934592 -EnableRemoteManagementPort -SetupUI ('NanoServer.Containers') -ComputerName 'NanoServer' -SetupCompleteCommand ('tzutil.exe /s "GMT Standard Time"') -LogPath 'C:\Users\anil\AppData\Local\Temp\NanoServerImageBuilder\Logs\2016-10-19 12-15'
Now you can use the created VHDX image for your VMs, or you can use the Create bootable USB media option in the tool.
Here is my custom Nano Image ready, along with the Containers feature.