Windows Azure Pack (WAP) - Update Rollup Challenge

Introduction

While upgrading all of my lab's System Center installations to Update Rollup 6 (UR6), I ran into a confusing scenario with the Windows Azure Pack.

Normally, in a lab environment, I would have installed the Windows Azure Pack as an "express" install, and have all of the components contained on a single Virtual Machine. However, this time around, I used the PowerShell Deployment Toolkit (PDT) to rebuild my entire lab.

I have used the PowerShell Deployment Toolkit (PDT) in the past to build my entire lab environment, and although this time around I did encounter some issues, eventually my entire lab was built and up and running. Unfortunately, the PowerShell Deployment Toolkit (PDT) does not include the ability (to my knowledge) to "slipstream" any Update Rollups into the installation process (though that would be a nice addition for the vNext version).

Because I used the PowerShell Deployment Toolkit (PDT) to build my lab environment, it does not deploy an "express" installation of the Windows Azure Pack (WAP), but rather, a distributed installation. So as you can see from the screenshot below, it actually created 10 different Virtual Machines!

Bonus: There is actually 11 Virtual Machines. A dedicated VM is created for SQL server cloud usage, and is labelled as "SQLCLOUD".

NOTE: The count of Virtual Machines does not include the SQL Server database server used to store all site configurations. The PowerShell Deployment Toolkit (PDT) co-hosts the WAP database on a shared SQL Server with some other System Center databases.

http://micloud.azurewebsites.net/wp-content/uploads/2015/05/PDT-Generated-WAP-VMs.png
Windows Azure Pack (WAP) - Virtual Machines Created by the PowerShell Deployment Toolkit (PDT)

If you are unfamiliar with the Windows Azure Pack, you may wonder what each of these Virtual Machines are for, especially since the Windows Azure Pack serves as a portal interface (therefore you might think that all it needs is a single Internet Information Services (IIS) web server).

Here is the list of roles/components that make up the WAP installation, as per the PowerShell Deployment Toolkit (PDT)'s Variable.xml file.

  • Windows Azure Pack 2013 Admin API Server
  • Windows Azure Pack 2013 Admin Authentication Site Server
  • Windows Azure Pack 2013 Admin Site Server
  • Windows Azure Pack 2013 SQL Server Extension Server
  • Windows Azure Pack 2013 MySQL Extension Server
  • Windows Azure Pack 2013 Tenant API Server
  • Windows Azure Pack 2013 Tenant Public API Server
  • Windows Azure Pack 2013 Tenant Authentication Site Server
  • Windows Azure Pack 2013 Tenant Site Server
  • Windows Azure Pack 2013 Web Sites Database Server
  • Windows Azure Pack 2013 Web Sites Controller Server
  • Windows Azure Pack 2013 Web Sites Management Server
  • Windows Azure Pack 2013 Web Sites FrontEnd Server
  • Windows Azure Pack 2013 Web Sites Publisher Server
  • Windows Azure Pack 2013 Web Sites Reserved Medium Worker Server
  • Windows Azure Pack 2013 Web Sites Shared Worker Server
  • Windows Azure Pack 2013 Web Sites File Server

That's a lot of stuff! So, I'm glad that the PowerShell Deployment Toolkit (PDT) handles the installation of all these components.

Update Rollup Challenge

To start, you first need to download the Update Rollup 6 for the Windows Azure Pack. If you want to install the update manually (instead of via Windows Update), which is what I was doing, then you need to download the Manual Update Package from the Microsoft Update Catalog.

NOTE: In case you are not aware, the Microsoft Update Catalog will only work in Internet Explorer.

When you access the Microsoft Update Catalog, you will see a list of 15 separate/individual updates!

http://micloud.azurewebsites.net/wp-content/uploads/2015/05/WAP-UR6-Update-Catalog.png
Windows Azure Pack (WAP) - Microsoft Update Catalog Updates List

So here comes the challenge. Some other System Center products have a very easy update process. For example, System Center Configuration Manager has a wizard-based update process, which makes it easy to follow.

System Center Operations Manager usually has individual MSI or MSU installers for updates, specific to role/component (i.e. Management Server, Web Server, Console, etc.). Additionally Operations Manager will usually have a SQL script that needs to be run against the OperationsManager database, and the OperationsManagerDW database. Even that isn't too difficult to follow.

