Azure Arc ESU

ESU (Extended Support Updates) allows organisations to maintain access to Windows Updates (and ongoing technical support) for platforms that Microsoft has designated End of Life. It is now managed via Azure, and a mandatory pre-requisite for non-azure hosted resources is connectivity via Azure ARC.

Billing for the ESU licensing for each server occurs monthly via the existing Azure commercial agreement and is charged per CPU core. Removing an ESU license from Azure terminates the billing at the next cycle, which is monthly.

To create a new ESU license
Navigate to Azure Arc blade (search for “Azure Arc”) then select “Extended Security Updates”.

On the “Licenses” tab, select “Create”

Complete the form as follows

SubscriptionAzure Subscription Name
Resource GroupResource Group Name for the server
License NameType the hostname of the server
Region(Europe) UK South
Activate LicenseActivate Now
SKUStandard Edition
Core TypeVirtual Cores
Core PacksAll cores on the VM must be licensed. Minimum is 8. Select the appropriate quantities. EG for a 20 core server select 16 cores: 1 and 2 cores: 2 (16+(2*2)=20).
The command wmic cpu get numberofcores will show how many cores a server has.

Click the Create button.

Select “Eligible Resources”

Then select the checkbox on the row containing the server to which the license that was just created will be assigned. Then Select Enable ESUs.
Select Core Type: Virtual Cores and ESUs license: <The license created in the previous steps

Select Enable.

The procedure is complete.

To view the current ESU licenses being used, Azure Resource Graph Explorer should be used

The following query can be copied/pasted to the query pane and used to return the total number of CPU cores, total number of servers, and total ESU licenses in place:

resources

|where type =~ ‘microsoft.hybridcompute/machines’

|extend CoreCount = toint (properties.detectedProperties.logicalCoreCount)

|extend ESUCount = properties.licenseProfile.esuProfile.esuKeyState

|project name, CoreCount, ESUCount

|summarize totalcores = sum (CoreCount), totalservers = count(), ESUcount = count()