Obtaining and preparing disk images for Azure deployments

Pexip publishes Azure-optimized disk images for the Management Node and for Conferencing Nodes. This topic includes a PowerShell script that copies and prepares your disk images, and instructions for running the script via a Windows client.

Preparing disk images for use

Before you can use the published Pexip Infinity disk images, you must copy them to your storage account in Azure. This guide refers to a disk image copied to your storage account as a prepared disk image. All deployment operations use prepared disk images.

The following PowerShell script copies both of the published disk images (for a Management Node and for a Conferencing Node) to your storage account (into a storage container called vm-images) so that they may be used to deploy VM instances. Note that these images can be stored in your shared resource group (whereas each VM instance created from these images must be deployed in its own storage container and its own resource group).

You must edit the variables in the script to provide the name of your Azure subscription ($subscriptionName), the name of the resource group ($resourceGroupName), the name of the storage account ($storageAccountName), and the Pexip Infinity version-build number to use ($version — currently 20-1-0-45433-0-0 for v20.1 software). If you are running an older version of Pexip Infinity software, see Version information for previous Pexip Infinity releases.

# Name of your Azure subscription
$subscriptionName = ""
# Name of the resource group to use
$resourceGroupName = ""
# Name of the storage account to copy the disk images into
$storageAccountName = ""
# Name of the container within the storage account to copy the disk images into
$containerName = "vm-images"
# Version of Pexip Infinity to copy
$version = "20-1-0-45433-0-0"

# Add your Azure account to the PowerShell environment
Add-AzureRmAccount

# Set the current subscription
Get-AzureRmSubscription -SubscriptionName $subscriptionName | Select-AzureRmSubscription

# Obtain the access key for the storage account
$storageAccountKey = Get-AzureRmStorageAccountKey -ResourceGroupName $resourceGroupName -Name $storageAccountName
If($storageAccountKey.GetType().Name -eq "StorageAccountKeys") {
    # AzureRM.Storage < 1.1.0
    $storageAccountKey = $storageAccountKey.Key1
} Else {
    # AzureRm.Storage 1.1.0
    $storageAccountKey = $storageAccountKey[0].Value
}			

# Create the storage access context
$ctx = New-AzureStorageContext -StorageAccountName $storageAccountName -StorageAccountKey $storageAccountKey

# Ensure that the container exists
New-AzureStorageContainer -Name $containerName -Context $ctx

# Start copying the Management Node image
$mgmt = Start-AzureStorageBlobCopy -AbsoluteUri "https://pexipas.blob.core.windows.net/infinity/$version/management-node.vhd" -DestContainer $containerName -DestBlob "pexip-infinity-$version-management-node.vhd" -DestContext $ctx

# Start copying the Conferencing Node image
$cnfc = Start-AzureStorageBlobCopy -AbsoluteUri "https://pexipas.blob.core.windows.net/infinity/$version/conferencing-node.vhd" -DestContainer $containerName -DestBlob "pexip-infinity-$version-conferencing-node.vhd" -DestContext $ctx

# Wait for the Management Node image to finish copying
$status = Get-AzureStorageBlobCopyState -Blob $mgmt.Name -Container $containerName -Context $ctx
While($status.Status -eq "Pending") {
    $status
    $status = Get-AzureStorageBlobCopyState -Blob $mgmt.Name -Container $containerName -Context $ctx
    Start-Sleep 10
}
$status

# Wait for the Conferencing Node image to finish copying
$status = Get-AzureStorageBlobCopyState -Blob $cnfc.Name -Container $containerName -Context $ctx
While($status.Status -eq "Pending") {
    $status
    $status = Get-AzureStorageBlobCopyState -Blob $cnfc.Name -Container $containerName -Context $ctx
    Start-Sleep 10
}
$status

# Print out the prepared disk image URLs for later use
"Prepared Management Node disk image:   " + $mgmt.ICloudBlob.Uri.AbsoluteUri
"Prepared Conferencing Node disk image: " + $cnfc.ICloudBlob.Uri.AbsoluteUri

Running the script via your Windows client

To run the PowerShell script from your Windows PC, you need to connect your local machine to Azure:

  1. From your PC, run PowerShell ISE as Administrator by right-clicking on it and selecting Run as Administrator.

  2. When in PowerShell run the following two commands:

    1. Install-Module AzureRM

      This installs the Azure Resource Manager modules from the PowerShell Gallery.

    2. Install-Module Azure

      This installs the Azure Service Management module from the PowerShell Gallery.

    If you get any prompts while running these commands, select Y for Yes.

    See https://docs.microsoft.com/en-gb/powershell/azure/overview?view=azurermps-6.2.0 for more information about Azure PowerShell.

  3. Cut and paste the PowerShell script from above into a text editor and add in your Subscription Name, Resource Group Name and Storage Account name (where shown below), and then save the file as a .ps1 file.

  4. Run the script:

    1. Close the file, right-click on it and select Run with PowerShell.
    2. You are prompted to login, so enter your Azure login credentials.
    3. The script will run and copy the images over to your storage account. This takes approximately 10 minutes
  5. You can use the Azure portal to confirm when the images have been copied across. From the Azure portal go to your Azure dashboard, select your Storage Account, then Blobs > vm-images. You will see the Pexip Management Node and Conferencing Node prepared disk images.

Now that you have your prepared disk images in your Azure storage account, you can use them to create the VM instances in Azure in which you can deploy the Pexip Infinity Management Node and Conferencing Nodes.

Version information for previous Pexip Infinity releases

If you are running an older version of Pexip Infinity software, and you want to deploy a new Conferencing Node, you must use a published Pexip Infinity disk image version that corresponds to the software version running on your Management Node. This includes dot releases — so for example, for a v17.3 Management Node you must install a v17.3 Conferencing Node rather than a v17 Conferencing Node. Similarly, if your system has been upgraded since you first installed the Management Node and some Conferencing Nodes, you will need to obtain and prepare the appropriate Conferencing Node image corresponding to the software version you are currently running.

To obtain the published disk images for older software versions (for both the Management Node and for a Conferencing Node) you need to use the appropriate software version number in the PowerShell scripts supplied above.

You must replace the current version number (20-1-0-45433-0-0) with the relevant older version as given in the table below:

Pexip Infinity release Version number to use in script
v20 20-0-0-45400-0-0
v19 19-0-0-43079-0-0
v18 18-0-0-42462-0-0
v17.3 17-3-0-40234-0-0
v17.2 17-2-0-40212-0-0
v17.1 17-1-0-40171-0-0
v17 17-0-0-40161-0-0
v16.2 16-2-0-37904-0-0
v16.1 16-1-0-37902-0-0
v16 16-0-0-37875-0-0
v15.1 15-1-0-35780-0-0
v15 15-0-0-35724-0-0
v14.2 14-2-0-33750-0-0
v14.1 14-1-0-33745-0-0
v14 14-0-0-33724-0-0
v13 13-0-0-32124-0-0
v12.2 12-2-0-29803-0-0
v12.1 12-1-0-29734-0-0
v12 12-0-0-29682-0-0