Skip to content

Commit 62a7284

Browse files
authored
Merge pull request #31 from nomorepanic/fix-paz-checklist-naming
- 06/09/26 3.1.3 Improved disk availability checking for No Zonal Regions, better error handling for critical prerequisite failures, removed unused cosmos.azure.com endpoint
2 parents 8c76d4c + 16ef1fb commit 62a7284

2 files changed

Lines changed: 87 additions & 39 deletions

File tree

‎CBS-Azure-Solutions/pre-deployment-checklist/README.md‎

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -46,23 +46,24 @@ This script will validate and verify the following:
4646
- Check if the region where VNET is created is supported for Everpure Cloud Dedicated deployments.
4747
- Check if the region has enough vCPU Quota to deploy Everpure Cloud Dedicated.
4848
- Check if there are any region or zonal restrictions on the instance.
49-
- Check if the PremiumV2 or Ultra Disks are available and in which Availability Zone.
50-
- Check if the System Subnet has outbound internet access to Pure1 cloud.
49+
- Check if the required disk SKU (PremiumV2 or Ultra) is available in the region (including No Zonal Regions).
50+
- Check if the System Subnet has the required Azure Service Endpoints (KeyVault and Storage).
51+
- Check if the System Subnet has outbound internet access to Pure Storage cloud services.
5152
- Check if the Signed In User has the required Azure Role Assignment.
5253

53-
CHANGELOG
54+
## CHANGELOG
5455

56+
- 06/09/26 3.1.3 Improved disk availability checking for No Zonal Regions, better error handling for critical prerequisite failures, removed unused cosmos.azure.com endpoint
5557
- 03/27/26 3.1.2 Update branding and Region Support
56-
- 09/18/25 3.1.0 Updated to add Support for V50MP2R2 Model and Bug Fixes
57-
- 09/02/25 3.0.9 Updated to check for Azure VM Regional and Zonal Restrictions
58-
- 08/20/25 3.0.8 Updated for Better Error Handling and Update fo VM Images
59-
- 01/07/25 3.0.7 From v6.8.2 is not used CosmosDB anymore
60-
- 10/24/24 3.0.6 Disable Storage Account Creation for Boot Diagnostics
61-
- 8/30/2024 3.0.5 Bug Fixes for V10MP2R2
62-
- 7/15/2024 3.0.4 Updated Region Support, V10MP2R2
63-
- 7/11/2024 3.0.3 Added Microsoft.Storage Endpoint, Fixed naming of the LB
64-
- 6/6/2024 3.0.2 Added ability to modify VM Size and VM OS types
65-
- 3/15/2024 3.0.1 Improved test for outbound connectivity (to deploy a test load balancer)
66-
- 3/12/2024 3.0.0 Script refactored, to provide a full report of the readiness of the environment for Everpure Cloud Dedicated deployment
67-
- 1/26/2024 2.0.1 Adding V20MP2R2 and PremiumV2 SSD support to the script
68-
- Check if the Signed In User has the required Azure Role Assignment.
58+
- 09/18/25 3.1.0 Updated to add Support for V50MP2R2 Model and Bug Fixes
59+
- 09/02/25 3.0.9 Updated to check for Azure VM Regional and Zonal Restrictions
60+
- 08/20/25 3.0.8 Updated for Better Error Handling and Update for VM Images
61+
- 01/07/25 3.0.7 From v6.8.2 onwards does not use CosmosDB
62+
- 10/24/24 3.0.6 Disable Storage Account Creation for Boot Diagnostics
63+
- 08/30/24 3.0.5 Bug Fixes for V10MP2R2
64+
- 07/15/24 3.0.4 Updated Region Support, V10MP2R2
65+
- 07/11/24 3.0.3 Added Microsoft.Storage Endpoint, Fixed naming of the LB
66+
- 06/06/24 3.0.2 Added ability to modify VM Size and VM OS types
67+
- 03/15/24 3.0.1 Improved test for outbound connectivity (to deploy a test load balancer)
68+
- 03/12/24 3.0.0 Script refactored to provide a full report of environment readiness
69+
- 01/26/24 2.0.1 Added V20MP2R2 and PremiumV2 SSD support

‎CBS-Azure-Solutions/pre-deployment-checklist/paz-checklist.ps1‎

