Public/Test-FMTDeployment.ps1
function Test-FMTDeployment { param( [parameter()] [string] $rg, [parameter()] [string] $vnetRG = $rg, [parameter()] [string] $vnet, [parameter()] [string] $subNet, [parameter(Mandatory)] [ValidateSet('1','2','3')] [string] $zone, [parameter()] [ValidateSet('2','3','4','5','6','7','8')] [int] $cnodeCount = 2, [parameter()] [ValidateSet('Lsv3','Laosv4')] [string] $mnodeType = "Lsv3" ) if (!$rg) { $rgArray = Get-AzResourceGroup | Select-Object resourcegroupname,location | Sort-Object resourcegroupname $rg = Build-MenuFromArray -array $rgArray -property resourcegroupname -message "Select the desired resource group" } if (!$vnetRG) { $vnetRG = $rg $rg = Build-MenuFromArray -array $rgArray -property resourcegroupname -message "Select the desired VNET resource group" } if (!$vnet) { try { $vnetArray = Get-AzVirtualNetwork -ResourceGroupName $vnetRG | Select-Object name,location | Sort-Object name } catch { return $error[0] Return } # $vnetArray = Get-AzVirtualNetwork | Select-Object name,location | Sort-Object name $vnet = Build-MenuFromArray -array $vnetArray -property name -message "Select the desired Virtualnetwork" } if (!$subNet) { $subnetArray = Get-AzVirtualNetwork -Name $vnet -ResourceGroupName $vnetRG | Get-AzVirtualNetworkSubnetConfig | Select-Object name $subnet = Build-MenuFromArray -array $subnetArray -property name -message "Select the desired management subnet" } # Clear existing jobs get-job | Remove-Job ## create credential [string]$userName = 'azureser' [string]$userPassword = 'IgnoreThis1234!' [securestring]$secStringPassword = ConvertTo-SecureString $userPassword -AsPlainText -Force [pscredential]$creds = New-Object System.Management.Automation.PSCredential ($userName, $secStringPassword) # Build CNodes $cnodeTestName = "cnt-" + (get-random) $cnodeTally = 0 while ($cnodeTally -lt $cnodeCount) { $vmName = ($cnodeTestName + $cnodeTally.ToString()) Write-Verbose "--> Building vm $vmName ..." -Verbose Build-FMTTestVM -vmName $vmName -size Standard_E64s_v5 -image Ubuntu -rg $rg -vnetRG $vnetRG -vnet $vnet -subNet $subnet -noDataSubnet -adminCreds $creds -zone $zone -AsJob | Out-Null $cnodeTally++ } # Build MNodes Standard_L32aos_v4 if ($mnodeType = "Lsv3") { $mnodeSKU = 'Standard_L32s_v3' } elseif ($mnodeType = "Laosv4") { $mnodeSKU = 'Standard_L32aos_v4' } $dnodeTestName = "dnt-" + (get-random) $dnodeTally = 0 while ($dnodeTally -lt 4) { $vmName = ($dnodeTestName + $dnodeTally.ToString()) Write-Verbose "--> Building vm $vmName ..." -Verbose Build-FMTTestVM -vmName $vmName -size $mnodeSKU -image Ubuntu -rg $rg -vnetRG $vnetRG -vnet $vnet -subNet $subnet -noDataSubnet -adminCreds $creds -zone $zone -AsJob | Out-Null $dnodeTally++ } # Grab jobs $allJobs = get-job # loop to monitor jobs while ($allJobs.State -contains "running") { Start-Sleep -Seconds 15 $allJobs = get-job write-verbose "Test VM Deployments running..." -Verbose } if ($allJobs.State -contains "failed") { write-verbose "VM Creation failed..." -Verbose (get-job -State failed) | Format-List } get-job | Remove-Job # housekeep Get-AzVM -ResourceGroupName $rg | Where-Object {$_.name -match $cnodeTestName } | Remove-AzVM -Confirm:0 -Force -asjob | Out-Null Get-AzVM -ResourceGroupName $rg | Where-Object {$_.name -match $dnodeTestName } | Remove-AzVM -Confirm:0 -Force -asjob | Out-Null # Grab jobs $allJobs = get-job # loop to monitor jobs while ($allJobs.State -contains "running") { Start-Sleep -Seconds 15 $allJobs = get-job write-verbose "Removing Test VMs..." -Verbose } Get-AzNetworkInterface -ResourceGroupName $rg | Where-Object {$_.name -match $cnodeTestName } | Remove-AzNetworkInterface -Confirm:0 -Force -asjob | Out-Null Get-AzNetworkInterface -ResourceGroupName $rg | Where-Object {$_.name -match $dnodeTestName } | Remove-AzNetworkInterface -Confirm:0 -Force -asjob | Out-Null Get-AzDisk -ResourceGroupName $rg | Where-Object {$_.name -match $cnodeTestName } | Remove-AzDisk -Confirm:0 -Force -asjob | Out-Null Get-AzDisk -ResourceGroupName $rg | Where-Object {$_.name -match $dnodeTestName } | Remove-AzDisk -Confirm:0 -Force -asjob | Out-Null } |