@@ -5581,7 +5581,7 @@ function Test-VirtualMachineScaleSetSkuProfilePrioritized
5581
5581
Update the Resiliency policies of VMSS using Update-Azvmss
5582
5582
Test ResilientVMCreationPolicy and ResilientVMDeletionPolicy
5583
5583
#>
5584
- function Test-ResiliencyPolicyVMSS
5584
+ function Test-ResilientVMCreateDelete
5585
5585
{
5586
5586
# Setup
5587
5587
$rgname = Get-ComputeTestResourceName
@@ -5617,8 +5617,107 @@ function Test-ResiliencyPolicyVMSS
5617
5617
Assert-False { $updatedVmss.ResiliencyPolicy.ResilientVMCreationPolicy.Enabled };
5618
5618
# check ResilientVMDeletionPolicy
5619
5619
Assert-False { $updatedVmss.ResiliencyPolicy.ResilientVMDeletionPolicy.Enabled };
5620
+ }
5621
+ finally
5622
+ {
5623
+ # Cleanup
5624
+ Clean - ResourceGroup $rgname
5625
+ }
5626
+ }
5627
+
5628
+ <#
5629
+ . SYNOPSIS
5630
+ Create a VMSS using New-Azvmssconfig
5631
+ Update the Resiliency policies of VMSS using Update-Azvmss
5632
+ Test AutomaticZoneRebalancingPolicy
5633
+ #>
5634
+ function Test-AutomaticZoneRebalancingPolicy
5635
+ {
5636
+ # Setup
5637
+ $rgname = Get-ComputeTestResourceName
5638
+
5639
+ try
5640
+ {
5641
+ $loc = " eastus2euap"
5642
+ $vmssName = " rebalancingVMSS"
5643
+ $vnetName = " rebalancingVnet"
5644
+ $subnetName = " rebalancingSubnet"
5645
+ $rebalanceStrategy = " Recreate"
5646
+ $rebalanceBehavior = " CreateBeforeDelete"
5647
+ $zones = @ (" 1" , " 2" , " 3" )
5648
+
5649
+ # Create resource group
5650
+ New-AzResourceGroup - Name $rgname - Location $loc - Force
5651
+
5652
+ # Create VNet and Subnet
5653
+ $subnetConfig = New-AzVirtualNetworkSubnetConfig - Name $subnetName - AddressPrefix " 10.0.0.0/24" - DefaultOutboundAccess $false
5654
+ $vnet = New-AzVirtualNetwork - Name $vnetName `
5655
+ - ResourceGroupName $rgname `
5656
+ - Location $loc `
5657
+ - AddressPrefix " 10.0.0.0/16" `
5658
+ - Subnet $subnetConfig
5659
+
5660
+ # Get subnet object
5661
+ $subnet = Get-AzVirtualNetwork - Name $vnetName - ResourceGroupName $rgname | Get-AzVirtualNetworkSubnetConfig - Name $subnetName
5662
+
5663
+ # Build VMSS config
5664
+ $vmssConfig = New-AzVmssConfig `
5665
+ - Location $loc `
5666
+ - SkuCapacity 0 `
5667
+ - SkuName " Standard_D2s_v3" `
5668
+ - UpgradePolicyMode " Automatic" `
5669
+ - Zone $zones `
5670
+ - EnableAutomaticZoneRebalance `
5671
+ - AutomaticZoneRebalanceStrategy $rebalanceStrategy `
5672
+ - AutomaticZoneRebalanceBehavior $rebalanceBehavior `
5673
+ - SharedGalleryImageId " /SharedGalleries/WindowsServer.1P.Canary/images/2022-DATACENTER-AZURE-EDITION/versions/latest" `
5674
+ - SecurityType " TrustedLaunch"
5675
+
5676
+ # Configure IP and NIC
5677
+ $ipCfg = New-AzVmssIpConfig - Name " ipconfig1" - SubnetId $subnet.Id
5678
+ $vmssConfig = Add-AzVmssNetworkInterfaceConfiguration - VirtualMachineScaleSet $vmssConfig `
5679
+ - Name " nicconfig1" - Primary $true - IPConfiguration $ipCfg
5680
+
5681
+ # Configure OS
5682
+ $adminUsername = Get-ComputeTestResourceName ;
5683
+ $adminPassword = $PLACEHOLDER ;
5684
+ $vmssConfig = Set-AzVmssOSProfile - VirtualMachineScaleSet $vmssConfig `
5685
+ - ComputerNamePrefix " test" `
5686
+ - AdminUsername $adminUsername `
5687
+ - AdminPassword $adminPassword
5688
+
5689
+ # Configure the HealthExtension required for enabling the AutomaticZoneRebalancingPolicy
5690
+ $publicConfig = @ {
5691
+ " protocol" = " http" ;
5692
+ " port" = 80 ;
5693
+ " requestPath" = " /health" ;
5694
+ }
5695
+ $vmssConfig = Add-AzVmssExtension - VirtualMachineScaleSet $vmssConfig `
5696
+ - Name " ApplicationHealthExtension" `
5697
+ - Publisher " Microsoft.ManagedServices" `
5698
+ - Type " ApplicationHealthLinux" `
5699
+ - TypeHandlerVersion " 1.0" `
5700
+ - Setting $publicConfig `
5701
+ - AutoUpgradeMinorVersion $true
5702
+
5703
+ # Assert the AutomaticZoneRebalancingPolicy from the vmssConfig
5704
+ Assert-True { $vmssConfig.ResiliencyPolicy.AutomaticZoneRebalancingPolicy.Enabled };
5705
+ Assert-AreEqual $vmssConfig.ResiliencyPolicy.AutomaticZoneRebalancingPolicy.RebalanceStrategy $rebalanceStrategy
5706
+ Assert-AreEqual $vmssConfig.ResiliencyPolicy.AutomaticZoneRebalancingPolicy.RebalanceBehavior $rebalanceBehavior
5707
+
5708
+ # Create the vmss using the config
5709
+ $vmssResult = New-AzVmss - ResourceGroupName $rgname - VMScaleSetName $vmssName - VirtualMachineScaleSet $vmssConfig ;
5710
+
5711
+ # Assert the AutomaticZoneRebalancingPolicy from the vmssResult
5712
+ Assert-True { $vmssResult.ResiliencyPolicy.AutomaticZoneRebalancingPolicy.Enabled };
5713
+ Assert-AreEqual $vmssResult.ResiliencyPolicy.AutomaticZoneRebalancingPolicy.RebalanceStrategy $rebalanceStrategy
5714
+ Assert-AreEqual $vmssResult.ResiliencyPolicy.AutomaticZoneRebalancingPolicy.RebalanceBehavior $rebalanceBehavior
5620
5715
5716
+ # Update vmss
5717
+ $vmssUpdate = Update-AzVmss - ResourceGroupName $rgname - Name $vmssName - EnableAutomaticZoneRebalance $false
5621
5718
5719
+ # Assert the AutomaticZoneRebalancingPolicy is now disabled
5720
+ Assert-False { $vmssUpdate.ResiliencyPolicy.AutomaticZoneRebalancingPolicy.Enabled };
5622
5721
}
5623
5722
finally
5624
5723
{
0 commit comments