# connect to your azure subscription Connect-AZAccount # First we need a resouce group to put it all together $rgName = "RG-LoadBalanceer" $location = "North Europe" New-AZResourceGroup -name $rgName -Location $location # then we create a public IP for the load balancer $publicIp = New-AZPublicIpAddress ` -ResourceGroupName $rgName ` -Name 'myPublicIP' ` -Location $location ` -AllocationMethod static ` -SKU Standard # Create front-end IP $feIP = New-AZLoadBalancerFrontendIpConfig -Name 'myFrontEndPool' -PublicIpAddress $publicIp # Create back-end address pool $bepool = New-AZLoadBalancerBackendAddressPoolConfig -Name 'myBackEndPool' # create a health prope $probe = New-AZLoadBalancerProbeConfig ` -Name 'myHealthProbe' ` -Protocol Http -Port 80 ` -RequestPath / -IntervalInSeconds 360 -ProbeCount 5 # Create a load balancer rule $rule = New-AZLoadBalancerRuleConfig ` -Name 'myLoadBalancerRuleWeb' -Protocol Tcp ` -Probe $probe -FrontendPort 80 -BackendPort 80 ` -FrontendIpConfiguration $feip ` -BackendAddressPool $bePool # Create the NAT rules $natrule1 = New-AZLoadBalancerInboundNatRuleConfig ` -Name 'myLoadBalancerRDP1' ` -FrontendIpConfiguration $feip ` -Protocol tcp -FrontendPort 4221 ` -BackendPort 3389 $natrule2 = New-AZLoadBalancerInboundNatRuleConfig ` -Name 'myLoadBalancerRDP2' ` -FrontendIpConfiguration $feip ` -Protocol tcp ` -FrontendPort 4222 ` -BackendPort 3389 # Create load balancer $lb = New-AZLoadBalancer ` -ResourceGroupName $rgName ` -Name 'MyLoadBalancer' ` -SKU Standard ` -Location $location ` -FrontendIpConfiguration $feip ` -BackendAddressPool $bepool ` -Probe $probe ` -LoadBalancingRule $rule ` -InboundNatRule $natrule1,$natrule2 # Create a virtual network # Create subnet config $subnetConfig = New-AZVirtualNetworkSubnetConfig ` -Name "mySubnet" ` -AddressPrefix 10.0.2.0/24 # Create the virtual network $vnet = New-AZVirtualNetwork ` -ResourceGroupName $rgName ` -Location $location ` -Name "myVnet" ` -AddressPrefix 10.0.0.0/16 ` -Subnet $subnetConfig # Create NICs # Create NIC for VM1 $nicVM1 = New-AZNetworkInterface ` -ResourceGroupName $rgName ` -Location $location ` -Name 'MyNic1' ` -PublicIpAddress $RdpPublicIP_1 ` -LoadBalancerBackendAddressPool $bepool ` -NetworkSecurityGroup $nsg ` -LoadBalancerInboundNatRule $natrule1 ` -subnet $vnet.Subnets[0] # Create NIC for VM2 $nicVM2 = New-AZNetworkInterface ` -ResourceGroupName $rgName ` -Location $location ` -Name 'MyNic2' ` -PublicIpAddress $RdpPublicIP_2 ` -LoadBalancerBackendAddressPool $bepool ` -NetworkSecurityGroup $nsg ` -LoadBalancerInboundNatRule $natrule2 ` -subnet $vnet.Subnets[0] # Create virtual machines # first get cerditials $cred = Get-Credential # ############## VM1 ############### # Create a virtual machine configuration $vmConfig = New-AZVMConfig -VMName 'myVM1' -VMSize Standard_DS1_v2 ` | Set-AZVMOperatingSystem -Windows -ComputerName 'myVM1' -Credential $cred ` | Set-AZVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2019-Datacenter -Version latest ` | Add-AZVMNetworkInterface -Id $nicVM1.Id # Create a virtual machine $vm1 = New-AZVM -ResourceGroupName $rgName -Zone 1 -Location $location -VM $vmConfig # ############## VM2 ############### # Create a virtual machine configuration $vmConfig = New-AZVMConfig -VMName 'myVM2' -VMSize Standard_DS1_v2 ` | Set-AZVMOperatingSystem -Windows -ComputerName 'myVM2' -Credential $cred ` | Set-AZVMSourceImage -PublisherName MicrosoftWindowsServer -Offer WindowsServer -Skus 2019-Datacenter -Version latest ` | Add-AZVMNetworkInterface -Id $nicVM2.Id # Create a virtual machine $vm2 = New-AZVM -ResourceGroupName $rgName -Zone 2 -Location $location -VM $vmConfig