Skip to content

Latest commit

 

History

History
72 lines (63 loc) · 4.15 KB

README.md

File metadata and controls

72 lines (63 loc) · 4.15 KB

Microsoft HPC Pack 2016 Preview

Deploy an HPC cluster in Azure

Note: see Pre-Requisites below before starting deployment

Deploy an HPC cluster with three head nodes in Azure

Deploy an HPC cluster in Azure with one domain controller, one Database Server with SQL Server 2014 Standard version, three head nodes and a number of compute nodes.

[No AD Domain] Deploy an HPC cluster with three head nodes in Azure

Deploy an HPC cluster in Azure with one domain controller, one Database Server with SQL Server 2014 Standard version, three head nodes and a number of compute nodes.

Deploy an HPC cluster with single head node in Azure

Deploy an HPC cluster in Azure with an all-in-one head node and a number of compute nodes. The head node is with local databases (SQL server 2014 Express version) and acts as domain controller as well.

Pre-Requisites:

Microsoft HPC Pack 2016 Technical Preview requires a Personal Information Exchange (PFX) certificate to secure the communication between the HPC nodes. Before deploying the HPC cluster, you shall upload the certificate to an Azure Key Vault as a secret, and remember the following information which will be used in deployment: key vault name, resource group name, secret Id, and certificate thumbprint. More details about uploading certificate to Azure Key Vault please see description of vaultCertificates.certificateUrl, or you can refer to the PowerShell script as below.

#Give the following values
$VaultName = "mytestvault"
$SecretName = "hpcpfxcert"
$VaultRG = "myresourcegroup"
$location = "westus"
$PfxFile = "c:\Temp\mytest.pfx"
$Password = "yourpfxkeyprotectionpassword"
#Validate the pfx file
try {
    $pfxCert = New-Object System.Security.Cryptography.X509Certificates.X509Certificate2 -ArgumentList $PfxFile, $Password
}
catch [System.Management.Automation.MethodInvocationException]
{
    throw $_.Exception.InnerException
}
$thumbprint = $pfxCert.Thumbprint
$pfxCert.Dispose()
# Create and encode the JSON object
$pfxContentBytes = Get-Content $PfxFile -Encoding Byte
$pfxContentEncoded = [System.Convert]::ToBase64String($pfxContentBytes)
$jsonObject = @"
{
"data": "$pfxContentEncoded",
"dataType": "pfx",
"password": "$Password"
}
"@
$jsonObjectBytes = [System.Text.Encoding]::UTF8.GetBytes($jsonObject)
$jsonEncoded = [System.Convert]::ToBase64String($jsonObjectBytes)
#Create an Azure key vault and upload the certificate as a secret
$secret = ConvertTo-SecureString -String $jsonEncoded -AsPlainText -Force
$rg = Get-AzureRmResourceGroup -Name $VaultRG -Location $location -ErrorAction SilentlyContinue
if($null -eq $rg)
{
    $rg = New-AzureRmResourceGroup -Name $VaultRG -Location $location
}
$hpcKeyVault = New-AzureRmKeyVault -VaultName $VaultName -ResourceGroupName $VaultRG -Location $location -EnabledForDeployment -EnabledForTemplateDeployment
$hpcSecret = Set-AzureKeyVaultSecret -VaultName $VaultName -Name $SecretName -SecretValue $secret
"The following Information will be used in the deployment template"
"Vault Name             :   $VaultName"
"Vault Resource Group   :   $VaultRG"
"Certificate URL        :   $($hpcSecret.Id)"
"Certificate Thumbprint :   $thumbprint"