It’s almost a year ago, that I wrote an installation guide / step-by-step guide about Citrix XenDesktop. XenDesktop releases arrived at a rapid pace in the past year. At this moment, the current release is version 7.12 which was released in December 2016. So, it’s time for an up-to-data step-by-step blog about the latest XenDesktop release. This time I want to do something different, till now I always used Citrix Provisioning Services (PVS) for the XenDesktop Hosts. Since version 7.11 it’s also possible to use the Microsoft Azure Resource Manager for the XenDesktop Hosts, lets take a closer look on how to configure that.
In this blog, I will show you how to install and configure the Citrix XenDesktop 7.12 controller and how to create a Windows Server 2016 master image that can be hosted in Microsoft Azure.
First let me tell you something about my environment, it is important to do some preparations before starting with the XenDesktop 7.12 installation. For example, you must have a configured Citrix License Server with the proper licenses available and a Microsoft SQL server up and running (or install SQL Express during XenDesktop installation). If using Microsoft Azure, make sure you have your Azure tenant up and running, configured with a network and a storage account.
This is the complete overview of my environment with components that will be used during this XenDesktop 7.12 implementation;
- Microsoft Azure Tenant with network and storage account configured
- DC01 : Windows Server 2016 with Domain Controller role and Citrix License Server (running in Azure)
- SQL01 : Windows Server 2016 with Microsoft SQL Server 2016 up and running (running in Azure)
- XDC01 : Windows Server 2016, the Citrix XenDesktop 7.12 Delivery Controller software will be installed on this server (running in Azure)
- SF01 : Windows Server 2016 with Citrix StoreFront 3.8 up and running (running in Azure)
- On-premise Windows Server 2016 running the Hyper-V role.
Make sure you check the system requirements for each XenDesktop component before you start with the implementation. You can find the Citrix XenDesktop 7.12 requirements here
Preparing the Windows Server 2016 Master Image
There are two ways to prepare your Windows Server 2016 XenDesktop Host master image. The first one is the easiest one, just go the Azure Marketplace and select the [HUB] (Hybrid Use Benefit) version of the Windows Server 2016 Datacenter image/template. Deploy a new Virtual Machine with this template, install the XenDesktop VDA agent and all the applications you want to publish with XenDesktop.
After installing all the applications and the XenDesktop VDA Agent, shut down the VM. Within the Azure Portal Stop (deallocate) the server. For these steps you need an Azure portal with an EA (Enterprise Subscription) otherwise you are not able to deploy a [HUB] template image.
Unfortunately, I don’t have an Azure tenant with an Enterprise Agreement, what brings us to option two. With option two we must create our own Windows Server 2016 Datacenter image with a Windows Server 2016 Datacenter license that include software assurance. In my case I will install this server in my on-premise Microsoft Hyper-V environment.
Because I cannot create a new Virtual Machine with a new hard disk image that has the .vhd extension (by default it has the .avhdx file extension), I first create a new virtual hard disk manually (.vhd is needed for Microsoft Azure in combination with Citrix XenDesktop).
In the Windows Server 2016 Hyper-V Manager, right click the server name, go to New > Hard Disk.. in the Before You Begin dialog, click Next
Select VHD and click Next
Select Dynamically expanding and click Next
Fill in the Virtual Hard Disk name and the location and click Next
Fill in the desired Virtual Hard Disk size (default is 127 GB) and click Next
The next step is to create a new Virtual Machine (VM) and attache the just created Virtual Hard Disk.
In the Windows Server 2016 Hyper-V Manager, right click the server name, go to New > Virtual Machine.. in the Before You Begin dialog, click Next
Give the new Virtual Machine a name, in my case XD-Master. Select a location and click Next
Select Generation 1, otherwise you cannot attache the just created Virtual Hard Disk with the .vhd file extension
Assign the desired Memory and click Next
Select the correct network and click Next
Select Use an existing virtual hard disk, select the just created Virtual Hard Disk and click Next
Start the Virtual Machine and install Microsoft Windows Server 2016 and the application baseline you want to publish with Citrix XenDesktop 7.12
After the Microsoft Windows Server 2016 installation and the application baseline, start Windows PowerShell as Administrator. You need to install the Azure PowerShell modules. To install this run the following command;
When asked to install Untrusted repository enter Y
After the installation, run the following command;
We also need to install the Windows Azure VM Agent, you can download this agent here
Start the installation and click Next
Select I accept the terms in the License Agreement (if you do 🙂 ) and click Next
Install the Citrix XenDesktop 7.12 Virtual Delivery Agent for Windows Server OS
The next step is to install the Citrix XenDesktop 7.12 Virtual Delivery Agent for Windows Server OS. Mount the XenDesktop 7.12 ISO file and start the installation.
Next to XenDesktop, click Start
Click Virtual Delivery Agent for Windows Server OS
Select Create a Master Image, and click Next
Optionally you can install the Citrix Receiver. Click Next
Fill in the FQDN of your Citrix XenDesktop Controller (we are going to install this server later, but that is not a problem, just fill in the FQDN of your future XenDesktop Controller) and click Test connection
The test is always successful, even if the server does not exist. Click Add
Select the features you want to use and click Next
Select Automatically and click Next
For this PoC installation I select I do not want to participate in Call Home, click Next
Select Restart machine and click Finish
After the restart, shut down the server.
Upload the custom Windows Server 2016 image to Azure
Now it’s time to upload the custom Windows Server 2016 image file to your Microsoft Azure Storage Account. Make sure you have installed Azure PowerShell on your computer/server from where you can upload the Virtual Hard Disk file (.vhd file). You can install Azure PowerShell with the “Install-Module AzureRM” and “Install-Module Azure” commands.
Login to your Azure tenant and go to Storage accounts. Open the Storage Account you want to upload the Virual Hard Disk to, and select Containers. At the right you see the Storage Account URL. This URL is needed in the next step.
As an Administrator, open PowerShell and run the following commands;
Login-AzureRmAccount (and login with your Global Azure Administrator Account)
After that, run: Add-AzureRmVhd -ResourceGroupName “(Resource Groupname)” -LocalFilePath “(full path to Virtual Hard Disk)” -Destination “(Storage Accont URL + container name + Image name)”
In my case the command is: Add-AzureRmVhd -ResourceGroupName “RobinHoboLAN” -LocalFilePath “D:\HyperV\HardDisks\XD-Master.vhd” -Destination “https://robinhobostorage.blob.core.windows.net/vhds/XD-Master.vhd”
After that the Virtual Hard Disk file will be uploaded to Microsoft Azure.
Installing and Configuring the Citrix XenDesktop 7.12 Delivery Controller
Now it’s time to install and configure the Citrix XenDesktop 7.12 Delivery Controller itself. Login to the server and mount the Citrix XenDesktop 7.12 ISO File.
Next to XenDesktop, click Start
On the left side of the screen click on Delivery Controller
Select I have read, understand, and accept the terms of the license agreement and click Next
I have already setup a Citrix License Server and a StoreFront server in my environment. Therefore I only select the Delivery Controller, Studio and the Director. Click Next
A Microsoft SQL Server is already up and running in my environment, so I only select Install Windows Remote Assistance. Click Next.
Select Automatically and click Next
This is for a test lab only, so I select I do not want to participate in Call Home. Click Next
Select Launch Studio and click Finish
Click Deliver applications and desktops to your users
Select A fully configured, production-ready Site (recommended for new users). Fill in a Site name and click Next
Select Create and set up databases from Studio, fill in the desired database names fill in the SQL Server. Click Next
Make a connection to your Citrix License server and select your XenDesktop License. click Next
This is the part were we going to make a connection to Microsoft Azure. You can make a connection to the Classic Azure portal, or the Azure Resource Manager. I have all my Azure resources created within the Azure Resource Manager, so I select Microsoft Azure. As Azure environment I select Azure Global. The virtual machines will be created using the Studio tools (Machine Creation Services). Click Next
Fill in your Azure Subscription ID and give the connection a name. Click Create new..
Login with your Azure Global Administrator account
Select your Azure Region and click Next
Fill in the resource name for your Network connection and select the correct Subnet. Click Next
Select the Additional Features you are going to use in your environment and click Next
Now it’s time for the second step, click on Set up machines for desktops and applications or remote PC access
Select Server OS and click Next
Select This Machine Catalog will use: Machines that are power managed (for example, virtual machines or blade PCs). We are going to deploy machines using Citrix Machine Creation Services. Click Next
Select the uploaded master virtual hard disk from the previous step and click Next
Select the desired storage type and select Yes to use an existing on-premises Windows Server license. Click Next
Enter the number of virtual machines you want to create. For this blog I will create three VM’s. Select the machine size you want to use for your host servers and click Next
This is a tricky one. By default both settings are enabled. In my case, when both option where selected, the deployment of the host servers failed. I found this Citrix article ( CTX220026 ) that described my problem and tells me to disable these two settings. Click Next
Select your network cards and click Next
Select the Microsoft Active Directory OU you want to create the Computer Accounts in. Fill in a Account naming scheme, in my case I will use XDHOSTS##. Click Next
Fill in a machine Catalog Name and a Machine Catalog description for administrators. In my case I will use Windows Server 2016 Desktop. Click Finish.
The deployment of the host servers will now begin. It will take a long time, in my case over 30 minutes!
Step 3, the final one. Click on Set up Delivery Groups to assign desktops and applications to your users
Add all of the available servers (in my case three) and click Next
I will restrict access for this Delivery Group for the SharedDesktop Active Directory security group, configure your desired configuration and click Next
I will not publish any applications at this moment, I you want to publish applications from the host servers click Add otherwise click Next
I will publish the Desktop only, click Add
Fill in a Display name and a Description, I select Allow everyone with access to this Delivery Group to use a desktop, and off course, make sure that Enable desktop is enabled. Click OK
Fill in a Delivery Group name and optionally a Delivery Group description. In my case, this will be Windows Server 2016 Shared Desktop.
Final step : See if it works
The final step is to see if it all works. First lets take a look at the Machine Catalog within Citrix Studio.
As you can see, all three servers are created, they are up and running and have a Registered state
In the Microsoft Azure Resource Manager you can see that the three servers are created in there own Resource Group
Let’s open a user session to one of the new host servers running in Azure. Login to your StoreFront site.
As you can see the Windows Server 2016 Shared Desktop is visible
And after starting the user session, you can see that I have a session to the XDHOSTS03 server.