Lines changed: 70 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<#
22
paz-checklist.ps1 -
3-
Version: 3.1.2
3+
Version: 3.1.3
44
Author: Vaclav Jirovsky, Adam Mazouz, David Stamen @ Everpure
55
.SYNOPSIS
66
Checking if the prerequisites required for deploying Everpure Cloud Dedicated are met before create the array on Azure.
@@ -57,7 +57,7 @@ param (
5757
[Parameter(Mandatory = $false, HelpMessage = 'Enter name for temporary VM created for connectivity tests')]
5858
[ValidateNotNullOrEmpty()]
5959
[string]
60-
$tempVmName = 'Everpure Cloud Dedicated-TestVM',
60+
$tempVmName = 'ECDedicated-TestVM',
6161

6262
[Parameter(Mandatory = $false, HelpMessage = "List of tags to be assigned to the temporary VM created for connectivity tests, required by your Azure landing zone (e.g. @{'tag1'='value1';'tag2'='value2'})")]
6363
[hashtable]
@@ -82,9 +82,12 @@ if ($tempVmOS -in $AcceptableOS) {
8282

8383
if ($Model-eq 'V10MP2R2' -or $Model-eq 'V20MP2R2') {
8484
$supportedRegions =
85+
'australiacentral',
8586
'australiaeast',
8687
'brazilsouth',
88+
'brazilsoutheast',
8789
'canadacentral',
90+
'canadaeast',
8891
'centralindia',
8992
'centralus',
9093
'eastasia',
@@ -98,8 +101,11 @@ if ($Model-eq 'V10MP2R2' -or $Model-eq 'V20MP2R2') {
98101
'koreacentral',
99102
'mexicocentral',
100103
'northeurope',
104+
'northcentralus',
101105
'norwayeast',
106+
'norwaywest',
102107
'polandcentral',
108+
'qatarcentral',
103109
'southafricanorth',
104110
'southcentralus',
105111
'southeastasia',
@@ -108,15 +114,12 @@ if ($Model-eq 'V10MP2R2' -or $Model-eq 'V20MP2R2') {
108114
'switzerlandnorth',
109115
'uaenorth',
110116
'uksouth',
117+
'ukwest',
111118
'westeurope',
112-
'westus2',
113-
'westus3',
119+
'westcentralus',
114120
'westus',
115-
'northcentralus',
116-
'canadaeast',
117-
'norwaywest',
118-
'ukwest',
119-
'westcentralus'
121+
'westus2',
122+
'westus3'
120123
} elseif ($Model-eq 'V10MUR1' -or $Model-eq 'V20MUR1') {
121124
$supportedRegions =
122125
'australiacentral',
@@ -166,7 +169,7 @@ else {
166169
exit;
167170
}
168171

169-
$CLI_VERSION = '3.1.2'
172+
$CLI_VERSION = '3.1.3'
170173

171174
Write-Host -ForegroundColor DarkRed @"
172175
______
@@ -201,8 +204,7 @@ try {
201204
'restricted-ra.cloud-support.purestorage.com',
202205
'rest.cloud-support.purestorage.com',
203206
'rest2.cloud-support.purestorage.com',
204-
'management.azure.com',
205-
'cosmos.azure.com'
207+
'management.azure.com'
206208

207209
# Resource_Group
208210
Write-Progress 'Checking vNET presence' -PercentComplete 0
@@ -365,26 +367,54 @@ try {
365367

366368
Write-Progress 'Checking Managed Disk availability' -PercentComplete 0
367369
try {
368-
$zones = Get-AzComputeResourceSku -Location $region | Where-Object {$_.ResourceType -eq 'disks' -and $_.Name -eq $diskType } | Select-Object -ExpandProperty LocationInfo | Select-Object -ExpandProperty Zones
370+
$diskSku = Get-AzComputeResourceSku -Location $region | Where-Object { $_.ResourceType -eq 'disks' -and $_.Name -eq $diskType }
371+
372+
if ($null -eq $diskSku) {
373+
throw "Disk SKU '$diskType' not found in Azure Resource SKU data for region '$region'"
374+
}
375+
376+
$locationInfo = $diskSku.LocationInfo
377+
$zones = $diskSku.LocationInfo.Zones
369378
} catch {
370379
Write-Host "Error retrieving disk SKU availability: $_"
371380
exit
372381
}
373382

374-
if ($zones) {
375-
376-
$finalReportOutput += [pscustomobject]@{
377-
TestName = 'Managed Disks availability'
378-
Result = 'OK'
379-
Details = "The disk SKU '$diskType' is available in region '$region' in availability zones '$zones' for deploying a $Model"
380-
};
383+
if ($null -ne $locationInfo) {
384+
# Disk SKU is available in this region
385+
if ($null -ne $zones -and $zones.Count -gt 0) {
386+
$finalReportOutput += [pscustomobject]@{
387+
TestName = 'Managed Disks availability'
388+
Result = 'OK'
389+
Details = "The disk SKU '$diskType' is available in region '$region' in availability zones '$zones' for deploying a $Model"
390+
};
391+
} else {
392+
# No zonal region - disk is available but doesn't have multiple zones
393+
$finalReportOutput += [pscustomobject]@{
394+
TestName = 'Managed Disks availability'
395+
Result = 'OK'
396+
Details = "The disk SKU '$diskType' is available in region '$region' (No Zone Region) for deploying a $Model"
397+
};
398+
}
381399
} else {
382-
383400
$finalReportOutput += [pscustomobject]@{
384401
TestName = 'Managed Disks availability'
385402
Result = 'FAILED'
386403
Details = "The disk SKU '$diskType' is NOT available in region '$region' for deploying a $Model"
387404
};
405+
406+
Write-Progress 'Checking Managed Disk availability' -PercentComplete 100
407+
408+
# Print final report and exit since Managed Disks are not available
409+
Write-Host
410+
Write-Host -ForegroundColor DarkRed '-----------------------------------------------------'
411+
Write-Host -ForegroundColor DarkRed 'Final Report'
412+
Write-Host -ForegroundColor DarkRed '-----------------------------------------------------'
413+
Write-Host
414+
$finalReportOutput | Format-Table -AutoSize
415+
Write-Host
416+
Write-Error "Cannot continue: Managed disk SKU '$diskType' is not available in region '$region'. This is a critical prerequisite for deploying $Model." -ErrorAction Stop
417+
exit
388418
}
389419

390420
Write-Progress 'Checking Managed Disk availability' -PercentComplete 100
@@ -486,9 +516,26 @@ $zones = Get-AzComputeResourceSku -Location $region | Where-Object {$_.ResourceT
486516

487517
Write-Progress 'Creating a temporary test loadbalancer in System subnet' -PercentComplete 50
488518

489-
$loadBalancer = New-AzLoadBalancer -ResourceGroupName $rg -Name "$TempVMName-LB" -Location $region -FrontendIpConfiguration $frontendIP -LoadBalancingRule $lbRule -BackendAddressPool $backendPool -Sku 'Standard' -Force -Confirm:$false
519+
try {
520+
$loadBalancer = New-AzLoadBalancer -ResourceGroupName $rg -Name "$TempVMName-LB" -Location $region -FrontendIpConfiguration $frontendIP -LoadBalancingRule $lbRule -BackendAddressPool $backendPool -Sku 'Standard' -Force -Confirm:$false
521+
522+
if ($null -eq $loadBalancer) {
523+
throw "LoadBalancer creation returned null. Check resource group '$rg' and name '$TempVMName-LB' validity."
524+
}
525+
526+
$bepool = $loadBalancer.BackendAddressPools[0]
527+
} catch {
528+
Write-Host
529+
Write-Host -ForegroundColor DarkRed '-----------------------------------------------------'
530+
Write-Host -ForegroundColor DarkRed 'Final Report'
531+
Write-Host -ForegroundColor DarkRed '-----------------------------------------------------'
532+
Write-Host
533+
$finalReportOutput | Format-Table -AutoSize
534+
Write-Host
535+
Write-Error "Failed to create temporary LoadBalancer: $_" -ErrorAction Stop
536+
exit
537+
}
490538

491-
$bepool = $loadBalancer.BackendAddressPools[0]
492539
Write-Progress 'Creating a temporary test loadbalancer in System subnet' -PercentComplete 100
493540

494541
Write-Progress 'Creating a temporary test VM in System subnet' -PercentComplete 0

0 commit comments

Comments
 (0)