Skip to content

Commit

Permalink
Fix #132 lbr with no probe (#133)
Browse files Browse the repository at this point in the history
* spelling

* spelling

* fix issue with lbr migration when lbr had no probe
  • Loading branch information
mbrat2005 authored Feb 26, 2025
1 parent 9b828b1 commit 769e4d1
Show file tree
Hide file tree
Showing 9 changed files with 190 additions and 34 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@
RootModule = 'AzureBasicLoadBalancerUpgrade'

# Version number of this module.
ModuleVersion = '2.4.15'
ModuleVersion = '2.4.20'

# Supported PSEditions
# CompatiblePSEditions = @()
Expand All @@ -21,13 +21,13 @@
GUID = 'd6a9de52-b84f-40c3-b4c8-81fab6e3ec99'

# Author of this module
Author = 'FastTrack for Azure'
Author = 'Matthew Bratschun'

# Company or vendor of this module
CompanyName = 'Microsoft'

# Copyright statement for this module
Copyright = '(c) 2023 Microsoft. All rights reserved.'
Copyright = '(c) 2025 Microsoft. All rights reserved.'

# Description of the functionality provided by this module
Description = 'This module will migrate a Basic SKU load balancer connected to a Virtual Machine Scaleset or Virtual Machines to a Standard SKU load balancer, preserving the existing configuration and functionality.'
Expand Down Expand Up @@ -107,7 +107,7 @@
# IconUri = ''

# ReleaseNotes of this module
ReleaseNotes = 'Fix bug when comparing backend pool membership on empty LBs.'
ReleaseNotes = 'Fix bug where load balancing rule without probe would cause migration to fail.'

