Skip to content

Commit 0a065a4

Browse files
committed
feat(CGNSPC-1655): Azure China - Add support for availability zones, Change the default disk size to 200 GB
1 parent e09ea44 commit 0a065a4

12 files changed

Lines changed: 328 additions & 129 deletions

File tree

china/azure/marketplace-gateway-load-balancer/createUiDefinition.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -796,7 +796,7 @@
796796
"type": "Microsoft.Common.TextBox",
797797
"label": "Additional disk space (GB)",
798798
"defaultValue": "0",
799-
"toolTip": "Additional disk space (in GB), initial disk size is 100 GB.",
799+
"toolTip": "Additional disk space (in GB), initial disk size is 200 GB.",
800800
"constraints": {
801801
"regex": "^([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-2][0-9][0-9][0-9]|3[0-8][0-9][0-9]|399[0-5])$",
802802
"validationMessage": "Select a number between 0 and 3995"

china/azure/marketplace-gateway-load-balancer/mainTemplate.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1250,9 +1250,9 @@
12501250
"subnet1Name": "[parameters('subnet1Name')]",
12511251
"storageAccountName": "[concat('bootdiag', uniqueString(variables('resourceGroup').id, deployment().name))]",
12521252
"storageAccountType": "Standard_LRS",
1253-
"diskSize100GB": 100,
1253+
"baseDiskSizeGB": 200,
12541254
"additionalDiskSizeGB": "[if(contains('R8110 R8120', variables('osVersion')), 0, parameters('additionalDiskSizeGB'))]",
1255-
"diskSizeGB": "[add(variables('additionalDiskSizeGB'), variables('diskSize100GB'))]",
1255+
"diskSizeGB": "[add(variables('additionalDiskSizeGB'), variables('baseDiskSizeGB'))]",
12561256
"vxlanParametersForR82": "kernel_parameters:\n sim:\n - sim_enable_vxlan=3\n - sim_enable_gre=3\n fw: \n - fw_enable_vxlan=1\n - fw_enable_gre=1",
12571257
"cloudConfigParams":[
12581258
"[concat('installationType=\\\"', variables('installationType'), '\\\"')]",

china/azure/marketplace-ha/createUiDefinition.json

Lines changed: 51 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,55 @@
11
{
22
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
3-
"handler": "Microsoft.Compute.MultiVm",
3+
"handler": "Microsoft.Azure.CreateUIDef",
44
"version": "0.1.2-preview",
55
"parameters": {
66
"basics": [
7+
{
8+
"name": "zoneInfo",
9+
"type": "Microsoft.Solutions.ArmApiControl",
10+
"request": {
11+
"method": "GET",
12+
"path": "[concat('/subscriptions/', subscription().subscriptionId, '/locations/?api-version=2022-12-01')]"
13+
}
14+
},
15+
{
16+
"name": "availabilityZonesChoice",
17+
"type": "Microsoft.Common.OptionsGroup",
18+
"label": "Use availability zones",
19+
"defaultValue": "No",
20+
"toolTip": "Deploy the Cluster VMs across availability zones for high availability and fault tolerance.",
21+
"constraints": {
22+
"allowedValues": [
23+
{ "label": "No", "value": "No" },
24+
{ "label": "Yes", "value": "Yes" }
25+
]
26+
},
27+
"visible": "[and(not(empty(basics('zoneInfo').value)), greater(int(if(greater(length(filter(basics('zoneInfo').value, (r) => equals(r.name, location()))), 0), if(greater(length(first(filter(basics('zoneInfo').value, (r) => equals(r.name, location()))).availabilityZoneMappings), 0), string(length(first(filter(basics('zoneInfo').value, (r) => equals(r.name, location()))).availabilityZoneMappings)), '0'), '0')), 0))]"
28+
},
29+
{
30+
"name": "zonesDropdown",
31+
"type": "Microsoft.Common.DropDown",
32+
"label": "Choose zones",
33+
"toolTip": "Select availability zones for deployment.",
34+
"multiselect": true,
35+
"selectAll": false,
36+
"filter": true,
37+
"defaultValue": ["1", "2"],
38+
"constraints": {
39+
"allowedValues": "[map(range(1, int(string(length(first(filter(basics('zoneInfo').value, (r) => equals(r.name, location()))).availabilityZoneMappings)))), (item) => parse(concat('{\"label\":\"Zone ', string(item), '\",\"value\":\"', string(item), '\"}')))]",
40+
"required": false
41+
},
42+
"visible": "[equals(basics('availabilityZonesChoice'), 'Yes')]"
43+
},
44+
{
45+
"name": "zonesTooMany",
46+
"type": "Microsoft.Common.InfoBox",
47+
"visible": "[and(equals(basics('availabilityZonesChoice'), 'Yes'), greater(length(coalesce(basics('zonesDropdown'), parse('[]'))), 2))]",
48+
"options": {
49+
"icon": "Error",
50+
"text": "HA cluster deploys exactly 2 VMs. Please select at most 2 availability zones."
51+
}
52+
},
753
{
854
"name": "basics settings text block",
955
"type": "Microsoft.Common.TextBlock",
@@ -63,7 +109,7 @@
63109
{
64110
"name": "InfoAzureAdminGuide",
65111
"type": "Microsoft.Common.InfoBox",
66-
"visible": "true",
112+
"visible": "[not(equals(steps('chkp-advanced').adminShell, '__dependency__'))]",
67113
"options": {
68114
"icon": "Info",
69115
"text": "See <a href='https://sc1.checkpoint.com/documents/IaaS/WebAdminGuides/EN/CP_CloudGuard_Network_for_Azure_HA_Cluster/Content/Topics-Azure-HA/Introduction.htm' target='_blank'>CloudGuard Network for Azure administration guide</a> for detailed deployment and configuration steps "
@@ -579,26 +625,6 @@
579625
]
580626
}
581627
},
582-
{
583-
"name": "availabilityOptions",
584-
"type": "Microsoft.Common.DropDown",
585-
"label": "Availability options",
586-
"defaultValue": "Availability Set",
587-
"toolTip": "Use replicated Cluster VMs in Availability Set or Availability Zones. Note that the load balancers and their IP addresses will be zone redundant in any case.",
588-
"visible": "[contains(' chinaeast chinaeast2 chinaeast3 chinanorth chinanorth2 chinanorth3 australiaeast brazilsouth canadacentral centralus eastasia eastus eastus2 francecentral germanywestcentral japaneast koreacentral northeurope norwayeast southafricanorth southcentralus southeastasia swedencentral uksouth usgovvirginia westeurope westus2 westus3 switzerlandnorth qatarcentral centralindia uaenorth italynorth ', concat(' ', location(), ' '))]",
589-
"constraints": {
590-
"allowedValues": [
591-
{
592-
"label": "Availability Set",
593-
"value": "Availability Set"
594-
},
595-
{
596-
"label": "Availability Zones",
597-
"value": "Availability Zones"
598-
}
599-
]
600-
}
601-
},
602628
{
603629
"name": "bootstrapScript",
604630
"type": "Microsoft.Common.FileUpload",
@@ -688,7 +714,7 @@
688714
"type": "Microsoft.Common.TextBox",
689715
"label": "Additional disk space (GB)",
690716
"defaultValue": "0",
691-
"toolTip": "Additional disk space (in GB), initial disk size is 100 GB.",
717+
"toolTip": "Additional disk space (in GB), initial disk size is 200 GB.",
692718
"constraints": {
693719
"regex": "^([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-2][0-9][0-9][0-9]|3[0-8][0-9][0-9]|399[0-5])$",
694720
"validationMessage": "Select a number between 0 and 3995"
@@ -1284,7 +1310,8 @@
12841310
"diskType": "[if(contains('R81.10' , steps('chkp').cloudGuardVersion) , steps('chkp-advanced').VMDiskTypeOldVersions , steps('chkp-advanced').VMDiskType)]",
12851311
"managedSystemAssigned": "[steps('chkp-advanced').managedSystemAssigned]",
12861312
"sourceImageVhdUri": "[coalesce(steps('chkp-advanced').sourceImageVhdUri, 'noCustomUri')]",
1287-
"availabilityOptions": "[steps('chkp-advanced').availabilityOptions]",
1313+
"availabilityZones": "[if(equals(basics('availabilityZonesChoice'), 'Yes'), if(greater(length(coalesce(basics('zonesDropdown'), parse('[]'))), 0), basics('zonesDropdown'), parse('[\"1\", \"2\"]')), parse('[]'))]",
1314+
"availabilityZonesChoice": "[basics('availabilityZonesChoice')]",
12881315
"customMetrics": "[steps('chkp-advanced').customMetrics]",
12891316
"floatingIP": "[steps('chkp-advanced').floatingIP]",
12901317
"publicIPPrefix": "[steps('chkp-advanced').publicIPPrefix]",

china/azure/marketplace-ha/mainTemplate.json

Lines changed: 16 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -266,15 +266,22 @@
266266
"description": "The URI of the blob containing the development image"
267267
}
268268
},
269-
"availabilityOptions": {
269+
"availabilityZones": {
270+
"type": "array",
271+
"defaultValue": [],
272+
"metadata": {
273+
"description": "List of availability zones. When 'availabilityZonesChoice' is set to 'Yes' and this list is empty, defaults to zones 1 and 2."
274+
}
275+
},
276+
"availabilityZonesChoice": {
270277
"type": "string",
278+
"defaultValue": "No",
271279
"allowedValues": [
272-
"Availability Set",
273-
"Availability Zones"
280+
"No",
281+
"Yes"
274282
],
275-
"defaultValue": "Availability Set",
276283
"metadata": {
277-
"description": "Use replicated Cluster VMs in Availability Set or Availability Zones"
284+
"description": "Enable Availability Zones for HA Cluster. 'Yes' to use Availability Zones, or 'No' to deploy without zones."
278285
}
279286
},
280287
"_artifactsLocation": {
@@ -1201,8 +1208,8 @@
12011208
"isBlink": true,
12021209
"storageAccountName": "[concat('bootdiag', uniqueString(resourceGroup().id, deployment().name))]",
12031210
"storageAccountType": "Standard_LRS",
1204-
"diskSize100GB": 100,
1205-
"diskSizeGB": "[add(parameters('additionalDiskSizeGB'), variables('diskSize100GB'))]",
1211+
"baseDiskSizeGB": 200,
1212+
"diskSizeGB": "[add(parameters('additionalDiskSizeGB'), variables('baseDiskSizeGB'))]",
12061213
"imageOffer": "[concat('check-point-cg-', toLower(variables('osVersion')))]",
12071214
"imagePublisher": "1740992136172",
12081215
"imageReferenceBYOL": {
@@ -1330,7 +1337,7 @@
13301337
"availabilitySetProperty": {
13311338
"id": "[resourceId('Microsoft.Compute/availabilitySets', variables('availabilitySetName'))]"
13321339
},
1333-
"useAZ": "[and(contains(variables('availabilityZonesLocations'), variables('location')), equals(parameters('availabilityOptions'), 'Availability Zones'))]",
1340+
"useAZ": "[equals(parameters('availabilityZonesChoice'), 'Yes')]",
13341341
"customMetrics": "[parameters('customMetrics')]",
13351342
"emptyString": "none",
13361343
"ipPrefixNewName": "[concat(parameters('vmName'), '-ipprefix')]",
@@ -1798,7 +1805,7 @@
17981805
],
17991806
"location": "[variables('location')]",
18001807
"name": "[concat(parameters('vmName'), copyIndex(1))]",
1801-
"zones": "[if(variables('useAZ'), array(copyIndex(1)), json('null'))]",
1808+
"zones": "[if(variables('useAZ'), if(greater(length(parameters('availabilityZones')), 0), array(parameters('availabilityZones')[mod(copyIndex(), length(parameters('availabilityZones')))]), array(string(add(copyIndex(), 1)))), json('null'))]",
18021809
"copy": {
18031810
"name": "virtualMachineCopy",
18041811
"count": "[variables('count')]"

china/azure/marketplace-management/createUiDefinition.json

Lines changed: 39 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,44 @@
11
{
22
"$schema": "https://schema.management.azure.com/schemas/0.1.2-preview/CreateUIDefinition.MultiVm.json#",
3-
"handler": "Microsoft.Compute.MultiVm",
3+
"handler": "Microsoft.Azure.CreateUIDef",
44
"version": "0.1.2-preview",
55
"parameters": {
66
"basics": [
7+
{
8+
"name": "zoneInfo",
9+
"type": "Microsoft.Solutions.ArmApiControl",
10+
"request": {
11+
"method": "GET",
12+
"path": "[concat('/subscriptions/', subscription().subscriptionId, '/locations/?api-version=2022-12-01')]"
13+
}
14+
},
15+
{
16+
"name": "availabilityZonesChoice",
17+
"type": "Microsoft.Common.OptionsGroup",
18+
"label": "Use availability zones",
19+
"defaultValue": "No",
20+
"toolTip": "Deploy the Management VM in an availability zone for high availability and fault tolerance.",
21+
"constraints": {
22+
"allowedValues": [
23+
{ "label": "No", "value": "No" },
24+
{ "label": "Yes", "value": "Yes" }
25+
]
26+
},
27+
"visible": "[and(not(empty(basics('zoneInfo').value)), greater(int(if(greater(length(filter(basics('zoneInfo').value, (r) => equals(r.name, location()))), 0), if(greater(length(first(filter(basics('zoneInfo').value, (r) => equals(r.name, location()))).availabilityZoneMappings), 0), string(length(first(filter(basics('zoneInfo').value, (r) => equals(r.name, location()))).availabilityZoneMappings)), '0'), '0')), 0))]"
28+
},
29+
{
30+
"name": "zoneDropdown",
31+
"type": "Microsoft.Common.DropDown",
32+
"label": "Availability zone",
33+
"toolTip": "Select the availability zone for the Management VM.",
34+
"filter": true,
35+
"defaultValue": "Zone 1",
36+
"constraints": {
37+
"allowedValues": "[map(range(1, int(string(length(first(filter(basics('zoneInfo').value, (r) => equals(r.name, location()))).availabilityZoneMappings)))), (item) => parse(concat('{\"label\":\"Zone ', string(item), '\",\"value\":\"', string(item), '\"}')))]",
38+
"required": false
39+
},
40+
"visible": "[and(equals(basics('availabilityZonesChoice'), 'Yes'), not(equals(steps('chkp-advanced').adminShell, '__dependency__')))]"
41+
},
742
{
843
"name": "chkp refrence architecture",
944
"type": "Microsoft.Common.TextBlock",
@@ -235,18 +270,6 @@
235270
"sku": "mgmt-byol"
236271
},
237272
"count": 1
238-
},
239-
{
240-
"name": "managementGUIClientNetwork",
241-
"type": "Microsoft.Common.TextBox",
242-
"label": "Allow SmartConsole connections from these networks",
243-
"toolTip": "Allow SmartConsole connections from the following CIDR networks, for example: 192.168.1.0/26",
244-
"constraints": {
245-
"required": true,
246-
"regex": "^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\\/([0-9]|[1-2][0-9]|3[0-2]))$",
247-
"validationMessage": "Enter a valid IPv4 network CIDR"
248-
},
249-
"visible": "[equals(steps('chkp').installationType, 'management')]"
250273
}
251274
]
252275
},
@@ -520,7 +543,7 @@
520543
"type": "Microsoft.Common.TextBox",
521544
"label": "Additional disk space (GB)",
522545
"defaultValue": "0",
523-
"toolTip": "Additional disk space (in GB), initial disk size is 100 GB.",
546+
"toolTip": "Additional disk space (in GB), initial disk size is 200 GB.",
524547
"constraints": {
525548
"regex": "^([0-9]|[1-9][0-9]|[1-9][0-9][0-9]|[1-2][0-9][0-9][0-9]|3[0-8][0-9][0-9]|399[0-5])$",
526549
"validationMessage": "Select a number between 0 and 3995"
@@ -867,6 +890,8 @@
867890
}
868891
],
869892
"outputs": {
893+
"availabilityZones": "[if(equals(basics('availabilityZonesChoice'), 'Yes'), parse(concat('[\"', coalesce(basics('zoneDropdown'), '1'), '\"]')), parse('[]'))]",
894+
"availabilityZonesChoice": "[basics('availabilityZonesChoice')]",
870895
"location": "[location()]",
871896
"cloudGuardVersion": "[concat(steps('chkp').cloudGuardVersion, ' - ', coalesce(steps('chkp').R80Offer, 'Bring Your Own License'))]",
872897
"adminPassword": "[basics('auth').password]",

china/azure/marketplace-management/mainTemplate.json

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -257,6 +257,24 @@
257257
"description": "The URI of the blob containing the development image"
258258
}
259259
},
260+
"availabilityZones": {
261+
"type": "array",
262+
"defaultValue": [],
263+
"metadata": {
264+
"description": "List of availability zones. When 'availabilityZonesChoice' is set to 'Yes', the VM will be deployed in the specified zone."
265+
}
266+
},
267+
"availabilityZonesChoice": {
268+
"type": "string",
269+
"defaultValue": "No",
270+
"allowedValues": [
271+
"No",
272+
"Yes"
273+
],
274+
"metadata": {
275+
"description": "Enable Availability Zones for the Management VM. 'Yes' to use Availability Zones, or 'No' to deploy without zones."
276+
}
277+
},
260278
"_artifactsLocation": {
261279
"type": "string",
262280
"metadata": {
@@ -1138,10 +1156,11 @@
11381156
"serialConsoleIps": "[if(contains(variables('serialConsoleGeographies'),variables('location')),variables('serialConsoleGeographies')[variables('location')],createArray())]",
11391157
"storageAccountIps": "[concat(variables('SerialConsoleIps'),parameters('storageAccountAdditionalIps'))]",
11401158
"isBlink": "[bool('false')]",
1159+
"useAZ": "[equals(parameters('availabilityZonesChoice'), 'Yes')]",
11411160
"storageAccountName": "[concat('bootdiag', uniqueString(resourceGroup().id, deployment().name))]",
11421161
"storageAccountType": "Standard_LRS",
1143-
"diskSize100GB": 100,
1144-
"diskSizeGB": "[add(parameters('additionalDiskSizeGB'), variables('diskSize100GB'))]",
1162+
"baseDiskSizeGB": 200,
1163+
"diskSizeGB": "[add(parameters('additionalDiskSizeGB'), variables('baseDiskSizeGB'))]",
11451164
"customData": "[concat('#!/usr/bin/python3 /etc/cloud_config.py\n', '\n', 'installationType=\"', parameters('installationType'), '\"', '\n', 'allowUploadDownload=\"', variables('allowUploadDownload'), '\"', '\n', 'osVersion=\"', variables('osVersion'), '\"', '\n', 'templateName=\"', variables('templateName'), '\"', '\n', 'isBlink=\"', variables('isBlink'), '\"', '\n', 'templateVersion=\"', variables('templateVersion'), '\"', '\n', 'bootstrapScript64=\"', variables('bootstrapScript64'), '\"', '\n', 'location=\"', variables('location'), '\"', '\n', 'managementGUIClientNetwork=\"', variables('managementGUIClientNetwork'), '\"', '\n', 'enableApi=\"', parameters('enableApi'), '\"', '\n', 'adminShell=\"', parameters('adminShell'), '\"', '\n', 'MaintenanceModePassword=\"', parameters('MaintenanceModePasswordHash'), '\"', '\n', 'passwordHash=\"', parameters('SerialConsolePasswordHash'), '\"', '\n')]",
11461165
"customData64": "[base64(variables('customData'))]",
11471166
"imageOffer": "[concat('check-point-cg-', toLower(variables('osVersion')))]",
@@ -1664,6 +1683,7 @@
16641683
],
16651684
"location": "[variables('location')]",
16661685
"name": "[parameters('vmName')]",
1686+
"zones": "[if(variables('useAZ'), if(greater(length(parameters('availabilityZones')), 0), parameters('availabilityZones'), json('[\"1\"]')), json('null'))]",
16671687
"plan": "[if(equals(parameters('sourceImageVhdUri'),'noCustomUri'), variables('plan'), json('null'))]",
16681688
"identity": "[variables('identity')]",
16691689
"properties": {

0 commit comments

Comments
 (0)