When it comes to the Windows Azure Pack though, how do you determine where each of the 15 individual updates need to be applied? This is especially challenging when using the PowerShell Deployment Toolkit (PDT) to install this component.

Some of the update are obvious. For example the "Admin API (KB3051166)", "Admin Authentication Site (KB3051166)", and "Admin Site (KB3051166)" should all obviously be installed on the server(s) running the admin components. As you can see from the Virtual Machine screenshot, there is only 1 VM that has "Admin" in its name. But how can we confirm/know for sure?

Identifying Windows Azure Pack (WAP) Role Locations

Here's a trick. Since we used the PowerShell Deployment Toolkit (PDT) for the installation, it can help us narrow down most of the role locations.

NOTE: If you are not familiar with the PowerShell Deployment Toolkit (PDT), please see my article series on My Experience With The PDT.

In the PDT, there is a Variable.xml file that is used to determine what roles to install, and where. If you take a look at the "<Roles>" section of the file, you should see several lines that start with "<Role Name="Windows Azure Pack 2013 ..."

http://micloud.azurewebsites.net/wp-content/uploads/2015/05/VariableXML-WAP-Roles.png
Windows Azure Pack (WAP) - PowerShell Deployment Toolkit (PDT) Variable.xml WAP Roles

This lists all of the roles, and what server it is installed on. So from this we can see that the 3 "admin" roles (namely "Admin API Server", "Admin Authentication Site Server", and "Admin Site Server") are all installed on the same server: WAPADMIN.CONTOSO.com.

Great. So that helps with most of the individual updates that we downloaded, but not all of them.

What you won't see from the XML file, is a clear indication as to where the following components are installed:

  • Windows Azure Pack Configuration Site (KB3051166)
  • Windows Azure Pack Microsoft Best Practice Analyzer (KB3051166)
  • Windows Azure Pack Monitoring Extension (KB3051166)
  • Windows Azure Pack PowerShell API (KB3051166)
  • Windows Azure Pack Usage Extension (KB3051166)
  • Windows Azure Pack Web App Gallery Extension (KB3051166)

So how do we determine where these components are located, so that we can install the Update Rollup? For that, we need to go exploring.

Starting on the server that is running all of the "admin" elements, open Windows Explorer and navigate to the C:\inetpub directory. Remember, the Windows Azure Pack (WAP) is a web portal, so this is the default location for website content to be installed to.

http://micloud.azurewebsites.net/wp-content/uploads/2015/05/WAP-Admin-Server-iNetPub-Dir.png
Windows Azure Pack (WAP) - Admin Server - INETPUB Directory

As you can see from the screenshot, you will notice several website directories. We can clearly see the "MgmtSvc-AdminAPI" and "MgmtSvc-AdminSite" directories, which correspond to those individual Update Rollup installers.

But, we now also see some other sites that were not identified via the PowerShell Deployment Toolkit (PDT) Variable.xml file.

So now, we have identified the location of the "Configuration Site", "Monitoring Extension", "Usage Extension", and "Web App Gallery Extension" components. Thus, this is the server that we need to install these Update Rollup updates on.

Repeat this same process on the other Virtual Machines that were created, to determine if any other servers require these updates.

HINT: The following servers also need the "Windows Azure Pack Configuration Site (KB3051166)" update installed for Update Rollup 6.

  • WAPADMIN
  • WAPTENANT
  • WAPWEBCN01

So, where are we at now? The only other Update Rollup updates that we have not been able to identify their applicable servers are:

  • Windows Azure Pack Microsoft Best Practice Analyzer (KB3051166)
  • Windows Azure Pack PowerShell API (KB3051166)

Windows Azure Pack PowerShell API

Taking a look at the contents that were downloaded via the PowerShell Deployment Toolkit (PDT) Downloader.ps1 script, in the C:\Installer\WindowsAzurePack2013 directory, we see that the PDT does include the Windows Azure Pack PowerShell API installer (MgmtSvc-PowerShellAPI.msi) as part of the deployment.

