@@ -6,17 +6,95 @@ param customScriptExtensionFiles array
66
77param location string
88param vmssSku string
9+ @minValue (0 )
10+ param minInstances int
911@minValue (1 )
1012param maxInstances int
1113param nsgName string
1214param vnetName string
1315param vmssName string
1416param nicName string
1517param ipConfigName string
18+ param loadBalancerName string
1619param autoscaleName string
1720param adminUsername string
1821@secure ()
1922param adminPassword string
23+ param addLoadBalancer bool
24+
25+ resource ipConfig 'Microsoft.Network/publicIPAddresses@2022-05-01' = if (addLoadBalancer ) {
26+ name : ipConfigName
27+ location : location
28+ sku : {
29+ name : 'Standard'
30+ }
31+ properties : {
32+ publicIPAllocationMethod : 'Static'
33+ publicIPAddressVersion : 'IPv4'
34+ }
35+ }
36+
37+ var frontendIPConfigurationName = '${loadBalancerName }-fipc'
38+ var backendAddressPoolName = '${loadBalancerName }-bap'
39+
40+ resource loadBalancer 'Microsoft.Network/loadBalancers@2023-05-01' = if (addLoadBalancer ) {
41+ name : loadBalancerName
42+ location : location
43+ sku : {
44+ name : 'Standard'
45+ }
46+ properties : {
47+ frontendIPConfigurations : [
48+ {
49+ name : frontendIPConfigurationName
50+ properties : {
51+ publicIPAddress : {
52+ id : ipConfig .id
53+ }
54+ }
55+ }
56+ ]
57+ backendAddressPools : [
58+ {
59+ name : backendAddressPoolName
60+ properties : {}
61+ }
62+ ]
63+ inboundNatRules : [
64+ {
65+ name : '${loadBalancerName }-rdp-inr'
66+ properties : {
67+ frontendIPConfiguration : {
68+ id : resourceId ('Microsoft.Network/loadBalancers/frontendIPConfigurations' , loadBalancerName , frontendIPConfigurationName )
69+ }
70+ backendAddressPool : {
71+ id : resourceId ('Microsoft.Network/loadBalancers/backendAddressPools' , loadBalancerName , backendAddressPoolName )
72+ }
73+ protocol : 'Tcp'
74+ backendPort : 3389
75+ frontendPortRangeStart : 50000
76+ frontendPortRangeEnd : 60000
77+ }
78+ }
79+ ]
80+ outboundRules : [
81+ {
82+ name : '${loadBalancerName }-or'
83+ properties : {
84+ frontendIPConfigurations : [
85+ {
86+ id : resourceId ('Microsoft.Network/loadBalancers/frontendIPConfigurations' , loadBalancerName , frontendIPConfigurationName )
87+ }
88+ ]
89+ backendAddressPool : {
90+ id : resourceId ('Microsoft.Network/loadBalancers/backendAddressPools' , loadBalancerName , backendAddressPoolName )
91+ }
92+ protocol : 'All'
93+ }
94+ }
95+ ]
96+ }
97+ }
2098
2199resource nsg 'Microsoft.Network/networkSecurityGroups@2021-03-01' = {
22100 name : nsgName
@@ -26,7 +104,7 @@ resource nsg 'Microsoft.Network/networkSecurityGroups@2021-03-01' = {
26104 {
27105 name : 'AllowCorpNetPublicRdp'
28106 properties : {
29- priority : 100
107+ priority : 2000
30108 protocol : 'Tcp'
31109 access : 'Allow'
32110 direction : 'Inbound'
@@ -39,7 +117,7 @@ resource nsg 'Microsoft.Network/networkSecurityGroups@2021-03-01' = {
39117 {
40118 name : 'AllowCorpNetSawRdp'
41119 properties : {
42- priority : 101
120+ priority : 2001
43121 protocol : 'Tcp'
44122 access : 'Allow'
45123 direction : 'Inbound'
@@ -128,11 +206,11 @@ resource vmss 'Microsoft.Compute/virtualMachineScaleSets@2021-11-01' = {
128206 subnet : {
129207 id : vnet .properties .subnets [0 ].id
130208 }
131- /* Enable a public IP address so you can RDP into an instance for debugging purposes.
132- publicIPAddressConfiguration: {
133- name: ipConfigName
134- }
135- */
209+ loadBalancerBackendAddressPools : addLoadBalancer ? [
210+ {
211+ id : loadBalancer . properties . backendAddressPools [ 0 ]. id
212+ }
213+ ] : []
136214 }
137215 }
138216 ]
@@ -222,7 +300,7 @@ var eventCounterRules = [for event in eventCounters: {
222300 direction : 'Increase'
223301 type : 'ExactCount'
224302 cooldown : 'PT1M'
225- value : '5'
303+ value : string ( min ( maxInstances , 5 ))
226304 }
227305}]
228306
@@ -237,8 +315,8 @@ resource autoscale 'Microsoft.Insights/autoscalesettings@2015-04-01' = {
237315 {
238316 name : 'default'
239317 capacity : {
240- default : '0'
241- minimum : '0'
318+ default : string ( minInstances )
319+ minimum : string ( minInstances )
242320 maximum : string (maxInstances )
243321 }
244322 rules : concat (eventCounterRules , [
@@ -258,7 +336,7 @@ resource autoscale 'Microsoft.Insights/autoscalesettings@2015-04-01' = {
258336 direction : 'Increase'
259337 type : 'ChangeCount'
260338 cooldown : 'PT1M'
261- value : '5'
339+ value : string ( min ( maxInstances - minInstances , 5 ))
262340 }
263341 }
264342 {
@@ -277,7 +355,7 @@ resource autoscale 'Microsoft.Insights/autoscalesettings@2015-04-01' = {
277355 direction : 'Decrease'
278356 type : 'ChangeCount'
279357 cooldown : 'PT2M'
280- value : '10'
358+ value : string ( min ( maxInstances - minInstances , 10 ))
281359 }
282360 }
283361 ])
0 commit comments