# Prerelease string of this module
# Prerelease = 'beta'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#
# Module manifest for module 'LoadBalacingRulesMigration'
# Module manifest for module 'LoadBalancingRulesMigration'
#
# Generated by: Victor Santana
#
Expand All @@ -9,7 +9,7 @@
@{

# Script module or binary module file associated with this manifest.
RootModule = 'LoadBalacingRulesMigration'
RootModule = 'LoadBalancingRulesMigration'

# Version number of this module.
ModuleVersion = '0.1.0'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,15 +1,24 @@
# Load Modules
Import-Module ((Split-Path $PSScriptRoot -Parent) + "/Log/Log.psd1")
function LoadBalacingRulesMigration {
function LoadBalancingRulesMigration {
[CmdletBinding()]
param (
[Parameter(Mandatory = $True)][Microsoft.Azure.Commands.Network.Models.PSLoadBalancer] $BasicLoadBalancer,
[Parameter(Mandatory = $True)][Microsoft.Azure.Commands.Network.Models.PSLoadBalancer] $StdLoadBalancer
)
log -Message "[LoadBalacingRulesMigration] Initiating LoadBalacing Rules Migration"
log -Message "[LoadBalancingRulesMigration] Initiating LoadBalancing Rules Migration"
$loadBalancingRules = $BasicLoadBalancer.LoadBalancingRules
foreach ($loadBalancingRule in $loadBalancingRules) {
log -Message "[LoadBalacingRulesMigration] Adding LoadBalacing Rule $($loadBalancingRule.Name) to Standard Load Balancer"
log -Message "[LoadBalancingRulesMigration] Adding LoadBalancing Rule $($loadBalancingRule.Name) to Standard Load Balancer"

# set $probe if LBR has probe
if ($loadBalancingRule.Probe -ne $null) {
$probeName = ($loadBalancingRule.Probe.Id).split('/')[-1]
$probe = Get-AzLoadBalancerProbeConfig -LoadBalancer $StdLoadBalancer -Name $probeName
}
else {
$probe = $null
}

try {
$ErrorActionPreference = 'Stop'
Expand All @@ -25,26 +34,26 @@ function LoadBalacingRulesMigration {
EnableTcpReset = $loadBalancingRule.EnableTcpReset
FrontendIPConfiguration = (Get-AzLoadBalancerFrontendIpConfig -LoadBalancer $StdLoadBalancer -Name ($loadBalancingRule.FrontendIpConfiguration.Id).split('/')[-1])
BackendAddressPool = (Get-AzLoadBalancerBackendAddressPool -LoadBalancer $StdLoadBalancer -Name ($loadBalancingRule.BackendAddressPool.Id).split('/')[-1])
Probe = (Get-AzLoadBalancerProbeConfig -LoadBalancer $StdLoadBalancer -Name ($loadBalancingRule.Probe.Id).split('/')[-1])
Probe = $probe
}
$StdLoadBalancer | Add-AzLoadBalancerRuleConfig @loadBalancingRuleConfig > $null
}
catch {
$message = "[LoadBalacingRulesMigration] An error occured when adding Load Balancing Rule '$($loadBalancingRule.Name)' to new Standard load balancer '$($StdLoadBalancer.Name)'. To recover, address the following error, delete the standard LB, and follow the process at https://aka.ms/basiclbupgradefailure to retry migration. Error: $_"
$message = "[LoadBalancingRulesMigration] An error occurred when adding Load Balancing Rule '$($loadBalancingRule.Name)' to new Standard load balancer '$($StdLoadBalancer.Name)'. To recover, address the following error, delete the standard LB, and follow the process at https://aka.ms/basiclbupgradefailure to retry migration. Error: $_"
log "Error" $message -terminateOnError
}
}
log -Message "[LoadBalacingRulesMigration] Saving Standard Load Balancer $($StdLoadBalancer.Name)"
log -Message "[LoadBalancingRulesMigration] Saving Standard Load Balancer $($StdLoadBalancer.Name)"

try {
$ErrorActionPreference = 'Stop'
Set-AzLoadBalancer -LoadBalancer $StdLoadBalancer > $null
}
catch {
$message = "[LoadBalacingRulesMigration] An error occured when adding Load Balancing Rules configuration to new Standard load balancer '$($StdLoadBalancer.Name)'. To recover address the following error, https://aka.ms/basiclbupgradefailure. `nError message: $_"
$message = "[LoadBalancingRulesMigration] An error occurred when adding Load Balancing Rules configuration to new Standard load balancer '$($StdLoadBalancer.Name)'. To recover address the following error, https://aka.ms/basiclbupgradefailure. `nError message: $_"
log "Error" $message -terminateOnError
}
log -Message "[LoadBalacingRulesMigration] LoadBalacing Rules Migration Completed"
log -Message "[LoadBalancingRulesMigration] LoadBalancing Rules Migration Completed"
}

Export-ModuleMember -Function LoadBalacingRulesMigration
Export-ModuleMember -Function LoadBalancingRulesMigration
Original file line number Diff line number Diff line change
Expand Up @@ -58,7 +58,7 @@ function RemoveBasicLoadBalancer {
Update-Vmss -Vmss $vmss
}
catch {
$message = "[RemoveBasicLoadBalancerFromVmss] An error occured while updating VMSS '$($vmss.Name)' in resource group '$($vmss.ResourceGroupName)' to remove it from a backend pool on load balancer '$($BasicLoadBalancer.Name)'. Follow the steps at https://aka.ms/basiclbupgradefailure to retry the migration. `nError message: $_"
$message = "[RemoveBasicLoadBalancerFromVmss] An error occurred while updating VMSS '$($vmss.Name)' in resource group '$($vmss.ResourceGroupName)' to remove it from a backend pool on load balancer '$($BasicLoadBalancer.Name)'. Follow the steps at https://aka.ms/basiclbupgradefailure to retry the migration. `nError message: $_"
log 'Error' $message -terminateOnError
}

Expand All @@ -72,7 +72,7 @@ function RemoveBasicLoadBalancer {
Remove-AzLoadBalancer -ResourceGroupName $BasicLoadBalancer.ResourceGroupName -Name $BasicLoadBalancer.Name -Force -ErrorAction Stop > $null
}
Catch {
$message = "[RemoveBasicLoadBalancer] A failure occured when attempting to delete the basic load balancer '$($BasicLoadBalancer.Name)'. The script cannot continue as the front end addresses will not be available to reassign to the new Standard load balancer if the Basic LB has not been removed. To recover address the following error, then follow the steps at https://aka.ms/basiclbupgradefailure to retry the migration. `nError message: $_"
$message = "[RemoveBasicLoadBalancer] A failure occurred when attempting to delete the basic load balancer '$($BasicLoadBalancer.Name)'. The script cannot continue as the front end addresses will not be available to reassign to the new Standard load balancer if the Basic LB has not been removed. To recover address the following error, then follow the steps at https://aka.ms/basiclbupgradefailure to retry the migration. `nError message: $_"
log 'Error' $message -terminateOnError
}
log -Message "[RemoveBasicLoadBalancer] Removal of Basic Loadbalancer $($BasicLoadBalancer.Name) Completed"
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -44,7 +44,7 @@ Import-Module ((Split-Path $PSScriptRoot -Parent) + "/BackendPoolMigration/Backe
Import-Module ((Split-Path $PSScriptRoot -Parent) + "/BackupResources/BackupResources.psd1")
Import-Module ((Split-Path $PSScriptRoot -Parent) + "/GetVmssFromBasicLoadBalancer/GetVmssFromBasicLoadBalancer.psd1")
Import-Module ((Split-Path $PSScriptRoot -Parent) + "/InboundNatPoolsMigration/InboundNatPoolsMigration.psd1")
Import-Module ((Split-Path $PSScriptRoot -Parent) + "/LoadBalacingRulesMigration/LoadBalacingRulesMigration.psd1")
Import-Module ((Split-Path $PSScriptRoot -Parent) + "/LoadBalancingRulesMigration/LoadBalancingRulesMigration.psd1")
Import-Module ((Split-Path $PSScriptRoot -Parent) + "/Log/Log.psd1")
Import-Module ((Split-Path $PSScriptRoot -Parent) + "/NatRulesMigration/NatRulesMigration.psd1")
Import-Module ((Split-Path $PSScriptRoot -Parent) + "/NsgCreation/NsgCreation.psd1")
Expand Down Expand Up @@ -142,7 +142,7 @@ function PublicLBMigrationVmss {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((8 / 14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Creating Outbound Rules for SNAT
Write-Progress -Status "Creating Outbound Rules for SNAT" -PercentComplete ((9 / 14) * 100) @progressParams
Expand Down Expand Up @@ -221,7 +221,7 @@ function InternalLBMigrationVmss {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((9/14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Migration of NAT Rules
Write-Progress -Status "Migrating NAT Rules" -PercentComplete ((10/14) * 100) @progressParams
Expand Down Expand Up @@ -298,7 +298,7 @@ function RestoreExternalLBMigrationVmss {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((8/14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Creating Outbound Rules for SNAT
Write-Progress -Status "Creating Outbound Rules for SNAT" -PercentComplete ((9/14) * 100) @progressParams
Expand Down Expand Up @@ -383,7 +383,7 @@ function RestoreInternalLBMigrationVmss {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((7/14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Migration of NAT Rules
Write-Progress -Status "Migrating NAT Rules" -PercentComplete ((8/14) * 100) @progressParams
Expand Down Expand Up @@ -453,7 +453,7 @@ function PublicLBMigrationVM {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((6 / 14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Creating Outbound Rules for SNAT
Write-Progress -Status "Creating Outbound Rules for SNAT" -PercentComplete ((7 / 14) * 100) @progressParams
Expand Down Expand Up @@ -527,7 +527,7 @@ function InternalLBMigrationVM {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((6 / 14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Migration of NAT Rules
Write-Progress -Status "Migrating NAT Rules" -PercentComplete ((7 / 14) * 100) @progressParams
Expand Down Expand Up @@ -592,7 +592,7 @@ function RestoreExternalLBMigrationVM {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((6 / 14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Creating Outbound Rules for SNAT
Write-Progress -Status "Creating Outbound Rules for SNAT" -PercentComplete ((7 / 14) * 100) @progressParams
Expand Down Expand Up @@ -661,7 +661,7 @@ function RestoreInternalLBMigrationVM {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((5 / 14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Migration of NAT Rules
Write-Progress -Status "Migrating NAT Rules" -PercentComplete ((6 / 14) * 100) @progressParams
Expand Down Expand Up @@ -723,7 +723,7 @@ function PublicLBMigrationEmpty {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((5/14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Creating Outbound Rules for SNAT
Write-Progress -Status "Creating Outbound Rules for SNAT" -PercentComplete ((6/14) * 100) @progressParams
Expand Down Expand Up @@ -785,7 +785,7 @@ function InternalLBMigrationEmpty {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((7/14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Migration of NAT Rules
Write-Progress -Status "Migrating NAT Rules" -PercentComplete ((8/14) * 100) @progressParams
Expand Down Expand Up @@ -846,7 +846,7 @@ function RestoreExternalLBMigrationEmpty {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((6/14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Creating Outbound Rules for SNAT
Write-Progress -Status "Creating Outbound Rules for SNAT" -PercentComplete ((7/14) * 100) @progressParams
Expand Down Expand Up @@ -907,7 +907,7 @@ function RestoreInternalLBMigrationEmpty {

# Migration of Load Balancing Rules
Write-Progress -Status "Migrating Load Balancing Rules" -PercentComplete ((5/14) * 100) @progressParams
LoadBalacingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer
LoadBalancingRulesMigration -BasicLoadBalancer $BasicLoadBalancer -StdLoadBalancer $StdLoadBalancer

# Migration of NAT Rules
Write-Progress -Status "Migrating NAT Rules" -PercentComplete ((6/14) * 100) @progressParams
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -104,9 +104,9 @@ var loadBalancingRulesVar = [for loadBalancingRule in loadBalancingRules: {
frontendPort: loadBalancingRule.frontendPort
idleTimeoutInMinutes: contains(loadBalancingRule, 'idleTimeoutInMinutes') ? loadBalancingRule.idleTimeoutInMinutes : 4
loadDistribution: contains(loadBalancingRule, 'loadDistribution') ? loadBalancingRule.loadDistribution : 'Default'
probe: {
probe: (loadBalancingRule.?probeName != null) ? {
id: '${az.resourceId('Microsoft.Network/loadBalancers', name)}/probes/${loadBalancingRule.probeName}'
}
} : null
protocol: contains(loadBalancingRule, 'protocol') ? loadBalancingRule.protocol : 'Tcp'
}
}]
Expand Down
Loading

0 comments on commit 769e4d1

Please sign in to comment.