http://micloud.azurewebsites.net/wp-content/uploads/2015/05/PDT-Downloaded-WAP-Content.png
Windows Azure Pack (WAP) - PowerShell Deployment Toolkit (PDT) - Downloader.ps1 Windows Azure Pack Installation

PowerShell Deployment Toolkit (PDT) - Workflow.xml

To determine which server(s) have this component installed (and thus require the Update Rollup installation), we now need to look at the PowerShell Deployment Toolkit (PDT) Workflow.xml file.

This file has all of the logic around installation, and it utilizes the Variable.xml file to determine what is going to be installed.

In the Workflow.xml file, do a search for "Windows Azure Pack 2013 - PowerShell API". You should find multiple entries within the "<Prerequisites>" sections.

http://micloud.azurewebsites.net/wp-content/uploads/2015/05/PDT-Workflow-XML-WAP-PoSh-API.png
Windows Azure Pack (WAP) - PowerShell Deployment Toolkit (PDT) - Workflow.xml - PowerShell API

Once you find one of the entries for the PowerShell API, scroll up and find the <Role> tag for that section of prerequisites. This will show you what server Role will have the PowerShell API installed.

http://micloud.azurewebsites.net/wp-content/uploads/2015/05/PDT-Workflow-XML-WAP-PoSh-API-Role-Association.png
Windows Azure Pack (WAP) - PowerShell Deployment Toolkit (PDT) - Workflow.xml - PowerShell API - Role Association

From my count, there are 10 roles that contain the <Prerequisite> reference to the "Windows Azure Pack 2013 - PowerShell API". They are as follows:

  • Windows Azure Pack 2013 Admin API Server
  • Windows Azure Pack 2013 Tenant API Server
  • Windows Azure Pack 2013 Tenant Public API Server
  • Windows Azure Pack 2013 SQL Server Extension Server
  • Windows Azure Pack 2013 MySQL Extension Server
  • Windows Azure Pack 2013 Admin Site Server
  • Windows Azure Pack 2013 Tenant Site Server
  • Windows Azure Pack 2013 Admin Authentication Site Server
  • Windows Azure Pack 2013 Tenant Authentication Site Server
  • Windows Azure Pack 2013 Web Sites Controller Server

So, looking back at the Variable.xml file, these roles are installed on the following servers:

  • WAPADMIN.CONTOSO.com
  • WAPTENANT.CONTOSO.com
  • WAPWEBCN01.Contoso.com

So now we have identified which servers need to have the "Update Rollup 6 for Windows Azure Pack PowerShell API (KB3051166)" installed.

Programs and Feature

Alternatively, you can also check Programs and Features list, as this will also show if the Windows Azure Pack - PowerShell API is installed on the server.

http://micloud.azurewebsites.net/wp-content/uploads/2015/05/Programs-And-Features-WAP-PowerShell-API.png
Windows Azure Pack (WAP) - Programs and Features - PowerShell API

Windows Azure Pack Microsoft Best Practice Analyzer

Using the same approach for identifying the installation location of the PowerShell API, if you look at the downloaded content, we do not see the Best Practice Analyzer installer (MgmtSvc-Bpa.msi).

http://micloud.azurewebsites.net/wp-content/uploads/2015/05/PDT-Downloaded-WAP-Content.png
Windows Azure Pack (WAP) - PowerShell Deployment Toolkit (PDT) - Downloader.ps1 Windows Azure Pack Installation

Additionally, there is no references to "Best Practice" found at all in the Workflow.xml file. According to this TechNet article "To scan the components of Windows Azure Pack, you must install BPA for Windows Azure Pack on every machine that has components of Windows Azure Pack installed."

Since I could not find any references to this component, and the actual MSI file is not a part of the Downloader.ps1 content, I am assuming that this is not deployed as part of the Windows Azure Pack installation (again, another nice-to-have for the vNext version).

As a reference, if the Best Practice Analyzer was installed, it would appear in the Programs and Features list.

http://micloud.azurewebsites.net/wp-content/uploads/2015/05/Programs-And-Features-WAP-BPA.png
Windows Azure Pack (WAP) - Programs and Features - Best Practice Analzyer

Conclusion

That completes the confusion and challenge that I experienced in installing the Update Rollup 6 for the Windows Azure Pack (WAP). Hopefully this article has been of some assistance.