From 824be11c450f93b56e48c965f2680147e53f9d3a Mon Sep 17 00:00:00 2001 From: jvhoof Date: Sun, 31 May 2026 22:25:26 +0000 Subject: [PATCH] Update report --- FortiGate/A-Single-VM/azuredeploy.json | 191 ++++-- FortiGate/A-Single-VM/createUiDefinition.json | 554 ++++++++++++---- .../Active-Active-ELB-ILB/azuredeploy.json | 198 ++++-- .../createUiDefinition.json | 589 ++++++++++++++---- .../Active-Passive-ELB-ILB/azuredeploy.json | 196 ++++-- .../createUiDefinition.json | 541 ++++++++++++---- FortiGate/Active-Passive-SDN/azuredeploy.json | 203 ++++-- .../createUiDefinition.json | 548 +++++++++++++--- 8 files changed, 2344 insertions(+), 676 deletions(-) diff --git a/FortiGate/A-Single-VM/azuredeploy.json b/FortiGate/A-Single-VM/azuredeploy.json index 72aa6ac8..35ccd0af 100644 --- a/FortiGate/A-Single-VM/azuredeploy.json +++ b/FortiGate/A-Single-VM/azuredeploy.json @@ -27,12 +27,34 @@ "description": "Custom naming for the deployed FortiGate resources. This will override the automatic generation based on the prefix for the FortiGate name." } }, - "fortiGateLicenseType": { + "fortiGateImageSKU_x64": { "type": "string", - "defaultValue": "fortinet_fg-vm_byol", + "defaultValue": "fortinet_fg-vm", "allowedValues": [ - "fortinet_fg-vm_byol", - "fortinet_fg-vm_payg" + "fortinet_fg-vm", + "fortinet_fg-vm_payg_2023" + ], + "metadata": { + "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately" + } + }, + "fortiGateImageSKU_x64_g2": { + "type": "string", + "defaultValue": "fortinet_fg-vm_g2", + "allowedValues": [ + "fortinet_fg-vm_g2", + "fortinet_fg-vm_payg_2023_g2" + ], + "metadata": { + "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately" + } + }, + "fortiGateImageSKU_arm64": { + "type": "string", + "defaultValue": "fortinet_fg-vm_arm64", + "allowedValues": [ + "fortinet_fg-vm_arm64", + "fortinet_fg-vm_payg_2023_arm64" ], "metadata": { "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately" @@ -43,8 +65,8 @@ "defaultValue": "x64", "allowedValues": [ "x64", - "_g2", - "_arm64" + "x64_g2", + "arm64" ], "metadata": { "description": "Indicates the instance Architecture of the VM deployment. Intel/AMD, Intel/AMD gen2 VM or ARM" @@ -52,21 +74,81 @@ }, "fortiGateImageVersion_x64": { "type": "string", - "defaultValue": "7.4.11", + "defaultValue": "7.4.7", "allowedValues": [ - "7.4.11", - "7.2.13", - "7.0.19" + "latest", + "7.6.0", + "7.4.9", + "7.4.8", + "7.4.7", + "7.4.6", + "7.4.5", + "7.4.4", + "7.4.3", + "7.4.2", + "7.4.1", + "7.4.0", + "7.2.12", + "7.2.11", + "7.2.10", + "7.2.9", + "7.2.8", + "7.2.7", + "7.2.6", + "7.2.5", + "7.2.4", + "7.2.3", + "7.2.2", + "7.2.1", + "7.2.0", + "7.0.17", + "7.0.15", + "7.0.14", + "7.0.13", + "7.0.12", + "7.0.11", + "7.0.10", + "7.0.9", + "7.0.8", + "7.0.6", + "7.0.5", + "7.0.4", + "7.0.3", + "7.0.2", + "7.0.1", + "7.0.0", + "6.4.16", + "6.4.15", + "6.4.13", + "6.4.12", + "6.4.11", + "6.4.10", + "6.4.9", + "6.4.8", + "6.4.7", + "6.4.6", + "6.4.5", + "6.4.3", + "6.4.2", + "6.4.0", + "6.2.5", + "6.2.4", + "6.2.2", + "6.2.0" ], "metadata": { - "description": "Select the image version supporting Generation 1 VMs" + "description": "Select the image version" } }, "fortiGateImageVersion_x64_g2": { "type": "string", - "defaultValue": "7.6.6", + "defaultValue": "7.6.200", "allowedValues": [ - "7.6.6" + "latest", + "7.6.200", + "7.6.100", + "7.6.4", + "7.6.3" ], "metadata": { "description": "Select the image version supporting Generation 2 VMs" @@ -74,14 +156,31 @@ }, "fortiGateImageVersion_arm64": { "type": "string", - "defaultValue": "7.6.6", + "defaultValue": "7.6.2", "allowedValues": [ - "7.6.6", + "latest", + "7.6.5", + "7.6.4", + "7.6.3", + "7.6.2", + "7.6.1", + "7.6.0", "7.4.11", - "7.2.13" + "7.4.9", + "7.4.8", + "7.4.7", + "7.4.6", + "7.4.5", + "7.4.4", + "7.4.3", + "7.2.12", + "7.2.11", + "7.2.10", + "7.2.9", + "7.2.8" ], "metadata": { - "description": "Select the image version supporting ARM64 VMs" + "description": "Select the image version" } }, "fortiGateAdditionalCustomData": { @@ -93,7 +192,7 @@ }, "instanceType_x64": { "type": "string", - "defaultValue": "Standard_D4s_v4", + "defaultValue": "Standard_D2s_v3", "allowedValues": [ "Standard_F2s", "Standard_F4s", @@ -165,7 +264,7 @@ }, "instanceType_x64_g2": { "type": "string", - "defaultValue": "Standard_D4s_v5", + "defaultValue": "Standard_D2s_v6", "allowedValues": [ "Standard_D2_v4", "Standard_D4_v4", @@ -254,7 +353,7 @@ }, "instanceType_arm64": { "type": "string", - "defaultValue": "Standard_D4ps_v6", + "defaultValue": "Standard_D2ps_v6", "allowedValues": [ "Standard_D2ps_v6", "Standard_D4ps_v6", @@ -534,17 +633,6 @@ "description": "By default, the deployment will use Azure Marketplace images. In specific cases, using BYOL custom FortiGate images can be deployed from support.fortinet.com." } }, - "customVHDSource": { - "type": "string", - "defaultValue": "fortinetsite", - "allowedValues": [ - "fortinetsite", - "marketplace" - ], - "metadata": { - "description": "Select fortinetsite if the BYOL FortiGate image was downloaded from support.fortinet.com. Select marketplace if the image originates from the Azure Marketplace." - } - }, "location": { "type": "string", "defaultValue": "[resourceGroup().location]", @@ -567,12 +655,11 @@ }, "variables": { "imagePublisher": "fortinet", - "imageOffer": "fortinet_fortigate-vm", - "VMInstanceArchitecture": "[if(equals(parameters('fortiGateInstanceArchitecture'),'x64'),'',parameters('fortiGateInstanceArchitecture'))]", - "fortiGateImageVersion": "[if(equals(parameters('fortiGateInstanceArchitecture'), '_arm64'), parameters('fortiGateImageVersion_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),parameters('fortiGateImageVersion_x64_g2'),parameters('fortiGateImageVersion_x64')))]", - "fortiGateImageSKU": "[concat(parameters('fortiGateLicenseType'),'_',take(replace(variables('fortiGateImageVersion'), '.',''), 2),variables('VMInstanceArchitecture'))]", - "instanceType": "[if(equals(parameters('fortiGateInstanceArchitecture'), '_arm64'), parameters('instanceType_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),parameters('instanceType_x64_g2'),parameters('instanceType_x64')))]", - "diskControllerType": "[if(and(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),contains(parameters('instanceType_x64_g2'), '_v6')),'NVMe',json('null'))]", + "imageOffer": "fortinet_fortigate-vm_v5", + "fortiGateImageSKU": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('fortiGateImageSKU_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('fortiGateImageSKU_x64_g2'),parameters('fortiGateImageSKU_x64')))]", + "fortiGateImageVersion": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('fortiGateImageVersion_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('fortiGateImageVersion_x64_g2'),parameters('fortiGateImageVersion_x64')))]", + "instanceType": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('instanceType_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('instanceType_x64_g2'),parameters('instanceType_x64')))]", + "diskControllerType": "[if(and(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),contains(parameters('instanceType_x64_g2'), '_v6'),contains(parameters('fortiGateImageSKU_x64_g2'), '_g2')),'NVMe',json('null'))]", "availabilitySetName": "[if(equals(parameters('existingAvailabilitySetName'),''),concat(parameters('fortiGateNamePrefix'),'-AvailabilitySet'),parameters('existingAvailabilitySetName'))]", "availabilitySetId": { "id": "[resourceId('Microsoft.Compute/availabilitySets', variables('availabilitySetName'))]" @@ -646,14 +733,12 @@ "fastpathtag": { "fastpathenabled": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),'true','false')]" }, - "LegacyNVA":{"LegacyVMNVA": "Use legacy MLX ConnectX NIC"}, - "LegacyVMNVATag":"[if(equals(parameters('fortiGateInstanceArchitecture'),'x64'),variables('LegacyNVA'),json('{}'))]", "auxiliaryMode": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),'AcceleratedConnections','None')]", "auxiliarySku": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),parameters('acceleratedConnectionsSku'),'None')]" }, "resources": [ { - "apiVersion": "2025-04-01", + "apiVersion": "2023-07-01", "name": "[concat(parameters('fortiGateNamePrefix'), '-fortinetdeployment-', uniquestring(resourceGroup().id))]", "type": "Microsoft.Resources/deployments", "properties": { @@ -669,7 +754,7 @@ "condition": "[and(variables('useAS'),equals(parameters('existingAvailabilitySetName'),''))]", "name": "[variables('availabilitySetName')]", "type": "Microsoft.Compute/availabilitySets", - "apiVersion": "2025-04-01", + "apiVersion": "2023-03-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/availabilitySets'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/availabilitySets']), parameters('fortinetTags')) ]", "properties": { @@ -684,7 +769,7 @@ "condition": "[equals(parameters('vnetNewOrExisting'), 'new')]", "name": "[variables('vnetName')]", "type": "Microsoft.Network/virtualNetworks", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/virtualNetworks'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/virtualNetworks']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -725,7 +810,7 @@ "condition": "[equals(parameters('vnetNewOrExisting'), 'new')]", "type": "Microsoft.Network/routeTables", "name": "[variables('routeTableProtectedName')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/routeTables'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/routeTables']), parameters('fortinetTags')) ]", "properties": { @@ -759,7 +844,7 @@ { "name": "[variables('nsgName')]", "type": "Microsoft.Network/networkSecurityGroups", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkSecurityGroups'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkSecurityGroups']), parameters('fortinetTags')) ]", "properties": { @@ -799,7 +884,7 @@ "condition": "[equals(parameters('publicIP1NewOrExisting'), 'new')]", "name": "[variables('publicIP1Name')]", "type": "Microsoft.Network/publicIPAddresses", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/publicIPAddresses'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/publicIPAddresses']), parameters('fortinetTags')) ]", "sku": { @@ -816,7 +901,7 @@ { "name": "[variables('fgtNic1Name')]", "type": "Microsoft.Network/networkInterfaces", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces'],variables('fastpathtag')), union(parameters('fortinetTags'),variables('fastpathtag'))) ]", "dependsOn": [ @@ -849,7 +934,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgtNic2Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces'],variables('fastpathtag')), union(parameters('fortinetTags'),variables('fastpathtag'))) ]", "dependsOn": [ @@ -881,14 +966,14 @@ { "type": "Microsoft.Compute/virtualMachines", "name": "[variables('fgtVmName')]", - "apiVersion": "2025-04-01", - "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(variables('LegacyVMNVATag'),parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/virtualMachines']), union(variables('LegacyVMNVATag'),parameters('fortinetTags'))) ]", + "apiVersion": "2023-03-01", + "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/virtualMachines']), parameters('fortinetTags')) ]", "location": "[parameters('location')]", "identity": { "type": "SystemAssigned" }, "zones": "[if(variables('useAZ'), variables('zone1'), json('null'))]", - "plan": "[if(and(equals(parameters('fortiGateLicenseType'),'fortinet_fg-vm_byol'),not(equals(parameters('customImageReference'),''))), json('null'), variables('virtualMachinePlan'))]", + "plan": "[if(and(or(equals(variables('fortiGateImageSKU'),'fortinet_fg-vm'),equals(variables('fortiGateImageSKU'),'fortinet_fg-vm_arm64')),not(equals(parameters('customImageReference'),''))), json('null'), variables('virtualMachinePlan'))]", "dependsOn": [ "[variables('fgtNic1Id')]", "[variables('fgtNic2Id')]" @@ -905,7 +990,7 @@ "customData": "[variables('fgtCustomData')]" }, "storageProfile": { - "imageReference": "[if(and(equals(parameters('fortiGateLicenseType'),'fortinet_fg-vm_byol'),not(equals(parameters('customImageReference'),''))), variables('imageReferenceCustomImage'), variables('imageReferenceMarketplace'))]", + "imageReference": "[if(and(or(equals(variables('fortiGateImageSKU'),'fortinet_fg-vm'),equals(variables('fortiGateImageSKU'),'fortinet_fg-vm_arm64')),not(equals(parameters('customImageReference'),''))), variables('imageReferenceCustomImage'), variables('imageReferenceMarketplace'))]", "diskControllerType": "[variables('diskControllerType')]", "osDisk": { "createOption": "FromImage" @@ -945,11 +1030,11 @@ "outputs": { "fortiGatePublicIP": { "type": "string", - "value": "[if(not(equals(parameters('publicIP1NewOrExisting'), 'none')), reference(variables('publicIP1Id'), '2025-05-01').ipAddress, '')]" + "value": "[if(not(equals(parameters('publicIP1NewOrExisting'), 'none')), reference(variables('publicIP1Id')).ipAddress, '')]" }, "fortiGateFQDN": { "type": "string", - "value": "[if(not(equals(parameters('publicIP1NewOrExisting'), 'none')), reference(variables('publicIP1Id'), '2025-05-01').dnsSettings.fqdn, '' )]" + "value": "[if(not(equals(parameters('publicIP1NewOrExisting'), 'none')), reference(variables('publicIP1Id')).dnsSettings.fqdn, '' )]" } } } diff --git a/FortiGate/A-Single-VM/createUiDefinition.json b/FortiGate/A-Single-VM/createUiDefinition.json index 9f5973dc..f2152529 100644 --- a/FortiGate/A-Single-VM/createUiDefinition.json +++ b/FortiGate/A-Single-VM/createUiDefinition.json @@ -24,46 +24,25 @@ "uri": "https://github.com/fortinet/azure-templates/tree/main/FortiGate/A-Single-VM" } }, - { - "name": "fortiGateImageSKU", - "type": "Microsoft.Common.DropDown", - "label": "Fortigate-VM License Type", - "defaultValue": "Bring Your Own License or FortiFlex", - "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", - "constraints": { - "required": false, - "allowedValues": [ - { - "label": "Bring Your Own License or FortiFlex", - "value": "fortinet_fg-vm_byol" - }, - { - "label": "Pay As You Go", - "value": "fortinet_fg-vm_payg" - } - ] - }, - "visible": true - }, { "name": "fortiGateInstanceArchitecture", "type": "Microsoft.Common.OptionsGroup", "label": "FortiGate VM instance Architecture", - "defaultValue": "X64 - Intel / AMD based processors | Gen1 VM FortiGate 7.0 - 7.4", + "defaultValue": "X64 - Intel / AMD based processors", "toolTip": "Select FortiGate VM instance Architecture", "constraints": { "allowedValues": [ { - "label": "X64 - Intel / AMD based processors | Gen1 VM FortiGate 7.0 - 7.4", + "label": "X64 - Intel / AMD based processors", "value": "x64" }, { - "label": "X64 - Intel / AMD based processors | Gen2 VM FortiGate 7.6+", - "value": "_g2" + "label": "X64 - Intel / AMD based processors - Generation 2 VM (> 7.6.1)", + "value": "x64_g2" }, { - "label": "ARM64 - ARM based processors | Gen2 VM FortiGate 7.2 - 7.6", - "value": "_arm64" + "label": "ARM64 - ARM based processors (Azure Cobalt or Ampere Altra) - Generation 2 VM (> 7.2.8)", + "value": "arm64" } ], "required": true @@ -139,41 +118,273 @@ { "name": "instancetype_x64", "type": "Microsoft.Common.Section", - "label": "Instance Type x64 Generation 1", + "label": "Instance Type x64", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_x64", + "type": "Microsoft.Common.DropDown", + "label": "Fortigate-VM License Type", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_x64", "type": "Microsoft.Common.DropDown", "label": "Fortigate Image Version", - "multiLine": true, - "defaultValue": "7.4.11", - "toolTip": "Select the FortiGate image version", + "defaultValue": "7.4.9", + "toolTip": "Only 6.x has the A/P HA feature currently", "constraints": { "required": false, "allowedValues": [ { - "label": "7.4.11", - "value": "7.4.11", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','74')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.0", + "value": "7.6.0" + }, + { + "label": "7.4.9", + "value": "7.4.9" + }, + { + "label": "7.4.8", + "value": "7.4.8" + }, + { + "label": "7.4.7", + "value": "7.4.7" + }, + { + "label": "7.4.6", + "value": "7.4.6" + }, + { + "label": "7.4.5", + "value": "7.4.5" + }, + { + "label": "7.4.4", + "value": "7.4.4" + }, + { + "label": "7.4.3", + "value": "7.4.3" + }, + { + "label": "7.4.2", + "value": "7.4.2" + }, + { + "label": "7.4.1", + "value": "7.4.1" + }, + { + "label": "7.4.0", + "value": "7.4.0" + }, + { + "label": "7.2.12", + "value": "7.2.12" + }, + { + "label": "7.2.11", + "value": "7.2.11" + }, + { + "label": "7.2.10", + "value": "7.2.10" + }, + { + "label": "7.2.9", + "value": "7.2.9" + }, + { + "label": "7.2.8", + "value": "7.2.8" + }, + { + "label": "7.2.7", + "value": "7.2.7" + }, + { + "label": "7.2.6", + "value": "7.2.6" + }, + { + "label": "7.2.5", + "value": "7.2.5" + }, + { + "label": "7.2.4", + "value": "7.2.4" + }, + { + "label": "7.2.3", + "value": "7.2.3" + }, + { + "label": "7.2.2", + "value": "7.2.2" + }, + { + "label": "7.2.1", + "value": "7.2.1" + }, + { + "label": "7.2.0", + "value": "7.2.0" + }, + { + "label": "7.0.17", + "value": "7.0.17" + }, + { + "label": "7.0.15", + "value": "7.0.15" + }, + { + "label": "7.0.14", + "value": "7.0.14" + }, + { + "label": "7.0.13", + "value": "7.0.13" + }, + { + "label": "7.0.12", + "value": "7.0.12" + }, + { + "label": "7.0.11", + "value": "7.0.11" + }, + { + "label": "7.0.10", + "value": "7.0.10" + }, + { + "label": "7.0.9", + "value": "7.0.9" + }, + { + "label": "7.0.8", + "value": "7.0.8" + }, + { + "label": "7.0.6", + "value": "7.0.6" + }, + { + "label": "7.0.5", + "value": "7.0.5" + }, + { + "label": "7.0.4", + "value": "7.0.4" + }, + { + "label": "7.0.3", + "value": "7.0.3" + }, + { + "label": "7.0.2", + "value": "7.0.2" + }, + { + "label": "7.0.1", + "value": "7.0.1" + }, + { + "label": "7.0.0", + "value": "7.0.0" + }, + { + "label": "6.4.16", + "value": "6.4.16" }, { - "label": "7.2.13", - "value": "7.2.13", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','72')]" + "label": "6.4.15", + "value": "6.4.15" }, { - "label": "7.0.19", - "value": "7.0.19", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','70')]" + "label": "6.4.13", + "value": "6.4.13" + }, + { + "label": "6.4.12", + "value": "6.4.12" + }, + { + "label": "6.4.11", + "value": "6.4.11" + }, + { + "label": "6.4.10", + "value": "6.4.10" + }, + { + "label": "6.4.9", + "value": "6.4.9" + }, + { + "label": "6.4.8", + "value": "6.4.8" + }, + { + "label": "6.4.7", + "value": "6.4.7" + }, + { + "label": "6.4.6", + "value": "6.4.6" + }, + { + "label": "6.4.5", + "value": "6.4.5" + }, + { + "label": "6.4.3", + "value": "6.4.3" + }, + { + "label": "6.4.2", + "value": "6.4.2" + }, + { + "label": "6.4.0", + "value": "6.4.0" + }, + { + "label": "6.2.5", + "value": "6.2.5" + }, + { + "label": "6.2.4", + "value": "6.2.4" + }, + { + "label": "6.2.2", + "value": "6.2.2" + }, + { + "label": "6.2.0", + "value": "6.2.0" } ] }, @@ -197,9 +408,7 @@ "label": "Size", "toolTip": "Select the instance size of your FortiGate VM solution. Minimum 4 NICs are required.", "recommendedSizes": [ - "Standard_D4s_v4", - "Standard_D2s_v4", - "Standard_D2s_v3", + "Standard_D2s_v3", "Standard_F2s", "Standard_F4s", "Standard_F8s", @@ -227,6 +436,8 @@ "Standard_D8_v4", "Standard_D16_v4", "Standard_D32_v4", + "Standard_D2s_v4", + "Standard_D4s_v4", "Standard_D8s_v4", "Standard_D16s_v4", "Standard_D32s_v4", @@ -263,7 +474,6 @@ ], "constraints": { "allowedSizes": [ - "Standard_D4s_v4", "Standard_F2s", "Standard_F4s", "Standard_F8s", @@ -293,6 +503,7 @@ "Standard_D16_v4", "Standard_D32_v4", "Standard_D2s_v4", + "Standard_D4s_v4", "Standard_D8s_v4", "Standard_D16s_v4", "Standard_D32s_v4", @@ -334,8 +545,8 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_x64.fortiGateImageVersion_x64, '.',''), 2))]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[steps('instance').instancetype_x64.fortiGateImageSKU_x64]" }, "count": 1, "visible": true @@ -343,7 +554,7 @@ { "name": "versionInfo", "type": "Microsoft.Common.InfoBox", - "visible": "[and(contains(steps('instance').instancetype_x64_g2.selection_x64_g2, '_v6'),not(or(equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.6'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'latest'))))]", + "visible": "[and(contains(steps('instance').instancetype_x64.selection_x64, '_v6'),not(or(equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.1'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.2'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'latest'))))]", "options": { "icon": "Error", "text": "Dsv6 and Esv6 Instance families require a Gen2 VM Image, support for MANA network drivers and are incompatible with the selected FortiGate version, please select version 7.6.1 or higher", @@ -356,31 +567,57 @@ { "name": "instancetype_x64_g2", "type": "Microsoft.Common.Section", - "label": "Instance Type x64 Generation 2", + "label": "Instance Type x64_g2", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_x64_g2", + "type": "Microsoft.Common.DropDown", + "label": "Fortigate-VM License Type", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm_g2" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023_g2" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_x64_g2", "type": "Microsoft.Common.DropDown", "label": "Fortigate Image Version", - "multiLine": true, - "defaultValue": "7.6.6", - "toolTip": "Select the FortiGate image version", + "defaultValue": "7.6.4", + "toolTip": "Only 6.x has the A/P HA feature currently", "constraints": { "required": false, "allowedValues": [ { - "label": "7.6.6", - "value": "7.6.6", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','76')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.2", + "value": "7.6.200" + }, + { + "label": "7.6.1", + "value": "7.6.100" + }, + { + "label": "7.6.4", + "value": "7.6.4" + }, + { + "label": "7.6.3", + "value": "7.6.3" } ] }, @@ -394,7 +631,7 @@ "text": "For this FortiGate deployment, it is recommended to use the general purpose or compute optimized virtual machines. A selection of supported instances sizes is listed in our documentation.", "link": { "label": "Learn more", - "uri": "https://docs.fortinet.com/document/fortigate-public-cloud/7.6.0/azure-administration-guide/562841/instance-type-support" + "uri": "https://docs.fortinet.com/document/fortigate-public-cloud/7.4.0/azure-administration-guide/562841/instance-type-support" } } }, @@ -404,13 +641,12 @@ "label": "Size", "toolTip": "Select the instance size of your FortiGate VM solution. Minimum 4 NICs are required.", "recommendedSizes": [ - "Standard_D4s_v5", - "Standard_D2s_v4", + "Standard_D2_v4", "Standard_D4_v4", "Standard_D8_v4", "Standard_D16_v4", "Standard_D32_v4", - "Standard_D2_v4", + "Standard_D2s_v4", "Standard_D4s_v4", "Standard_D8s_v4", "Standard_D16s_v4", @@ -431,6 +667,7 @@ "Standard_D16_v5", "Standard_D32_v5", "Standard_D2s_v5", + "Standard_D4s_v5", "Standard_D8s_v5", "Standard_D16s_v5", "Standard_D32s_v5", @@ -487,7 +724,11 @@ ], "constraints": { "allowedSizes": [ - "Standard_D4s_v5", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3", "Standard_D2_v4", "Standard_D4_v4", "Standard_D8_v4", @@ -514,6 +755,7 @@ "Standard_D16_v5", "Standard_D32_v5", "Standard_D2s_v5", + "Standard_D4s_v5", "Standard_D8s_v5", "Standard_D16s_v5", "Standard_D32s_v5", @@ -575,8 +817,8 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2, '.',''), 2),'_g2')]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2]" }, "count": 1, "visible": true @@ -584,7 +826,7 @@ { "name": "versionInfo", "type": "Microsoft.Common.InfoBox", - "visible": "[and(contains(steps('instance').instancetype_x64_g2.selection_x64_g2, '_v6'),not(or(equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.6'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'latest'))))]", + "visible": "[and(contains(steps('instance').instancetype_x64_g2.selection_x64_g2, '_v6'),not(or(equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.100'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.200'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'latest'))))]", "options": { "icon": "Error", "text": "Dsv6 and Esv6 Instance families require a Gen2 VM Image, support for MANA network drivers and are incompatible with the selected FortiGate version, please select version 7.6.1 or higher", @@ -592,7 +834,7 @@ } } ], - "visible": "[equals(basics('fortiGateInstanceArchitecture'),'_g2')]" + "visible": "[equals(basics('fortiGateInstanceArchitecture'),'x64_g2')]" }, { "name": "instancetype_arm64", @@ -600,38 +842,114 @@ "label": "Instance Type ARM 64", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_arm64", + "type": "Microsoft.Common.DropDown", + "label": "Fortigate-VM License Type", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm_arm64" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023_arm64" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_arm64", "type": "Microsoft.Common.DropDown", "label": "Fortigate Image Version", - "multiLine": true, - "defaultValue": "7.6.6", + "defaultValue": "7.6.4", "toolTip": "Only 6.x has the A/P HA feature currently", "constraints": { "required": false, "allowedValues": [ { - "label": "7.6.6", - "value": "7.6.6", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','76')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.5", + "value": "7.6.5" + }, + { + "label": "7.6.4", + "value": "7.6.4" + }, + { + "label": "7.6.3", + "value": "7.6.3" + }, + { + "label": "7.6.2", + "value": "7.6.2" + }, + { + "label": "7.6.1", + "value": "7.6.1" + }, + { + "label": "7.6.0", + "value": "7.6.0" }, { "label": "7.4.11", - "value": "7.4.11", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','74')]" + "value": "7.4.11" + }, + { + "label": "7.4.9", + "value": "7.4.9" + }, + { + "label": "7.4.8", + "value": "7.4.8" + }, + { + "label": "7.4.7", + "value": "7.4.7" + }, + { + "label": "7.4.6", + "value": "7.4.6" }, { - "label": "7.2.13", - "value": "7.2.13", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','72')]" + "label": "7.4.5", + "value": "7.4.5" + }, + { + "label": "7.4.4", + "value": "7.4.4" + }, + { + "label": "7.4.3", + "value": "7.4.3" + }, + { + "label": "7.2.12", + "value": "7.2.12" + }, + { + "label": "7.2.11", + "value": "7.2.11" + }, + { + "label": "7.2.10", + "value": "7.2.10" + }, + { + "label": "7.2.9", + "value": "7.2.9" + }, + { + "label": "7.2.8", + "value": "7.2.8" } ] }, @@ -708,12 +1026,12 @@ "Standard_D8ps_v6", "Standard_D16ps_v6", "Standard_D32ps_v6", - "Standard_D2pds_v6", + "Standard_D2pds_v6", "Standard_D4pds_v6", "Standard_D8pds_v6", "Standard_D16pds_v6", "Standard_D32pds_v6", - "Standard_D2pls_v6", + "Standard_D2pls_v6", "Standard_D4pls_v6", "Standard_D8pls_v6", "Standard_D16pls_v6", @@ -756,14 +1074,14 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_arm64.fortiGateImageVersion_arm64, '.',''), 2),'_arm64')]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[steps('instance').instancetype_arm64.fortiGateImageSKU_arm64]" }, "count": 1, "visible": true } ], - "visible": "[equals(basics('fortiGateInstanceArchitecture'),'_arm64')]" + "visible": "[equals(basics('fortiGateInstanceArchitecture'),'arm64')]" }, { "name": "availabilityOptions", @@ -881,7 +1199,7 @@ { "name": "fgtLicenseBYOLInfo", "type": "Microsoft.Common.TextBlock", - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]", + "visible": "[or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64'))]", "options": { "text": "Bring Your Own License was selected in the basics blade. The license file(s) retrieved from support.fortinet.com can be uploaded here or uploaded after deployment." } @@ -891,7 +1209,7 @@ "type": "Microsoft.Common.CheckBox", "label": "My organization is using the FortiFlex subscription service.", "toolTip": "Select this box to enter a FortiFlex token", - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]" + "visible": "[or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64'))]" }, { "name": "fgtcontent", @@ -908,7 +1226,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')) ,not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgtfortiflex", @@ -918,10 +1236,10 @@ "toolTip": "FortiGate FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')) ,steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgtLicensePAYGInfo", @@ -931,7 +1249,7 @@ "text": "Pay As You Go licenses was selected in the basics blade and provisioned automatically during deployment. Registration of the PAYG license is required to receive support.", "uri": "https://docs.fortinet.com/document/fortigate-public-cloud/7.2.0/azure-administration-guide/533394/creating-a-support-account" }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": "[not(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')))]" }, { "name": "fgtLicenseMigrateInfo", @@ -1302,7 +1620,7 @@ "type": "Microsoft.Common.TextBox", "label": "Custom Data", "toolTip": "Custom Data", - "placeholder": "Add your required additional configuration here.", + "placeholder": "Add you required additional configuration here.", "multiLine": true, "constraints": { "required": false, @@ -1359,7 +1677,7 @@ "name": "customvhd", "type": "Microsoft.Common.Section", "label": "Custom VHD", - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]", + "visible": "[or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64'))]", "elements": [ { "name": "customvhdcheck", @@ -1378,27 +1696,6 @@ }, "visible": "[steps('advanced').customvhd.customvhdcheck]" }, - { - "name": "customimagesource", - "type": "Microsoft.Common.OptionsGroup", - "label": "Image Version Source", - "defaultValue": "fortinetsite", - "toolTip": "Image Version Source", - "constraints": { - "required": false, - "allowedValues": [ - { - "label": "fortinetsite", - "value": "fortinetsite" - }, - { - "label": "marketplace", - "value": "marketplace" - } - ] - }, - "visible": "[steps('advanced').customvhd.customvhdcheck]" - }, { "name": "resourceid", "type": "Microsoft.Common.TextBox", @@ -1506,7 +1803,9 @@ ], "outputs": { "fortiGateNamePrefix": "[basics('fortiGateNamePrefix')]", - "fortiGateLicenseType": "[basics('fortiGateImageSKU')]", + "fortiGateImageSKU_x64": "[steps('instance').instancetype_x64.fortiGateImageSKU_x64]", + "fortiGateImageSKU_x64_g2": "[steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2]", + "fortiGateImageSKU_arm64": "[steps('instance').instancetype_arm64.fortiGateImageSKU_arm64]", "fortiGateImageVersion_x64": "[steps('instance').instancetype_x64.fortiGateImageVersion_x64]", "fortiGateImageVersion_x64_g2": "[steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2]", "fortiGateImageVersion_arm64": "[steps('instance').instancetype_arm64.fortiGateImageVersion_arm64]", @@ -1547,7 +1846,6 @@ "fortiManagerSerial": "[steps('advanced').fortimanager.fortimanagerserial]", "fortiGateAdditionalCustomData": "[steps('advanced').customdata.config]", "customImageReference": "[steps('advanced').customvhd.resourceid]", - "customVHDSource": "[steps('advanced').customvhd.customimagesource]", "tagsByResource": "[steps('tags').tagsByResource]" } } diff --git a/FortiGate/Active-Active-ELB-ILB/azuredeploy.json b/FortiGate/Active-Active-ELB-ILB/azuredeploy.json index e25629d9..852cf01f 100644 --- a/FortiGate/Active-Active-ELB-ILB/azuredeploy.json +++ b/FortiGate/Active-Active-ELB-ILB/azuredeploy.json @@ -27,24 +27,46 @@ "description": "Naming prefix for all deployed resources. The FortiGate VMs will have the suffix '-fgt-a' and '-fgt-b'. For example if the prefix is 'acme-01' the FortiGates will be named 'acme-01-fgt-a' and 'acme-01-fgt-b'" } }, - "fortiGateLicenseType": { + "fortiGateImageSKU_x64": { "type": "string", - "defaultValue": "fortinet_fg-vm_byol", + "defaultValue": "fortinet_fg-vm", "allowedValues": [ - "fortinet_fg-vm_byol", - "fortinet_fg-vm_payg" + "fortinet_fg-vm", + "fortinet_fg-vm_payg_2023" + ], + "metadata": { + "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately" + } + }, + "fortiGateImageSKU_x64_g2": { + "type": "string", + "defaultValue": "fortinet_fg-vm_g2", + "allowedValues": [ + "fortinet_fg-vm_g2", + "fortinet_fg-vm_payg_2023_g2" ], "metadata": { "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)" } }, + "fortiGateImageSKU_arm64": { + "type": "string", + "defaultValue": "fortinet_fg-vm_arm64", + "allowedValues": [ + "fortinet_fg-vm_arm64", + "fortinet_fg-vm_payg_2023_arm64" + ], + "metadata": { + "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately" + } + }, "fortiGateInstanceArchitecture": { "type": "string", "defaultValue": "x64", "allowedValues": [ "x64", - "_g2", - "_arm64" + "x64_g2", + "arm64" ], "metadata": { "description": "Indicates the instance Architecture of the VM deployment. Intel/AMD or ARM" @@ -52,11 +74,67 @@ }, "fortiGateImageVersion_x64": { "type": "string", - "defaultValue": "7.4.11", + "defaultValue": "7.4.9", "allowedValues": [ - "7.4.11", - "7.2.13", - "7.0.19" + "latest", + "7.6.0", + "7.4.9", + "7.4.8", + "7.4.7", + "7.4.6", + "7.4.5", + "7.4.4", + "7.4.3", + "7.4.2", + "7.4.1", + "7.4.0", + "7.2.12", + "7.2.11", + "7.2.10", + "7.2.9", + "7.2.8", + "7.2.7", + "7.2.6", + "7.2.5", + "7.2.4", + "7.2.3", + "7.2.2", + "7.2.1", + "7.2.0", + "7.0.17", + "7.0.15", + "7.0.14", + "7.0.13", + "7.0.12", + "7.0.11", + "7.0.10", + "7.0.9", + "7.0.8", + "7.0.6", + "7.0.5", + "7.0.4", + "7.0.3", + "7.0.2", + "7.0.1", + "7.0.0", + "6.4.16", + "6.4.15", + "6.4.13", + "6.4.12", + "6.4.11", + "6.4.10", + "6.4.9", + "6.4.8", + "6.4.7", + "6.4.6", + "6.4.5", + "6.4.3", + "6.4.2", + "6.4.0", + "6.2.5", + "6.2.4", + "6.2.2", + "6.2.0" ], "metadata": { "description": "Select the image version" @@ -64,9 +142,13 @@ }, "fortiGateImageVersion_x64_g2": { "type": "string", - "defaultValue": "7.6.6", + "defaultValue": "7.6.4", "allowedValues": [ - "7.6.6" + "latest", + "7.6.200", + "7.6.100", + "7.6.4", + "7.6.3" ], "metadata": { "description": "Select the image version supporting Generation 2 VMs" @@ -74,11 +156,28 @@ }, "fortiGateImageVersion_arm64": { "type": "string", - "defaultValue": "7.6.6", + "defaultValue": "7.6.4", "allowedValues": [ - "7.6.6", + "latest", + "7.6.5", + "7.6.4", + "7.6.3", + "7.6.2", + "7.6.1", + "7.6.0", "7.4.11", - "7.2.13" + "7.4.9", + "7.4.8", + "7.4.7", + "7.4.6", + "7.4.5", + "7.4.4", + "7.4.3", + "7.2.12", + "7.2.11", + "7.2.10", + "7.2.9", + "7.2.8" ], "metadata": { "description": "Select the image version" @@ -107,7 +206,7 @@ }, "instanceType_x64": { "type": "string", - "defaultValue": "Standard_D4s_v3", + "defaultValue": "Standard_D2s_v3", "allowedValues": [ "Standard_F2s", "Standard_F4s", @@ -179,7 +278,7 @@ }, "instanceType_x64_g2": { "type": "string", - "defaultValue": "Standard_D4_v5", + "defaultValue": "Standard_D2_v5", "allowedValues": [ "Standard_D2_v4", "Standard_D4_v4", @@ -268,7 +367,7 @@ }, "instanceType_arm64": { "type": "string", - "defaultValue": "Standard_D4ps_v6", + "defaultValue": "Standard_D2ps_v6", "allowedValues": [ "Standard_D2ps_v6", "Standard_D4ps_v6", @@ -639,12 +738,11 @@ }, "variables": { "imagePublisher": "fortinet", - "imageOffer": "fortinet_fortigate-vm", - "VMInstanceArchitecture": "[if(equals(parameters('fortiGateInstanceArchitecture'),'x64'),'',parameters('fortiGateInstanceArchitecture'))]", - "fortiGateImageSKU": "[concat(parameters('fortiGateLicenseType'),'_',take(replace(variables('fortiGateImageVersion'), '.',''), 2),variables('VMInstanceArchitecture'))]", - "fortiGateImageVersion": "[if(equals(parameters('fortiGateInstanceArchitecture'), '_arm64'), parameters('fortiGateImageVersion_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),parameters('fortiGateImageVersion_x64_g2'),parameters('fortiGateImageVersion_x64')))]", - "instanceType": "[if(equals(parameters('fortiGateInstanceArchitecture'), '_arm64'), parameters('instanceType_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),parameters('instanceType_x64_g2'),parameters('instanceType_x64')))]", - "diskControllerType": "[if(and(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),contains(parameters('instanceType_x64_g2'), '_v6')),'NVMe',json('null'))]", + "imageOffer": "fortinet_fortigate-vm_v5", + "fortiGateImageSKU": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('fortiGateImageSKU_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('fortiGateImageSKU_x64_g2'),parameters('fortiGateImageSKU_x64')))]", + "fortiGateImageVersion": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('fortiGateImageVersion_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('fortiGateImageVersion_x64_g2'),parameters('fortiGateImageVersion_x64')))]", + "instanceType": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('instanceType_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('instanceType_x64_g2'),parameters('instanceType_x64')))]", + "diskControllerType": "[if(and(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),contains(parameters('instanceType_x64_g2'), '_v6'),contains(parameters('fortiGateImageSKU_x64_g2'), '_g2')),'NVMe',json('null'))]", "availabilitySetName": "[concat(parameters('fortiGateNamePrefix'),'-availabilityset')]", "availabilitySetId": { "id": "[resourceId('Microsoft.Compute/availabilitySets', variables('availabilitySetName'))]" @@ -858,8 +956,6 @@ "fastpathtag": { "fastpathenabled": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),'true','false')]" }, - "LegacyNVA":{"LegacyVMNVA": "Use legacy MLX ConnectX NIC"}, - "LegacyVMNVATag":"[if(equals(parameters('fortiGateInstanceArchitecture'),'x64'),variables('LegacyNVA'),json('{}'))]", "auxiliaryMode": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),'AcceleratedConnections','None')]", "auxiliarySku": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),parameters('acceleratedConnectionsSku'),'None')]" }, @@ -914,7 +1010,7 @@ { "name": "[concat(parameters('fortiGateNamePrefix'), '-fortinetdeployment-', uniquestring(resourceGroup().id))]", "type": "Microsoft.Resources/deployments", - "apiVersion": "2025-04-01", + "apiVersion": "2023-07-01", "properties": { "mode": "Incremental", "template": { @@ -928,7 +1024,7 @@ "condition": "[not(variables('useAZ'))]", "name": "[variables('availabilitySetName')]", "type": "Microsoft.Compute/availabilitySets", - "apiVersion": "2025-04-01", + "apiVersion": "2023-03-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/availabilitySets'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/availabilitySets']), parameters('fortinetTags')) ]", "properties": { @@ -943,7 +1039,7 @@ "condition": "[equals(parameters('vnetNewOrExisting'), 'new')]", "name": "[variables('vnetName')]", "type": "Microsoft.Network/virtualNetworks", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/virtualNetworks'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/virtualNetworks']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -975,7 +1071,7 @@ "condition": "[equals(parameters('outboundConnectivity'),'deploy-nat-gateway')]", "name": "[concat(variables('vnetName'),'/', parameters('subnet1Name'))]", "type": "Microsoft.Network/virtualNetworks/subnets", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "dependsOn": [ "[variables('vnetName')]", "[resourceId('Microsoft.Network/natGateways', variables('natGWName'))]" @@ -991,7 +1087,7 @@ "condition": "[equals(parameters('outboundConnectivity'),'deploy-nat-gateway')]", "name": "[variables('natGWName')]", "type": "Microsoft.Network/natGateways", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/natGateways'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/natGateways']), parameters('fortinetTags')) ]", "sku": { @@ -1012,7 +1108,7 @@ { "type": "Microsoft.Network/routeTables", "name": "[variables('routeTable3Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/routeTables'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/routeTables']), parameters('fortinetTags')) ]", "properties": { @@ -1031,7 +1127,7 @@ { "type": "Microsoft.Network/networkSecurityGroups", "name": "[variables('nsgName')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkSecurityGroups'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkSecurityGroups']), parameters('fortinetTags')) ]", "properties": { @@ -1071,7 +1167,7 @@ "condition": "[and(not(parameters('1nicDeployment')), parameters('externalLoadBalancer'))]", "type": "Microsoft.Network/publicIPAddresses", "name": "[variables('publicIP1Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/publicIPAddresses'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/publicIPAddresses']), parameters('fortinetTags')) ]", "sku": { @@ -1089,7 +1185,7 @@ "condition": "[and(not(parameters('1nicDeployment')), equals(parameters('outboundConnectivity'),'deploy-nat-gateway'))]", "type": "Microsoft.Network/publicIPAddresses", "name": "[variables('publicIP2Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/publicIPAddresses'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/publicIPAddresses']), parameters('fortinetTags')) ]", "sku": { @@ -1106,8 +1202,8 @@ { "condition": "[and(not(parameters('1nicDeployment')), equals(parameters('outboundConnectivity'),'per-node-standard-sku-pip'))]", "type": "Microsoft.Network/publicIPAddresses", - "name": "[variables('attachedpipName')[copyIndex()]]", - "apiVersion": "2025-05-01", + "name": "[variables('attachedpipName')[copyIndex(1)]]", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/publicIPAddresses'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/publicIPAddresses']), parameters('fortinetTags')) ]", "sku": { @@ -1129,7 +1225,7 @@ "condition": "[and(not(parameters('1nicDeployment')), parameters('externalLoadBalancer'))]", "type": "Microsoft.Network/loadBalancers", "name": "[variables('externalLBName')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/loadBalancers'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/loadBalancers']), parameters('fortinetTags')) ]", "sku": { @@ -1211,7 +1307,7 @@ "condition": "[and(not(parameters('1nicDeployment')), parameters('externalLoadBalancer'))]", "type": "Microsoft.Network/loadBalancers/inboundNatRules", "name": "[concat(variables('externalLBName'), '/', variables('fgVmName'), '-', copyIndex(1), '-MGMT-SSH')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "dependsOn": [ "[variables('externalLBId')]" @@ -1234,7 +1330,7 @@ "condition": "[and(not(parameters('1nicDeployment')), parameters('externalLoadBalancer'))]", "type": "Microsoft.Network/loadBalancers/inboundNatRules", "name": "[concat(variables('externalLBName'), '/', variables('fgVmName'), '-', copyIndex(1), '-MGMT-HTTPS')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "dependsOn": [ "[variables('externalLBId')]" @@ -1256,7 +1352,7 @@ { "type": "Microsoft.Network/loadBalancers", "name": "[variables('internalLBName')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/loadBalancers'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/loadBalancers']), parameters('fortinetTags')) ]", "sku": { @@ -1322,7 +1418,7 @@ "condition": "[not(parameters('1nicDeployment'))]", "type": "Microsoft.Network/networkInterfaces", "name": "[concat(variables('fgVmName'),'-',copyIndex(1),'-nic',if(not(parameters('1nicDeployment')), 1, 2))]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "copy": { "name": "nodeCopy", "count": "[parameters('fortiGateCount')]" @@ -1333,7 +1429,7 @@ "[variables('vnetName')]", "[variables('nsgId')]", "[variables('externalLBId')]", - "[variables('attachedpipId')[copyIndex()]]", + "[variables('attachedpipId')[copyIndex(1)]]", "[resourceId('Microsoft.Network/loadBalancers/inboundNatRules',variables('externalLBName'), concat(variables('fgVmName'),'-', copyIndex(1),'-MGMT-SSH'))]", "[resourceId('Microsoft.Network/loadBalancers/inboundNatRules',variables('externalLBName'), concat(variables('fgVmName'),'-', copyIndex(1),'-MGMT-HTTPS'))]" ], @@ -1344,7 +1440,7 @@ "properties": { "privateIPAddress": "[variables('sn1IP')[copyIndex(1)]]", "privateIPAllocationMethod": "Static", - "publicIPAddress": "[if(equals(parameters('outboundConnectivity'),'per-node-standard-sku-pip'), variables('attachedpipaddressId')[copyIndex()] , json('null'))]", + "publicIPAddress": "[if(equals(parameters('outboundConnectivity'),'per-node-standard-sku-pip'), variables('attachedpipaddressId')[copyIndex(1)] , json('null'))]", "subnet": { "id": "[variables('subnet1Id')]" }, @@ -1365,7 +1461,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[concat(variables('fgVmName'),'-',copyIndex(1),'-nic',if(not(parameters('1nicDeployment')), 2, 1))]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "copy": { "name": "nodeCopy", "count": "[parameters('fortiGateCount')]" @@ -1407,12 +1503,12 @@ { "type": "Microsoft.Compute/virtualMachines", "name": "[concat(variables('fgVmName'),'-',copyIndex(1))]", - "apiVersion": "2025-04-01", + "apiVersion": "2023-09-01", "copy": { "name": "nodeCopy", "count": "[parameters('fortiGateCount')]" }, - "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(variables('LegacyVMNVATag'),parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/virtualMachines']), union(variables('LegacyVMNVATag'),parameters('fortinetTags'))) ]", + "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/virtualMachines']), parameters('fortinetTags')) ]", "location": "[parameters('location')]", "dependsOn": [ "[concat(variables('fgVmName'),'-',copyIndex(1),'-nic1')]", @@ -1422,7 +1518,7 @@ "type": "SystemAssigned" }, "zones": "[if(variables('useAZ'), array(add(1, mod(copyIndex(), length(variables('pipZones'))))), json('null'))]", - "plan": "[if(and(equals(parameters('fortiGateLicenseType'),'fortinet_fg-vm_byol'),not(equals(parameters('customImageReference'),''))), json('null'), variables('virtualMachinePlan'))]", + "plan": "[if(and(or(equals(variables('fortiGateImageSKU'),'fortinet_fg-vm'),equals(variables('fortiGateImageSKU'),'fortinet_fg-vm_arm64')),not(equals(parameters('customImageReference'),''))), json('null'), variables('virtualMachinePlan'))]", "properties": { "hardwareProfile": { "vmSize": "[variables('instanceType')]" @@ -1435,7 +1531,7 @@ "customData": "[variables('customData')[copyIndex()]]" }, "storageProfile": { - "imageReference": "[if(and(equals(parameters('fortiGateLicenseType'),'fortinet_fg-vm_byol'),not(equals(parameters('customImageReference'),''))), variables('imageReferenceCustomImage'), variables('imageReferenceMarketplace'))]", + "imageReference": "[if(and(equals(variables('fortiGateImageSku'),'fortinet_fg-vm'),not(equals(parameters('customImageReference'),''))), variables('imageReferenceCustomImage'), variables('imageReferenceMarketplace'))]", "diskControllerType": "[variables('diskControllerType')]", "osDisk": { "createOption": "FromImage" @@ -1473,11 +1569,11 @@ "outputs": { "fortiGatePublicIP": { "type": "string", - "value": "[if(parameters('externalLoadBalancer'), reference(variables('publicIP1Id'), '2025-05-01').ipAddress, '')]" + "value": "[if(parameters('externalLoadBalancer'), reference(variables('publicIP1Id')).ipAddress, '')]" }, "fortiGateFQDN": { "type": "string", - "value": "[if(parameters('externalLoadBalancer'), reference(variables('publicIP1Id'), '2025-05-01').dnsSettings.fqdn, '' )]" + "value": "[if(parameters('externalLoadBalancer'), reference(variables('publicIP1Id')).dnsSettings.fqdn, '' )]" } } } diff --git a/FortiGate/Active-Active-ELB-ILB/createUiDefinition.json b/FortiGate/Active-Active-ELB-ILB/createUiDefinition.json index 54036df7..910c2660 100644 --- a/FortiGate/Active-Active-ELB-ILB/createUiDefinition.json +++ b/FortiGate/Active-Active-ELB-ILB/createUiDefinition.json @@ -23,47 +23,26 @@ "text": "FortiGate Deployment Type - Active/Active - External and Internal Load Balancers - Availability Set or Availability Zones", "uri": "https://github.com/fortinet/azure-templates/tree/main/FortiGate/Active-Active-ELB-ILB" } - }, - { - "name": "fortiGateImageSKU", - "type": "Microsoft.Common.DropDown", - "label": "Fortigate-VM License Type", - "defaultValue": "Bring Your Own License or FortiFlex", - "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", - "constraints": { - "required": false, - "allowedValues": [ - { - "label": "Bring Your Own License or FortiFlex", - "value": "fortinet_fg-vm_byol" - }, - { - "label": "Pay As You Go", - "value": "fortinet_fg-vm_payg" - } - ] - }, - "visible": true }, { "name": "fortiGateInstanceArchitecture", "type": "Microsoft.Common.OptionsGroup", "label": "FortiGate VM instance Architecture", - "defaultValue": "X64 - Intel / AMD based processors | Gen1 VM FortiGate 7.0 - 7.4", + "defaultValue": "X64 - Intel / AMD based processors", "toolTip": "Select FortiGate VM instance Architecture", "constraints": { "allowedValues": [ { - "label": "X64 - Intel / AMD based processors | Gen1 VM FortiGate 7.0 - 7.4", + "label": "X64 - Intel / AMD based processors", "value": "x64" }, { - "label": "X64 - Intel / AMD based processors | Gen2 VM FortiGate 7.6+", - "value": "_g2" + "label": "X64 - Intel / AMD based processors - Generation 2 VM (> 7.6.1)", + "value": "x64_g2" }, { - "label": "ARM64 - ARM based processors | Gen2 VM FortiGate 7.2 - 7.6", - "value": "_arm64" + "label": "ARM64 - ARM based processors (Azure Cobalt or Ampere Altra) - Generation 2 VM (> 7.2.8)", + "value": "arm64" } ], "required": true @@ -131,11 +110,11 @@ "type": "Microsoft.Common.TextBox", "label": "Number of FortiGate", "defaultValue": "2", - "toolTip": "Number of FortiGate VM instances to deploy, maximum is 8", + "toolTip": "Number of FortiGate VM instances to deploy", "constraints": { "required": true, - "regex": "^[1-8]{1}$", - "validationMessage": "Only numeric values are allowed, and the value must be between 1 and 8." + "regex": "^[0-9-]{1,15}$", + "validationMessage": "Only alphanumeric characters are allowed, and the value must be 1 to 15 characters." }, "visible": true } @@ -152,41 +131,273 @@ { "name": "instancetype_x64", "type": "Microsoft.Common.Section", - "label": "Instance Type x64 Generation 1", + "label": "Instance Type x64", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_x64", + "type": "Microsoft.Common.DropDown", + "label": "FortiGate Image SKU", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_x64", "type": "Microsoft.Common.DropDown", "label": "FortiGate Image Version", - "multiLine": true, - "defaultValue": "7.4.11", + "defaultValue": "7.4.9", "toolTip": "Select the FortiGate image version", "constraints": { "required": false, "allowedValues": [ { - "label": "7.4.11", - "value": "7.4.11", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','74')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.0", + "value": "7.6.0" + }, + { + "label": "7.4.9", + "value": "7.4.9" + }, + { + "label": "7.4.8", + "value": "7.4.8" + }, + { + "label": "7.4.7", + "value": "7.4.7" + }, + { + "label": "7.4.6", + "value": "7.4.6" + }, + { + "label": "7.4.5", + "value": "7.4.5" + }, + { + "label": "7.4.4", + "value": "7.4.4" + }, + { + "label": "7.4.3", + "value": "7.4.3" + }, + { + "label": "7.4.2", + "value": "7.4.2" + }, + { + "label": "7.4.1", + "value": "7.4.1" + }, + { + "label": "7.4.0", + "value": "7.4.0" + }, + { + "label": "7.2.12", + "value": "7.2.12" + }, + { + "label": "7.2.11", + "value": "7.2.11" + }, + { + "label": "7.2.10", + "value": "7.2.10" + }, + { + "label": "7.2.9", + "value": "7.2.9" + }, + { + "label": "7.2.8", + "value": "7.2.8" + }, + { + "label": "7.2.7", + "value": "7.2.7" + }, + { + "label": "7.2.6", + "value": "7.2.6" + }, + { + "label": "7.2.5", + "value": "7.2.5" + }, + { + "label": "7.2.4", + "value": "7.2.4" + }, + { + "label": "7.2.3", + "value": "7.2.3" + }, + { + "label": "7.2.2", + "value": "7.2.2" + }, + { + "label": "7.2.1", + "value": "7.2.1" + }, + { + "label": "7.2.0", + "value": "7.2.0" + }, + { + "label": "7.0.17", + "value": "7.0.17" + }, + { + "label": "7.0.15", + "value": "7.0.15" + }, + { + "label": "7.0.14", + "value": "7.0.14" + }, + { + "label": "7.0.13", + "value": "7.0.13" + }, + { + "label": "7.0.12", + "value": "7.0.12" + }, + { + "label": "7.0.11", + "value": "7.0.11" + }, + { + "label": "7.0.10", + "value": "7.0.10" + }, + { + "label": "7.0.9", + "value": "7.0.9" + }, + { + "label": "7.0.8", + "value": "7.0.8" + }, + { + "label": "7.0.6", + "value": "7.0.6" + }, + { + "label": "7.0.5", + "value": "7.0.5" + }, + { + "label": "7.0.4", + "value": "7.0.4" + }, + { + "label": "7.0.3", + "value": "7.0.3" + }, + { + "label": "7.0.2", + "value": "7.0.2" + }, + { + "label": "7.0.1", + "value": "7.0.1" + }, + { + "label": "7.0.0", + "value": "7.0.0" + }, + { + "label": "6.4.16", + "value": "6.4.16" + }, + { + "label": "6.4.15", + "value": "6.4.15" + }, + { + "label": "6.4.13", + "value": "6.4.13" + }, + { + "label": "6.4.12", + "value": "6.4.12" + }, + { + "label": "6.4.11", + "value": "6.4.11" + }, + { + "label": "6.4.10", + "value": "6.4.10" + }, + { + "label": "6.4.9", + "value": "6.4.9" + }, + { + "label": "6.4.8", + "value": "6.4.8" + }, + { + "label": "6.4.7", + "value": "6.4.7" + }, + { + "label": "6.4.6", + "value": "6.4.6" }, { - "label": "7.2.13", - "value": "7.2.13", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','72')]" + "label": "6.4.5", + "value": "6.4.5" }, { - "label": "7.0.19", - "value": "7.0.19", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','70')]" + "label": "6.4.3", + "value": "6.4.3" + }, + { + "label": "6.4.2", + "value": "6.4.2" + }, + { + "label": "6.4.0", + "value": "6.4.0" + }, + { + "label": "6.2.5", + "value": "6.2.5" + }, + { + "label": "6.2.4", + "value": "6.2.4" + }, + { + "label": "6.2.2", + "value": "6.2.2" + }, + { + "label": "6.2.0", + "value": "6.2.0" } ] }, @@ -209,8 +420,8 @@ "type": "Microsoft.Compute.SizeSelector", "label": "Size", "toolTip": "Select the instance size of your FortiGate VM solution. Minimum 2 NICs are required.", - "recommendedSizes": [ - "Standard_D4s_v3", + "recommendedSizes": [ + "Standard_D2s_v3", "Standard_F2s", "Standard_F4s", "Standard_F8s", @@ -229,7 +440,7 @@ "Standard_DS3_v2", "Standard_DS4_v2", "Standard_DS5_v2", - "Standard_D2s_v3", + "Standard_D4s_v3", "Standard_D8s_v3", "Standard_D16s_v3", "Standard_D32s_v3", @@ -282,7 +493,6 @@ ], "constraints": { "allowedSizes": [ - "Standard_D4s_v3", "Standard_F2s", "Standard_F4s", "Standard_F8s", @@ -302,6 +512,7 @@ "Standard_DS4_v2", "Standard_DS5_v2", "Standard_D2s_v3", + "Standard_D4s_v3", "Standard_D8s_v3", "Standard_D16s_v3", "Standard_D32s_v3", @@ -383,8 +594,8 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_x64.fortiGateImageVersion_x64, '.',''), 2))]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[if(or(equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.1'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.2'), equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'latest')),concat(steps('instance').instancetype_x64.fortiGateImageSKU_x64,'_g2'),steps('instance').instancetype_x64.fortiGateImageSKU_x64)]" }, "count": 2, "visible": true @@ -392,7 +603,7 @@ { "name": "versionInfo", "type": "Microsoft.Common.InfoBox", - "visible": "[and(contains(steps('instance').instancetype_x64.selection_x64, '_v6'),not(or(equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.3'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.4'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'latest'))))]", + "visible": "[and(contains(steps('instance').instancetype_x64.selection_x64, '_v6'),not(or(equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.1'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.2'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'latest'))))]", "options": { "icon": "Error", "text": "Dsv6 and Esv6 Instance families require a Gen2 VM Image, support for MANA network drivers and are incompatible with the selected FortiGate version, please select version 7.6.1 or higher", @@ -405,31 +616,57 @@ { "name": "instancetype_x64_g2", "type": "Microsoft.Common.Section", - "label": "Instance Type x64 Generation 2", + "label": "Instance Type x64_g2", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_x64_g2", + "type": "Microsoft.Common.DropDown", + "label": "Fortigate-VM License Type", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm_g2" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023_g2" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_x64_g2", "type": "Microsoft.Common.DropDown", - "label": "FortiGate Image Version", - "multiLine": true, - "defaultValue": "7.6.6", + "label": "Fortigate Image Version", + "defaultValue": "7.6.4", "toolTip": "Only 6.x has the A/P HA feature currently", "constraints": { "required": false, "allowedValues": [ { - "label": "7.6.6", - "value": "7.6.6", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','76')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.2", + "value": "7.6.200" + }, + { + "label": "7.6.1", + "value": "7.6.100" + }, + { + "label": "7.6.4", + "value": "7.6.4" + }, + { + "label": "7.6.3", + "value": "7.6.3" } ] }, @@ -453,9 +690,8 @@ "label": "Size", "toolTip": "Select the instance size of your FortiGate VM solution. Minimum 4 NICs are required.", "recommendedSizes": [ - "Standard_D4_v5", - "Standard_D4_v4", "Standard_D2_v4", + "Standard_D4_v4", "Standard_D8_v4", "Standard_D16_v4", "Standard_D32_v4", @@ -475,6 +711,7 @@ "Standard_D16as_v4", "Standard_D32as_v4", "Standard_D2_v5", + "Standard_D4_v5", "Standard_D8_v5", "Standard_D16_v5", "Standard_D32_v5", @@ -536,9 +773,13 @@ ], "constraints": { "allowedSizes": [ - "Standard_D4_v5", - "Standard_D4_v4", + "Standard_D2s_v3", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3", "Standard_D2_v4", + "Standard_D4_v4", "Standard_D8_v4", "Standard_D16_v4", "Standard_D32_v4", @@ -558,6 +799,7 @@ "Standard_D16as_v4", "Standard_D32as_v4", "Standard_D2_v5", + "Standard_D4_v5", "Standard_D8_v5", "Standard_D16_v5", "Standard_D32_v5", @@ -624,8 +866,8 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2, '.',''), 2),'_g2')]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2]" }, "count": 1, "visible": true @@ -633,7 +875,7 @@ { "name": "versionInfo", "type": "Microsoft.Common.InfoBox", - "visible": "[and(contains(steps('instance').instancetype_x64_g2.selection_x64_g2, '_v6'),not(or(equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.3'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.4'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'latest'))))]", + "visible": "[and(contains(steps('instance').instancetype_x64_g2.selection_x64_g2, '_v6'),not(or(equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.100'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.200'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'latest'))))]", "options": { "icon": "Error", "text": "Dsv6 and Esv6 Instance families require a Gen2 VM Image, support for MANA network drivers and are incompatible with the selected FortiGate version, please select version 7.6.1 or higher", @@ -641,7 +883,7 @@ } } ], - "visible": "[equals(basics('fortiGateInstanceArchitecture'),'_g2')]" + "visible": "[equals(basics('fortiGateInstanceArchitecture'),'x64_g2')]" }, { "name": "instancetype_arm64", @@ -649,38 +891,114 @@ "label": "Instance Type ARM 64", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_arm64", + "type": "Microsoft.Common.DropDown", + "label": "FortiGate Image SKU", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm_arm64" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023_arm64" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_arm64", "type": "Microsoft.Common.DropDown", "label": "FortiGate Image Version", - "multiLine": true, - "defaultValue": "7.6.6", + "defaultValue": "7.6.4", "toolTip": "Select the FortiGate image version", "constraints": { "required": false, "allowedValues": [ { - "label": "7.6.6", - "value": "7.6.6", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','76')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.5", + "value": "7.6.5" + }, + { + "label": "7.6.4", + "value": "7.6.4" + }, + { + "label": "7.6.3", + "value": "7.6.3" + }, + { + "label": "7.6.2", + "value": "7.6.2" + }, + { + "label": "7.6.1", + "value": "7.6.1" + }, + { + "label": "7.6.0", + "value": "7.6.0" }, { "label": "7.4.11", - "value": "7.4.11", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','74')]" + "value": "7.4.11" + }, + { + "label": "7.4.9", + "value": "7.4.9" + }, + { + "label": "7.4.8", + "value": "7.4.8" + }, + { + "label": "7.4.7", + "value": "7.4.7" + }, + { + "label": "7.4.6", + "value": "7.4.6" + }, + { + "label": "7.4.5", + "value": "7.4.5" + }, + { + "label": "7.4.4", + "value": "7.4.4" }, { - "label": "7.2.13", - "value": "7.2.13", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','72')]" + "label": "7.4.3", + "value": "7.4.3" + }, + { + "label": "7.2.12", + "value": "7.2.12" + }, + { + "label": "7.2.11", + "value": "7.2.11" + }, + { + "label": "7.2.10", + "value": "7.2.10" + }, + { + "label": "7.2.9", + "value": "7.2.9" + }, + { + "label": "7.2.8", + "value": "7.2.8" } ] }, @@ -704,8 +1022,8 @@ "label": "Size", "toolTip": "Select the instance size of your FortiGate VM solution. Minimum 2 NICs are required.", "recommendedSizes": [ - "Standard_D4ps_v6", "Standard_D2ps_v6", + "Standard_D4ps_v6", "Standard_D8ps_v6", "Standard_D16ps_v6", "Standard_D32ps_v6", @@ -758,8 +1076,8 @@ ], "constraints": { "allowedSizes": [ - "Standard_D4ps_v6", "Standard_D2ps_v6", + "Standard_D4ps_v6", "Standard_D8ps_v6", "Standard_D16ps_v6", "Standard_D32ps_v6", @@ -811,14 +1129,14 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_arm64.fortiGateImageVersion_arm64, '.',''), 2),'_arm64')]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[steps('instance').instancetype_arm64.fortiGateImageSKU_arm64]" }, "count": 2, "visible": true } ], - "visible": "[equals(basics('fortiGateInstanceArchitecture'),'_arm64')]" + "visible": "[equals(basics('fortiGateInstanceArchitecture'),'arm64')]" }, { "name": "availabilityOptions", @@ -841,7 +1159,7 @@ "name": "availabilityOptions", "type": "Microsoft.Common.DropDown", "label": "Availability Option", - "defaultValue": "[if(and(equals(basics('fortiGateInstanceArchitecture'),'_g2'),equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), contains(steps('instance').instancetype_x64_g2.selection_x64_g2, 'v6')), 'Availability Set', 'Availability Zones')]", + "defaultValue": "[if(and(equals(basics('fortiGateInstanceArchitecture'),'x64_g2'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'), contains(steps('instance').instancetype_x64_g2.selection_x64_g2, 'v6')), 'Availability Set', 'Availability Zones')]", "toolTip": "Deploy FortiGate VMs in an Availability Set or Availability Zones.", "constraints": { "required": false, @@ -881,14 +1199,14 @@ "options": { "text": "Bring Your Own License was selected in the basics blade. The license file(s) retrieved from support.fortinet.com can be uploaded here or uploaded after deployment. License files or FortiFlex license for the first three FortiGate VM systems can be provided via this deployment. Additional licenses need to be uplaoded localy on these systems after deployment or a custom template need to created." }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]" + "visible": "[or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64'))]" }, { "name": "fgtLicenseFortiFlexCheck", "type": "Microsoft.Common.CheckBox", "label": "My organisation is using the FortiFlex subscription service.", "toolTip": "My organisation is using the FortiFlex subscription service.", - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]" + "visible": "[or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64'))]" }, { "name": "fgt1content", @@ -905,7 +1223,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),1), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),1),not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgt2content", @@ -922,7 +1240,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),2), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),2),not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgt3content", @@ -939,7 +1257,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),3), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),3),not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgt4content", @@ -956,7 +1274,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),4), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),4),not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgt5content", @@ -973,7 +1291,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),5), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),5),not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgt6content", @@ -990,7 +1308,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),6), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),6),not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgt7content", @@ -1007,7 +1325,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),7), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),7),not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgt8content", @@ -1024,7 +1342,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),8), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),8),not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgt1fortiflex", @@ -1034,10 +1352,10 @@ "toolTip": "FortiGate VM 1 FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),1), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),1),steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgt2fortiflex", @@ -1047,10 +1365,10 @@ "toolTip": "FortiGate VM 2 FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),2), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),2),steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgt3fortiflex", @@ -1060,10 +1378,10 @@ "toolTip": "FortiGate VM 3 FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),3), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),3),steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgt4fortiflex", @@ -1073,10 +1391,10 @@ "toolTip": "FortiGate VM 4 FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),4), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),4),steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgt5fortiflex", @@ -1086,10 +1404,10 @@ "toolTip": "FortiGate VM 5 FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),5), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),5),steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgt6fortiflex", @@ -1099,10 +1417,10 @@ "toolTip": "FortiGate VM 6 FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),6), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),6),steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgt7fortiflex", @@ -1112,10 +1430,10 @@ "toolTip": "FortiGate VM 7 FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),7), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),7),steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgt8fortiflex", @@ -1125,10 +1443,10 @@ "toolTip": "FortiGate VM 8 FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), greaterOrEquals(int(basics('fortiGateCount')),8), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')),greaterOrEquals(int(basics('fortiGateCount')),8),steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgtLicensePAYGInfo", @@ -1138,7 +1456,7 @@ "text": "Pay As You Go licenses was selected in the basics blade and provisioned automatically durig deployment. Registration of the PAYG license is required to receive support.", "uri": "https://docs.fortinet.com/document/fortigate-public-cloud/7.4.0/azure-administration-guide/533394/creating-a-support-account" }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": "[not(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')))]" }, { "name": "fgtLicenseMigrateInfo", @@ -1680,7 +1998,6 @@ "name": "customvhd", "type": "Microsoft.Common.Section", "label": "Custom VHD", - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]", "elements": [ { "name": "customvhdcheck", @@ -1816,8 +2133,10 @@ ], "outputs": { "fortiGateNamePrefix": "[basics('fortiGateNamePrefix')]", - "fortiGateLicenseType": "[basics('fortiGateImageSKU')]", "fortiGateCount": "[int(basics('fortiGateCount'))]", + "fortiGateImageSKU_x64": "[steps('instance').instancetype_x64.fortiGateImageSKU_x64]", + "fortiGateImageSKU_x64_g2": "[steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2]", + "fortiGateImageSKU_arm64": "[steps('instance').instancetype_arm64.fortiGateImageSKU_arm64]", "fortiGateImageVersion_x64": "[steps('instance').instancetype_x64.fortiGateImageVersion_x64]", "fortiGateImageVersion_x64_g2": "[steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2]", "fortiGateImageVersion_arm64": "[steps('instance').instancetype_arm64.fortiGateImageVersion_arm64]", diff --git a/FortiGate/Active-Passive-ELB-ILB/azuredeploy.json b/FortiGate/Active-Passive-ELB-ILB/azuredeploy.json index 7fd5d006..6952ec65 100755 --- a/FortiGate/Active-Passive-ELB-ILB/azuredeploy.json +++ b/FortiGate/Active-Passive-ELB-ILB/azuredeploy.json @@ -20,12 +20,34 @@ "description": "Naming prefix for all deployed resources. The FortiGate VMs will have the suffix '-FGT-A' and '-FGT-B'. For example if the prefix is 'ACME01' the FortiGates will be named 'ACME01-FGT-A' and 'ACME01-FGT-B'" } }, - "fortiGateLicenseType": { + "fortiGateImageSKU_x64": { "type": "string", - "defaultValue": "fortinet_fg-vm_byol", + "defaultValue": "fortinet_fg-vm", "allowedValues": [ - "fortinet_fg-vm_byol", - "fortinet_fg-vm_payg" + "fortinet_fg-vm", + "fortinet_fg-vm_payg_2023" + ], + "metadata": { + "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)" + } + }, + "fortiGateImageSKU_x64_g2": { + "type": "string", + "defaultValue": "fortinet_fg-vm_g2", + "allowedValues": [ + "fortinet_fg-vm_g2", + "fortinet_fg-vm_payg_2023_g2" + ], + "metadata": { + "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)" + } + }, + "fortiGateImageSKU_arm64": { + "type": "string", + "defaultValue": "fortinet_fg-vm_arm64", + "allowedValues": [ + "fortinet_fg-vm_arm64", + "fortinet_fg-vm_payg_2023_arm64" ], "metadata": { "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately" @@ -36,8 +58,8 @@ "defaultValue": "x64", "allowedValues": [ "x64", - "_g2", - "_arm64" + "x64_g2", + "arm64" ], "metadata": { "description": "Indicates the instance Architecture of the VM deployment. Intel/AMD or ARM" @@ -45,11 +67,67 @@ }, "fortiGateImageVersion_x64": { "type": "string", - "defaultValue": "7.4.11", + "defaultValue": "7.4.9", "allowedValues": [ - "7.4.11", - "7.2.13", - "7.0.19" + "latest", + "7.6.0", + "7.4.9", + "7.4.8", + "7.4.7", + "7.4.6", + "7.4.5", + "7.4.4", + "7.4.3", + "7.4.2", + "7.4.1", + "7.4.0", + "7.2.12", + "7.2.11", + "7.2.10", + "7.2.9", + "7.2.8", + "7.2.7", + "7.2.6", + "7.2.5", + "7.2.4", + "7.2.3", + "7.2.2", + "7.2.1", + "7.2.0", + "7.0.17", + "7.0.15", + "7.0.14", + "7.0.13", + "7.0.12", + "7.0.11", + "7.0.10", + "7.0.9", + "7.0.8", + "7.0.6", + "7.0.5", + "7.0.4", + "7.0.3", + "7.0.2", + "7.0.1", + "7.0.0", + "6.4.16", + "6.4.15", + "6.4.13", + "6.4.12", + "6.4.11", + "6.4.10", + "6.4.9", + "6.4.8", + "6.4.7", + "6.4.6", + "6.4.5", + "6.4.3", + "6.4.2", + "6.4.0", + "6.2.5", + "6.2.4", + "6.2.2", + "6.2.0" ], "metadata": { "description": "Select the FortiGate image version" @@ -57,9 +135,13 @@ }, "fortiGateImageVersion_x64_g2": { "type": "string", - "defaultValue": "7.6.6", + "defaultValue": "7.6.200", "allowedValues": [ - "7.6.6" + "latest", + "7.6.200", + "7.6.100", + "7.6.4", + "7.6.3" ], "metadata": { "description": "Select the image version supporting Generation 2 VMs" @@ -67,11 +149,28 @@ }, "fortiGateImageVersion_arm64": { "type": "string", - "defaultValue": "7.6.6", + "defaultValue": "7.6.2", "allowedValues": [ - "7.6.6", + "latest", + "7.6.5", + "7.6.4", + "7.6.3", + "7.6.2", + "7.6.1", + "7.6.0", "7.4.11", - "7.2.13" + "7.4.9", + "7.4.8", + "7.4.7", + "7.4.6", + "7.4.5", + "7.4.4", + "7.4.3", + "7.2.12", + "7.2.11", + "7.2.10", + "7.2.9", + "7.2.8" ], "metadata": { "description": "Select the image version" @@ -578,12 +677,11 @@ }, "variables": { "imagePublisher": "fortinet", - "imageOffer": "fortinet_fortigate-vm", - "VMInstanceArchitecture": "[if(equals(parameters('fortiGateInstanceArchitecture'),'x64'),'',parameters('fortiGateInstanceArchitecture'))]", - "fortiGateImageSKU": "[concat(parameters('fortiGateLicenseType'),'_',take(replace(variables('fortiGateImageVersion'), '.',''), 2),variables('VMInstanceArchitecture'))]", - "fortiGateImageVersion": "[if(equals(parameters('fortiGateInstanceArchitecture'), '_arm64'), parameters('fortiGateImageVersion_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),parameters('fortiGateImageVersion_x64_g2'),parameters('fortiGateImageVersion_x64')))]", - "instanceType": "[if(equals(parameters('fortiGateInstanceArchitecture'), '_arm64'), parameters('instanceType_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),parameters('instanceType_x64_g2'),parameters('instanceType_x64')))]", - "diskControllerType": "[if(and(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),contains(parameters('instanceType_x64_g2'), '_v6')),'NVMe',json('null'))]", + "imageOffer": "fortinet_fortigate-vm_v5", + "fortiGateImageSKU": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('fortiGateImageSKU_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('fortiGateImageSKU_x64_g2'),parameters('fortiGateImageSKU_x64')))]", + "fortiGateImageVersion": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('fortiGateImageVersion_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('fortiGateImageVersion_x64_g2'),parameters('fortiGateImageVersion_x64')))]", + "instanceType": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('instanceType_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('instanceType_x64_g2'),parameters('instanceType_x64')))]", + "diskControllerType": "[if(and(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),contains(parameters('instanceType_x64_g2'), '_v6'),contains(parameters('fortiGateImageSKU_x64_g2'), '_g2')),'NVMe',json('null'))]", "availabilitySetName": "[concat(parameters('fortiGateNamePrefix'),'-AvailabilitySet')]", "availabilitySetId": { "id": "[resourceId('Microsoft.Compute/availabilitySets', variables('availabilitySetName'))]" @@ -728,8 +826,6 @@ "fastpathtag": { "fastpathenabled": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),'true','false')]" }, - "LegacyNVA":{"LegacyVMNVA": "Use legacy MLX ConnectX NIC"}, - "LegacyVMNVATag":"[if(equals(parameters('fortiGateInstanceArchitecture'),'x64'),variables('LegacyNVA'),json('{}'))]", "auxiliaryMode": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),'AcceleratedConnections','None')]", "auxiliarySku": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),parameters('acceleratedConnectionsSku'),'None')]" }, @@ -737,7 +833,7 @@ { "name": "[concat(parameters('fortiGateNamePrefix'), '-fortinetdeployment-', uniquestring(resourceGroup().id))]", "type": "Microsoft.Resources/deployments", - "apiVersion": "2025-04-01", + "apiVersion": "2023-07-01", "properties": { "mode": "Incremental", "template": { @@ -751,7 +847,7 @@ "condition": "[not(variables('useAZ'))]", "name": "[variables('availabilitySetName')]", "type": "Microsoft.Compute/availabilitySets", - "apiVersion": "2025-04-01", + "apiVersion": "2023-09-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/availabilitySets'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/availabilitySets']), parameters('fortinetTags')) ]", "properties": { @@ -766,7 +862,7 @@ "condition": "[equals(parameters('vnetNewOrExisting'), 'new')]", "name": "[variables('vnetName')]", "type": "Microsoft.Network/virtualNetworks", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/virtualNetworks'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/virtualNetworks']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -818,7 +914,7 @@ { "name": "[variables('routeTableName')]", "type": "Microsoft.Network/routeTables", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/routeTables'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/routeTables']), parameters('fortinetTags')) ]", "properties": { @@ -845,7 +941,7 @@ { "name": "[variables('nsgName')]", "type": "Microsoft.Network/networkSecurityGroups", - "apiVersion": "2025-05-01", + "apiVersion": "2023-04-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkSecurityGroups'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkSecurityGroups']), parameters('fortinetTags')) ]", "properties": { @@ -885,7 +981,7 @@ "condition": "[equals(parameters('publicIP1NewOrExisting'), 'new')]", "name": "[variables('publicIP1Name')]", "type": "Microsoft.Network/publicIPAddresses", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/publicIPAddresses'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/publicIPAddresses']), parameters('fortinetTags')) ]", "sku": { @@ -903,7 +999,7 @@ "condition": "[equals(parameters('publicIP2NewOrExisting'), 'new')]", "type": "Microsoft.Network/publicIPAddresses", "name": "[variables('publicIP2Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/publicIPAddresses'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/publicIPAddresses']), parameters('fortinetTags')) ]", "sku": { @@ -918,7 +1014,7 @@ "condition": "[equals(parameters('publicIP3NewOrExisting'), 'new')]", "type": "Microsoft.Network/publicIPAddresses", "name": "[variables('publicIP3Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/publicIPAddresses'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/publicIPAddresses']), parameters('fortinetTags')) ]", "sku": { @@ -932,7 +1028,7 @@ { "type": "Microsoft.Network/loadBalancers", "name": "[variables('externalLBName')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/loadBalancers'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/loadBalancers']), parameters('fortinetTags')) ]", "sku": { @@ -1013,7 +1109,7 @@ { "type": "Microsoft.Network/loadBalancers", "name": "[variables('internalLBName')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/loadBalancers'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/loadBalancers']), parameters('fortinetTags')) ]", "sku": { @@ -1078,7 +1174,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgaNic1Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces'],variables('fastpathtag')), union(parameters('fortinetTags'),variables('fastpathtag'))) ]", "dependsOn": [ @@ -1116,7 +1212,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgbNic1Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces'],variables('fastpathtag')), union(parameters('fortinetTags'),variables('fastpathtag'))) ]", "dependsOn": [ @@ -1154,7 +1250,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgaNic2Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces'],variables('fastpathtag')), union(parameters('fortinetTags'),variables('fastpathtag'))) ]", "dependsOn": [ @@ -1192,7 +1288,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgbNic2Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces'],variables('fastpathtag')), union(parameters('fortinetTags'),variables('fastpathtag'))) ]", "dependsOn": [ @@ -1230,7 +1326,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgaNic3Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -1260,7 +1356,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgbNic3Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -1290,7 +1386,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgaNic4Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -1321,7 +1417,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgbNic4Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -1352,14 +1448,14 @@ { "type": "Microsoft.Compute/virtualMachines", "name": "[variables('fgaVmName')]", - "apiVersion": "2025-04-01", + "apiVersion": "2023-09-01", "location": "[parameters('location')]", - "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(variables('LegacyVMNVATag'),parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/virtualMachines']), union(variables('LegacyVMNVATag'),parameters('fortinetTags'))) ]", + "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces']), parameters('fortinetTags')) ]", "identity": { "type": "SystemAssigned" }, "zones": "[if(variables('useAZ'), variables('zone1'), json('null'))]", - "plan": "[if(and(equals(parameters('fortiGateLicenseType'),'fortinet_fg-vm_byol'),not(equals(parameters('customImageReference'),''))), json('null'), variables('virtualMachinePlan'))]", + "plan": "[if(and(or(equals(variables('fortiGateImageSKU'),'fortinet_fg-vm'),equals(variables('fortiGateImageSKU'),'fortinet_fg-vm_arm64')),not(equals(parameters('customImageReference'),''))), json('null'), variables('virtualMachinePlan'))]", "dependsOn": [ "[variables('fgaNic1Id')]", "[variables('fgaNic2Id')]", @@ -1378,7 +1474,7 @@ "customData": "[variables('fgaCustomData')]" }, "storageProfile": { - "imageReference": "[if(and(equals(parameters('fortiGateLicenseType'),'fortinet_fg-vm_byol'),not(equals(parameters('customImageReference'),''))), variables('imageReferenceCustomImage'), variables('imageReferenceMarketplace'))]", + "imageReference": "[if(and(or(equals(variables('fortiGateImageSKU'),'fortinet_fg-vm'),equals(variables('fortiGateImageSKU'),'fortinet_fg-vm_arm64')),not(equals(parameters('customImageReference'),''))), variables('imageReferenceCustomImage'), variables('imageReferenceMarketplace'))]", "diskControllerType": "[variables('diskControllerType')]", "osDisk": { "createOption": "FromImage" @@ -1429,7 +1525,7 @@ { "type": "Microsoft.Compute/virtualMachines", "name": "[variables('fgbVmName')]", - "apiVersion": "2025-04-01", + "apiVersion": "2023-09-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces']), parameters('fortinetTags')) ]", "identity": { @@ -1507,19 +1603,19 @@ "outputs": { "fortiGatePublicIP": { "type": "string", - "value": "[if(equals(parameters('publicIP1NewOrExisting'), 'new'), reference(variables('publicIP1Id'), '2025-05-01').ipAddress, '')]" + "value": "[if(equals(parameters('publicIP1NewOrExisting'), 'new'), reference(variables('publicIP1Id')).ipAddress, '')]" }, "fortiGateFQDN": { "type": "string", - "value": "[if(equals(parameters('publicIP1NewOrExisting'), 'new'), reference(variables('publicIP1Id'), '2025-05-01').dnsSettings.fqdn, '')]" + "value": "[if(equals(parameters('publicIP1NewOrExisting'), 'new'), reference(variables('publicIP1Id')).dnsSettings.fqdn, '')]" }, "fortiGateAManagementPublicIP": { "type": "string", - "value": "[if(equals(parameters('publicIP2NewOrExisting'), 'new'), reference(variables('publicIP2Id'), '2025-05-01').ipAddress, '')]" + "value": "[if(equals(parameters('publicIP2NewOrExisting'), 'new'), reference(variables('publicIP2Id')).ipAddress, '')]" }, "fortiGateBManagementPublicIP": { "type": "string", - "value": "[if(equals(parameters('publicIP3NewOrExisting'), 'new'), reference(variables('publicIP3Id'), '2025-05-01').ipAddress, '')]" + "value": "[if(equals(parameters('publicIP3NewOrExisting'), 'new'), reference(variables('publicIP3Id')).ipAddress, '')]" } } } diff --git a/FortiGate/Active-Passive-ELB-ILB/createUiDefinition.json b/FortiGate/Active-Passive-ELB-ILB/createUiDefinition.json index a4a2caad..a8b48d48 100644 --- a/FortiGate/Active-Passive-ELB-ILB/createUiDefinition.json +++ b/FortiGate/Active-Passive-ELB-ILB/createUiDefinition.json @@ -24,46 +24,25 @@ "uri": "https://github.com/fortinet/azure-templates/tree/main/FortiGate/Active-Passive-ELB-ILB" } }, - { - "name": "fortiGateImageSKU", - "type": "Microsoft.Common.DropDown", - "label": "Fortigate-VM License Type", - "defaultValue": "Bring Your Own License or FortiFlex", - "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", - "constraints": { - "required": false, - "allowedValues": [ - { - "label": "Bring Your Own License or FortiFlex", - "value": "fortinet_fg-vm_byol" - }, - { - "label": "Pay As You Go", - "value": "fortinet_fg-vm_payg" - } - ] - }, - "visible": true - }, { "name": "fortiGateInstanceArchitecture", "type": "Microsoft.Common.OptionsGroup", "label": "FortiGate VM instance Architecture", - "defaultValue": "X64 - Intel / AMD based processors | Gen1 VM FortiGate 7.0 - 7.4", + "defaultValue": "x64 - Intel / AMD based processors", "toolTip": "Select FortiGate VM instance Architecture", "constraints": { "allowedValues": [ { - "label": "X64 - Intel / AMD based processors | Gen1 VM FortiGate 7.0 - 7.4", + "label": "x64 - Intel / AMD based processors", "value": "x64" }, { - "label": "X64 - Intel / AMD based processors | Gen2 VM FortiGate 7.6+", - "value": "_g2" + "label": "x64 - Intel / AMD based processors - Generation 2 VM (> 7.6.1)", + "value": "x64_g2" }, { - "label": "ARM64 - ARM based processors | Gen2 VM FortiGate 7.2 - 7.6", - "value": "_arm64" + "label": "ARM64 - ARM based processors (Azure Cobalt or Ampere Altra) - Generation 2 VM (> 7.2.8)", + "value": "arm64" } ], "required": true @@ -139,41 +118,273 @@ { "name": "instancetype_x64", "type": "Microsoft.Common.Section", - "label": "Instance Type x64 Generation 1", + "label": "Instance Type x64", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_x64", + "type": "Microsoft.Common.DropDown", + "label": "FortiGate Image SKU", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_x64", "type": "Microsoft.Common.DropDown", "label": "FortiGate Image Version", - "multiLine": true, - "defaultValue": "7.4.11", + "defaultValue": "7.4.9", "toolTip": "Select the FortiGate image version", "constraints": { "required": false, "allowedValues": [ { - "label": "7.4.11", - "value": "7.4.11", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','74')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.0", + "value": "7.6.0" + }, + { + "label": "7.4.9", + "value": "7.4.9" + }, + { + "label": "7.4.8", + "value": "7.4.8" + }, + { + "label": "7.4.7", + "value": "7.4.7" + }, + { + "label": "7.4.6", + "value": "7.4.6" + }, + { + "label": "7.4.5", + "value": "7.4.5" + }, + { + "label": "7.4.4", + "value": "7.4.4" + }, + { + "label": "7.4.3", + "value": "7.4.3" + }, + { + "label": "7.4.2", + "value": "7.4.2" + }, + { + "label": "7.4.1", + "value": "7.4.1" + }, + { + "label": "7.4.0", + "value": "7.4.0" + }, + { + "label": "7.2.12", + "value": "7.2.12" + }, + { + "label": "7.2.11", + "value": "7.2.11" + }, + { + "label": "7.2.10", + "value": "7.2.10" + }, + { + "label": "7.2.9", + "value": "7.2.9" + }, + { + "label": "7.2.8", + "value": "7.2.8" + }, + { + "label": "7.2.7", + "value": "7.2.7" + }, + { + "label": "7.2.6", + "value": "7.2.6" + }, + { + "label": "7.2.5", + "value": "7.2.5" + }, + { + "label": "7.2.4", + "value": "7.2.4" + }, + { + "label": "7.2.3", + "value": "7.2.3" + }, + { + "label": "7.2.2", + "value": "7.2.2" + }, + { + "label": "7.2.1", + "value": "7.2.1" + }, + { + "label": "7.2.0", + "value": "7.2.0" + }, + { + "label": "7.0.17", + "value": "7.0.17" + }, + { + "label": "7.0.15", + "value": "7.0.15" + }, + { + "label": "7.0.14", + "value": "7.0.14" + }, + { + "label": "7.0.13", + "value": "7.0.13" + }, + { + "label": "7.0.12", + "value": "7.0.12" + }, + { + "label": "7.0.11", + "value": "7.0.11" + }, + { + "label": "7.0.10", + "value": "7.0.10" + }, + { + "label": "7.0.9", + "value": "7.0.9" + }, + { + "label": "7.0.8", + "value": "7.0.8" + }, + { + "label": "7.0.6", + "value": "7.0.6" + }, + { + "label": "7.0.5", + "value": "7.0.5" + }, + { + "label": "7.0.4", + "value": "7.0.4" + }, + { + "label": "7.0.3", + "value": "7.0.3" + }, + { + "label": "7.0.2", + "value": "7.0.2" + }, + { + "label": "7.0.1", + "value": "7.0.1" + }, + { + "label": "7.0.0", + "value": "7.0.0" + }, + { + "label": "6.4.16", + "value": "6.4.16" + }, + { + "label": "6.4.15", + "value": "6.4.15" + }, + { + "label": "6.4.13", + "value": "6.4.13" + }, + { + "label": "6.4.12", + "value": "6.4.12" + }, + { + "label": "6.4.11", + "value": "6.4.11" + }, + { + "label": "6.4.10", + "value": "6.4.10" + }, + { + "label": "6.4.9", + "value": "6.4.9" + }, + { + "label": "6.4.8", + "value": "6.4.8" + }, + { + "label": "6.4.7", + "value": "6.4.7" + }, + { + "label": "6.4.6", + "value": "6.4.6" + }, + { + "label": "6.4.5", + "value": "6.4.5" + }, + { + "label": "6.4.3", + "value": "6.4.3" + }, + { + "label": "6.4.2", + "value": "6.4.2" }, { - "label": "7.2.13", - "value": "7.2.13", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','72')]" + "label": "6.4.0", + "value": "6.4.0" }, { - "label": "7.0.19", - "value": "7.0.19", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','70')]" + "label": "6.2.5", + "value": "6.2.5" + }, + { + "label": "6.2.4", + "value": "6.2.4" + }, + { + "label": "6.2.2", + "value": "6.2.2" + }, + { + "label": "6.2.0", + "value": "6.2.0" } ] }, @@ -292,11 +503,21 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_x64.fortiGateImageVersion_x64, '.',''), 2))]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[if(or(equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.1'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.2'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'latest')),concat(steps('instance').instancetype_x64.fortiGateImageSKU_x64,'_g2'),steps('instance').instancetype_x64.fortiGateImageSKU_x64)]" }, "count": 2, "visible": true + }, + { + "name": "versionInfo", + "type": "Microsoft.Common.InfoBox", + "visible": "[and(contains(steps('instance').instancetype_x64.selection_x64, '_v6'),not(or(equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.1'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.2'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'latest'))))]", + "options": { + "icon": "Error", + "text": "Dsv6 and Esv6 Instance families require a Gen2 VM Image, support for MANA network drivers and are incompatible with the selected FortiGate version, please select version 7.6.1 or higher", + "uri": "https://azure.microsoft.com/en-ca/updates/public-preview-internet-inbound-for-network-virtual-appliances-in-virtual-wan-hubs/" + } } ], "visible": "[equals(basics('fortiGateInstanceArchitecture'),'x64')]" @@ -304,31 +525,57 @@ { "name": "instancetype_x64_g2", "type": "Microsoft.Common.Section", - "label": "Instance Type x64 Generation 2", + "label": "Instance Type x64_g2", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_x64_g2", + "type": "Microsoft.Common.DropDown", + "label": "Fortigate-VM License Type", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm_g2" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023_g2" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_x64_g2", "type": "Microsoft.Common.DropDown", "label": "Fortigate Image Version", - "multiLine": true, - "defaultValue": "7.6.6", - "toolTip": "Select the FortiGate image version", + "defaultValue": "7.6.2", + "toolTip": "Only 6.x has the A/P HA feature currently", "constraints": { "required": false, "allowedValues": [ { - "label": "7.6.6", - "value": "7.6.6", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','76')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.2", + "value": "7.6.200" + }, + { + "label": "7.6.1", + "value": "7.6.100" + }, + { + "label": "7.6.4", + "value": "7.6.4" + }, + { + "label": "7.6.3", + "value": "7.6.3" } ] }, @@ -342,7 +589,7 @@ "text": "For this FortiGate deployment, it is recommended to use the general purpose or compute optimized virtual machines. A selection of supported instances sizes is listed in our documentation.", "link": { "label": "Learn more", - "uri": "https://docs.fortinet.com/document/fortigate-public-cloud/7.6.0/azure-administration-guide/562841/instance-type-support" + "uri": "https://docs.fortinet.com/document/fortigate-public-cloud/7.4.0/azure-administration-guide/562841/instance-type-support" } } }, @@ -352,8 +599,9 @@ "label": "Size", "toolTip": "Select the instance size of your FortiGate VM solution. Minimum 4 NICs are required.", "recommendedSizes": [ - "Standard_D8_v4", + "Standard_D2_v4", "Standard_D4_v4", + "Standard_D8_v4", "Standard_D16_v4", "Standard_D32_v4", "Standard_D2s_v4", @@ -434,8 +682,12 @@ ], "constraints": { "allowedSizes": [ - "Standard_D8_v4", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3", "Standard_D4_v4", + "Standard_D8_v4", "Standard_D16_v4", "Standard_D32_v4", "Standard_D2s_v4", @@ -506,8 +758,8 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2, '.',''), 2),'_g2')]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2]" }, "count": 2, "visible": true @@ -515,7 +767,7 @@ { "name": "versionInfo", "type": "Microsoft.Common.InfoBox", - "visible": "[and(contains(steps('instance').instancetype_x64_g2.selection_x64_g2, '_v6'),not(or(equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.6'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'latest'))))]", + "visible": "[and(contains(steps('instance').instancetype_x64_g2.selection_x64_g2, '_v6'),not(or(equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.100'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.200'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'latest'))))]", "options": { "icon": "Error", "text": "Dsv6 and Esv6 Instance families require a Gen2 VM Image, support for MANA network drivers and are incompatible with the selected FortiGate version, please select version 7.6.1 or higher", @@ -523,7 +775,7 @@ } } ], - "visible": "[equals(basics('fortiGateInstanceArchitecture'),'_g2')]" + "visible": "[equals(basics('fortiGateInstanceArchitecture'),'x64_g2')]" }, { "name": "instancetype_arm64", @@ -531,38 +783,114 @@ "label": "Instance Type ARM 64", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_arm64", + "type": "Microsoft.Common.DropDown", + "label": "FortiGate Image SKU", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm_arm64" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023_arm64" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_arm64", "type": "Microsoft.Common.DropDown", "label": "FortiGate Image Version", - "multiLine": true, - "defaultValue": "7.6.6", + "defaultValue": "7.6.4", "toolTip": "Select the FortiGate image version", "constraints": { "required": false, "allowedValues": [ { - "label": "7.6.6", - "value": "7.6.6", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','76')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.5", + "value": "7.6.5" + }, + { + "label": "7.6.4", + "value": "7.6.4" + }, + { + "label": "7.6.3", + "value": "7.6.3" + }, + { + "label": "7.6.2", + "value": "7.6.2" + }, + { + "label": "7.6.1", + "value": "7.6.1" + }, + { + "label": "7.6.0", + "value": "7.6.0" }, { "label": "7.4.11", - "value": "7.4.11", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','74')]" + "value": "7.4.11" + }, + { + "label": "7.4.9", + "value": "7.4.9" + }, + { + "label": "7.4.8", + "value": "7.4.8" + }, + { + "label": "7.4.7", + "value": "7.4.7" + }, + { + "label": "7.4.6", + "value": "7.4.6" + }, + { + "label": "7.4.5", + "value": "7.4.5" + }, + { + "label": "7.4.4", + "value": "7.4.4" }, { - "label": "7.2.13", - "value": "7.2.13", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','72')]" + "label": "7.4.3", + "value": "7.4.3" + }, + { + "label": "7.2.12", + "value": "7.2.12" + }, + { + "label": "7.2.11", + "value": "7.2.11" + }, + { + "label": "7.2.10", + "value": "7.2.10" + }, + { + "label": "7.2.9", + "value": "7.2.9" + }, + { + "label": "7.2.8", + "value": "7.2.8" } ] }, @@ -619,12 +947,6 @@ "Standard_D8ps_v6", "Standard_D16ps_v6", "Standard_D32ps_v6", - "Standard_D8pds_v6", - "Standard_D16pds_v6", - "Standard_D32pds_v6", - "Standard_D8pls_v6", - "Standard_D16pls_v6", - "Standard_D32pls_v6", "Standard_D8ps_v5", "Standard_D16ps_v5", "Standard_D32ps_v5", @@ -651,14 +973,14 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_arm64.fortiGateImageVersion_arm64, '.',''), 2),'_arm64')]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[steps('instance').instancetype_arm64.fortiGateImageSKU_arm64]" }, "count": 2, "visible": true } ], - "visible": "[equals(basics('fortiGateInstanceArchitecture'),'_arm64')]" + "visible": "[equals(basics('fortiGateInstanceArchitecture'),'arm64')]" }, { "name": "availabilityOptions", @@ -681,7 +1003,7 @@ "name": "availabilityOptions", "type": "Microsoft.Common.DropDown", "label": "Availability Option", - "defaultValue": "[if(and(equals(basics('fortiGateInstanceArchitecture'),'_g2'),equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), contains(steps('instance').instancetype_x64_g2.selection_x64_g2, 'v6')), 'Availability Set', 'Availability Zones')]", + "defaultValue": "[if(and(equals(basics('fortiGateInstanceArchitecture'),'x64_g2'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'), contains(steps('instance').instancetype_x64_g2.selection_x64_g2, 'v6')), 'Availability Set', 'Availability Zones')]", "toolTip": "Deploy FortiGate VMs in an Availability Set or Availability Zones.", "constraints": { "required": false, @@ -718,7 +1040,7 @@ { "name": "fgtLicenseBYOLInfo", "type": "Microsoft.Common.TextBlock", - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]", + "visible": "[or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64'))]", "options": { "text": "Bring Your Own License was selected in the basics blade. The license file(s) retrieved from support.fortinet.com can be uploaded here or uploaded after deployment." } @@ -728,7 +1050,7 @@ "type": "Microsoft.Common.CheckBox", "label": "My organisation is using the FortiFlex subscription service.", "toolTip": "My organisation is using the FortiFlex subscription service.", - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]" + "visible": "[or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64'))]" }, { "name": "fgtAcontent", @@ -745,7 +1067,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')) ,not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgtBcontent", @@ -762,7 +1084,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')) ,not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgtAfortiflex", @@ -772,10 +1094,10 @@ "toolTip": "FortiGate A FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')) ,steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgtBfortiflex", @@ -785,10 +1107,10 @@ "toolTip": "FortiGate B FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')) ,steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgtLicensePAYGInfo", @@ -798,7 +1120,7 @@ "text": "Pay As You Go licenses was selected in the basics blade and provisioned automatically durig deployment. Registration of the PAYG license is required to receive support.", "uri": "https://docs.fortinet.com/document/fortigate-public-cloud/7.4.0/azure-administration-guide/533394/creating-a-support-account" }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": "[not(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')))]" }, { "name": "fgtLicenseMigrateInfo", @@ -985,7 +1307,7 @@ "type": "Microsoft.Common.CheckBox", "label": "Accelerated Connections feature (PREVIEW)", "toolTip": "This option enables the Accelerated Connections feature. provides higher bandwidth at an additional cost", - "visible": false + "visible": "[and(equals(steps('networking').acceleratednetworksection.acceleratednetworking, 'true'),equals(basics('fortiGateInstanceArchitecture'),'x64'),not(contains(steps('instance').instancetype.selection, 'v5')))]" }, { "name": "acceleratedconnectionssku", @@ -1014,7 +1336,7 @@ } ] }, - "visible": false + "visible": "[and(steps('networking').acceleratednetworksection.acceleratedconnectionscheck,equals(basics('fortiGateInstanceArchitecture'),'x64'),not(contains(steps('instance').instancetype_x64.selection_x64, 'v5')))]" }, { "name": "AccelConnwarning", @@ -1024,7 +1346,7 @@ "text": "This feature is currently in Preview, please contact Fortinet at 'azuretech@fortinet.com'. Verify the limitations with Microsoft on supported regions. Currently Dv5 instance types are not supported.", "uri": "https://learn.microsoft.com/en-us/azure/networking/nva-accelerated-connections" }, - "visible": false + "visible": "[and(steps('networking').acceleratednetworksection.acceleratedconnectionscheck,equals(basics('fortiGateInstanceArchitecture'),'x64'),not(contains(steps('instance').instancetype_x64.selection_x64, 'v5')))]" } ] } @@ -1357,7 +1679,6 @@ "name": "customvhd", "type": "Microsoft.Common.Section", "label": "Custom VHD", - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]", "elements": [ { "name": "customvhdcheck", @@ -1493,7 +1814,9 @@ ], "outputs": { "fortiGateNamePrefix": "[basics('fortiGateNamePrefix')]", - "fortiGateLicenseType": "[basics('fortiGateImageSKU')]", + "fortiGateImageSKU_x64": "[steps('instance').instancetype_x64.fortiGateImageSKU_x64]", + "fortiGateImageSKU_x64_g2": "[steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2]", + "fortiGateImageSKU_arm64": "[steps('instance').instancetype_arm64.fortiGateImageSKU_arm64]", "fortiGateImageVersion_x64": "[steps('instance').instancetype_x64.fortiGateImageVersion_x64]", "fortiGateImageVersion_x64_g2": "[steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2]", "fortiGateImageVersion_arm64": "[steps('instance').instancetype_arm64.fortiGateImageVersion_arm64]", diff --git a/FortiGate/Active-Passive-SDN/azuredeploy.json b/FortiGate/Active-Passive-SDN/azuredeploy.json index 241067ff..654a5220 100755 --- a/FortiGate/Active-Passive-SDN/azuredeploy.json +++ b/FortiGate/Active-Passive-SDN/azuredeploy.json @@ -20,12 +20,34 @@ "description": "Naming prefix for all deployed resources" } }, - "fortiGateLicenseType": { + "fortiGateImageSKU_x64": { "type": "string", - "defaultValue": "fortinet_fg-vm_byol", + "defaultValue": "fortinet_fg-vm", "allowedValues": [ - "fortinet_fg-vm_byol", - "fortinet_fg-vm_payg" + "fortinet_fg-vm", + "fortinet_fg-vm_payg_2023" + ], + "metadata": { + "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)" + } + }, + "fortiGateImageSKU_x64_g2": { + "type": "string", + "defaultValue": "fortinet_fg-vm_g2", + "allowedValues": [ + "fortinet_fg-vm_g2", + "fortinet_fg-vm_payg_2023_g2" + ], + "metadata": { + "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)" + } + }, + "fortiGateImageSKU_arm64": { + "type": "string", + "defaultValue": "fortinet_fg-vm_arm64", + "allowedValues": [ + "fortinet_fg-vm_arm64", + "fortinet_fg-vm_payg_2023_arm64" ], "metadata": { "description": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately" @@ -36,8 +58,8 @@ "defaultValue": "x64", "allowedValues": [ "x64", - "_g2", - "_arm64" + "x64_g2", + "arm64" ], "metadata": { "description": "Indicates the instance Architecture of the VM deployment. Intel/AMD or ARM" @@ -45,21 +67,86 @@ }, "fortiGateImageVersion_x64": { "type": "string", - "defaultValue": "7.4.11", + "defaultValue": "7.4.9", "allowedValues": [ + "latest", + "7.6.0", "7.4.11", + "7.4.9", + "7.4.8", + "7.4.7", + "7.4.6", + "7.4.5", + "7.4.4", + "7.4.3", + "7.4.2", + "7.4.1", + "7.4.0", "7.2.13", - "7.0.19" + "7.2.12", + "7.2.11", + "7.2.10", + "7.2.9", + "7.2.8", + "7.2.7", + "7.2.6", + "7.2.5", + "7.2.4", + "7.2.3", + "7.2.2", + "7.2.1", + "7.2.0", + "7.0.18", + "7.0.17", + "7.0.15", + "7.0.14", + "7.0.13", + "7.0.12", + "7.0.11", + "7.0.10", + "7.0.9", + "7.0.8", + "7.0.6", + "7.0.5", + "7.0.4", + "7.0.3", + "7.0.2", + "7.0.1", + "7.0.0", + "6.4.16", + "6.4.15", + "6.4.13", + "6.4.12", + "6.4.11", + "6.4.10", + "6.4.9", + "6.4.8", + "6.4.7", + "6.4.6", + "6.4.5", + "6.4.3", + "6.4.2", + "6.4.0", + "6.2.5", + "6.2.4", + "6.2.2", + "6.2.0" ], "metadata": { - "description": "Select the image version supporting Generation 1 VMs" + "description": "FortiGate Version" } }, "fortiGateImageVersion_x64_g2": { "type": "string", - "defaultValue": "7.6.6", + "defaultValue": "7.6.4", "allowedValues": [ - "7.6.6" + "latest", + "7.6.500", + "7.6.200", + "7.6.100", + "7.6.5", + "7.6.4", + "7.6.3" ], "metadata": { "description": "Select the image version supporting Generation 2 VMs" @@ -67,14 +154,31 @@ }, "fortiGateImageVersion_arm64": { "type": "string", - "defaultValue": "7.6.6", + "defaultValue": "7.6.4", "allowedValues": [ - "7.6.6", + "latest", + "7.6.5", + "7.6.4", + "7.6.3", + "7.6.2", + "7.6.1", + "7.6.0", "7.4.11", - "7.2.13" + "7.4.9", + "7.4.8", + "7.4.7", + "7.4.6", + "7.4.5", + "7.4.4", + "7.4.3", + "7.2.12", + "7.2.11", + "7.2.10", + "7.2.9", + "7.2.8" ], "metadata": { - "description": "Select the image version supporting ARM64 VMs" + "description": "FortiGate version" } }, "fortiGateAdditionalCustomData": { @@ -582,12 +686,11 @@ }, "variables": { "imagePublisher": "fortinet", - "imageOffer": "fortinet_fortigate-vm", - "VMInstanceArchitecture": "[if(equals(parameters('fortiGateInstanceArchitecture'),'x64'),'',parameters('fortiGateInstanceArchitecture'))]", - "fortiGateImageSKU": "[concat(parameters('fortiGateLicenseType'),'_',take(replace(variables('fortiGateImageVersion'), '.',''), 2),variables('VMInstanceArchitecture'))]", - "fortiGateImageVersion": "[if(equals(parameters('fortiGateInstanceArchitecture'), '_arm64'), parameters('fortiGateImageVersion_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),parameters('fortiGateImageVersion_x64_g2'),parameters('fortiGateImageVersion_x64')))]", - "instanceType": "[if(equals(parameters('fortiGateInstanceArchitecture'), '_arm64'), parameters('instanceType_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),parameters('instanceType_x64_g2'),parameters('instanceType_x64')))]", - "diskControllerType": "[if(and(equals(parameters('fortiGateInstanceArchitecture'), '_g2'),contains(parameters('instanceType_x64_g2'), '_v6')),'NVMe',json('null'))]", + "imageOffer": "fortinet_fortigate-vm_v5", + "fortiGateImageSKU": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('fortiGateImageSKU_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('fortiGateImageSKU_x64_g2'),parameters('fortiGateImageSKU_x64')))]", + "fortiGateImageVersion": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('fortiGateImageVersion_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('fortiGateImageVersion_x64_g2'),parameters('fortiGateImageVersion_x64')))]", + "instanceType": "[if(equals(parameters('fortiGateInstanceArchitecture'), 'arm64'), parameters('instanceType_arm64'), if(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),parameters('instanceType_x64_g2'),parameters('instanceType_x64')))]", + "diskControllerType": "[if(and(equals(parameters('fortiGateInstanceArchitecture'), 'x64_g2'),contains(parameters('instanceType_x64_g2'), '_v6'),contains(parameters('fortiGateImageSKU_x64_g2'), '_g2')),'NVMe',json('null'))]", "availabilitySetName": "[concat(parameters('fortiGateNamePrefix'),'-AvailabilitySet')]", "availabilitySetId": { "id": "[resourceId('Microsoft.Compute/availabilitySets', variables('availabilitySetName'))]" @@ -718,8 +821,6 @@ "fastpathtag": { "fastpathenabled": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),'true','false')]" }, - "LegacyNVA":{"LegacyVMNVA": "Use legacy MLX ConnectX NIC"}, - "LegacyVMNVATag":"[if(equals(parameters('fortiGateInstanceArchitecture'),'x64'),variables('LegacyNVA'),json('{}'))]", "auxiliaryMode": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),'AcceleratedConnections','None')]", "auxiliarySku": "[if(and(equals(parameters('acceleratedNetworking'),'true'),parameters('acceleratedConnections')),parameters('acceleratedConnectionsSku'),'None')]" }, @@ -727,7 +828,7 @@ { "name": "[concat(parameters('fortiGateNamePrefix'), '-fortinetdeployment-', uniquestring(resourceGroup().id))]", "type": "Microsoft.Resources/deployments", - "apiVersion": "2025-04-01", + "apiVersion": "2023-07-01", "properties": { "mode": "Incremental", "template": { @@ -741,7 +842,7 @@ "condition": "[not(variables('useAZ'))]", "name": "[variables('availabilitySetName')]", "type": "Microsoft.Compute/availabilitySets", - "apiVersion": "2025-04-01", + "apiVersion": "2023-09-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/availabilitySets'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/availabilitySets']), parameters('fortinetTags')) ]", "properties": { @@ -756,7 +857,7 @@ "condition": "[equals(parameters('vnetNewOrExisting'), 'new')]", "name": "[variables('vnetName')]", "type": "Microsoft.Network/virtualNetworks", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/virtualNetworks'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/virtualNetworks']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -808,7 +909,7 @@ { "type": "Microsoft.Network/routeTables", "name": "[variables('routeTableName')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/routeTables'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/routeTables']), parameters('fortinetTags')) ]", "properties": { @@ -827,7 +928,7 @@ { "type": "Microsoft.Network/networkSecurityGroups", "name": "[variables('nsgName')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkSecurityGroups'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkSecurityGroups']), parameters('fortinetTags')) ]", "properties": { @@ -867,7 +968,7 @@ "condition": "[equals(parameters('publicIP1NewOrExisting'), 'new')]", "type": "Microsoft.Network/publicIPAddresses", "name": "[variables('publicIP1Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/publicIPAddresses'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/publicIPAddresses']), parameters('fortinetTags')) ]", "sku": { @@ -885,7 +986,7 @@ "condition": "[equals(parameters('publicIP2NewOrExisting'), 'new')]", "type": "Microsoft.Network/publicIPAddresses", "name": "[variables('publicIP2Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/publicIPAddresses'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/publicIPAddresses']), parameters('fortinetTags')) ]", "sku": { @@ -900,7 +1001,7 @@ "condition": "[equals(parameters('publicIP3NewOrExisting'), 'new')]", "type": "Microsoft.Network/publicIPAddresses", "name": "[variables('publicIP3Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/publicIPAddresses'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/publicIPAddresses']), parameters('fortinetTags')) ]", "sku": { @@ -914,7 +1015,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgaNic1Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces'],variables('fastpathtag')), union(parameters('fortinetTags'),variables('fastpathtag'))) ]", "dependsOn": [ @@ -947,7 +1048,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgbNic1Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces'],variables('fastpathtag')), union(parameters('fortinetTags'),variables('fastpathtag'))) ]", "dependsOn": [ @@ -980,7 +1081,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgaNic2Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces'],variables('fastpathtag')), union(parameters('fortinetTags'),variables('fastpathtag'))) ]", "dependsOn": [ @@ -1012,7 +1113,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgbNic2Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces'],variables('fastpathtag')), union(parameters('fortinetTags'),variables('fastpathtag'))) ]", "dependsOn": [ @@ -1045,7 +1146,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgaNic3Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -1075,7 +1176,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgbNic3Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -1106,7 +1207,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgaNic4Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -1137,7 +1238,7 @@ { "type": "Microsoft.Network/networkInterfaces", "name": "[variables('fgbNic4Name')]", - "apiVersion": "2025-05-01", + "apiVersion": "2023-06-01", "location": "[parameters('location')]", "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Network/networkInterfaces'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Network/networkInterfaces']), parameters('fortinetTags')) ]", "dependsOn": [ @@ -1169,14 +1270,14 @@ { "type": "Microsoft.Compute/virtualMachines", "name": "[variables('fgaVmName')]", - "apiVersion": "2025-04-01", + "apiVersion": "2023-09-01", "location": "[parameters('location')]", - "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(variables('LegacyVMNVATag'),parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/virtualMachines']), union(variables('LegacyVMNVATag'),parameters('fortinetTags'))) ]", + "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/virtualMachines']), parameters('fortinetTags')) ]", "identity": { "type": "SystemAssigned" }, "zones": "[if(variables('useAZ'), variables('zone1'), json('null'))]", - "plan": "[if(and(equals(parameters('fortiGateLicenseType'),'fortinet_fg-vm_byol'),not(equals(parameters('customImageReference'),''))), json('null'), variables('virtualMachinePlan'))]", + "plan": "[if(and(or(equals(variables('fortiGateImageSKU'),'fortinet_fg-vm'),equals(variables('fortiGateImageSKU'),'fortinet_fg-vm_arm64')),not(equals(parameters('customImageReference'),''))), json('null'), variables('virtualMachinePlan'))]", "dependsOn": [ "[variables('fgaNic1Id')]", "[variables('fgaNic2Id')]", @@ -1195,7 +1296,7 @@ "customData": "[variables('fgaCustomData')]" }, "storageProfile": { - "imageReference": "[if(and(equals(parameters('fortiGateLicenseType'),'fortinet_fg-vm_byol'),not(equals(parameters('customImageReference'),''))), variables('imageReferenceCustomImage'), variables('imageReferenceMarketplace'))]", + "imageReference": "[if(and(or(equals(variables('fortiGateImageSKU'),'fortinet_fg-vm'),equals(variables('fortiGateImageSKU'),'fortinet_fg-vm_arm64')),not(equals(parameters('customImageReference'),''))), variables('imageReferenceCustomImage'), variables('imageReferenceMarketplace'))]", "diskControllerType": "[variables('diskControllerType')]", "osDisk": { "createOption": "FromImage" @@ -1246,14 +1347,14 @@ { "type": "Microsoft.Compute/virtualMachines", "name": "[variables('fgbVmName')]", - "apiVersion": "2025-04-01", + "apiVersion": "2023-09-01", "location": "[parameters('location')]", - "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(variables('LegacyVMNVATag'),parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/virtualMachines']), union(variables('LegacyVMNVATag'),parameters('fortinetTags'))) ]", + "tags": "[ if(contains(parameters('tagsByResource'), 'Microsoft.Compute/virtualMachines'), union(parameters('fortinetTags'),parameters('tagsByResource')['Microsoft.Compute/virtualMachines']), parameters('fortinetTags')) ]", "identity": { "type": "SystemAssigned" }, "zones": "[if(variables('useAZ'), variables('zone2'), json('null'))]", - "plan": "[if(and(equals(parameters('fortiGateLicenseType'),'fortinet_fg-vm_byol'),not(equals(parameters('customImageReference'),''))), json('null'), variables('virtualMachinePlan'))]", + "plan": "[if(and(or(equals(variables('fortiGateImageSKU'),'fortinet_fg-vm'),equals(variables('fortiGateImageSKU'),'fortinet_fg-vm_arm64')),not(equals(parameters('customImageReference'),''))), json('null'), variables('virtualMachinePlan'))]", "dependsOn": [ "[variables('fgbNic1Id')]", "[variables('fgbNic2Id')]", @@ -1272,7 +1373,7 @@ "customData": "[variables('fgbCustomData')]" }, "storageProfile": { - "imageReference": "[if(and(equals(parameters('fortiGateLicenseType'),'fortinet_fg-vm_byol'),not(equals(parameters('customImageReference'),''))), variables('imageReferenceCustomImage'), variables('imageReferenceMarketplace'))]", + "imageReference": "[if(and(or(equals(variables('fortiGateImageSKU'),'fortinet_fg-vm'),equals(variables('fortiGateImageSKU'),'fortinet_fg-vm_arm64')),not(equals(parameters('customImageReference'),''))), variables('imageReferenceCustomImage'), variables('imageReferenceMarketplace'))]", "diskControllerType": "[variables('diskControllerType')]", "osDisk": { "createOption": "FromImage" @@ -1324,19 +1425,19 @@ "outputs": { "fortiGatePublicIP": { "type": "string", - "value": "[if(not(equals(parameters('publicIP1NewOrExisting'), 'none')), reference(variables('publicIP1Id')).ipAddress, '2025-05-01')]" + "value": "[if(not(equals(parameters('publicIP1NewOrExisting'), 'none')), reference(variables('publicIP1Id')).ipAddress, '')]" }, "fortiGateFQDN": { "type": "string", - "value": "[if(not(equals(parameters('publicIP1NewOrExisting'), 'none')), reference(variables('publicIP1Id')).dnsSettings.fqdn, '2025-05-01')]" + "value": "[if(not(equals(parameters('publicIP1NewOrExisting'), 'none')), reference(variables('publicIP1Id')).dnsSettings.fqdn, '')]" }, "fortiGateAManagementPublicIP": { "type": "string", - "value": "[if(not(equals(parameters('publicIP2NewOrExisting'), 'none')), reference(variables('publicIP2Id')).ipAddress, '2025-05-01')]" + "value": "[if(not(equals(parameters('publicIP2NewOrExisting'), 'none')), reference(variables('publicIP2Id')).ipAddress, '')]" }, "fortiGateBManagementPublicIP": { "type": "string", - "value": "[if(not(equals(parameters('publicIP3NewOrExisting'), 'none')), reference(variables('publicIP3Id')).ipAddress, '2025-05-01')]" + "value": "[if(not(equals(parameters('publicIP3NewOrExisting'), 'none')), reference(variables('publicIP3Id')).ipAddress, '')]" } } } diff --git a/FortiGate/Active-Passive-SDN/createUiDefinition.json b/FortiGate/Active-Passive-SDN/createUiDefinition.json index 53df27fd..f97ef869 100644 --- a/FortiGate/Active-Passive-SDN/createUiDefinition.json +++ b/FortiGate/Active-Passive-SDN/createUiDefinition.json @@ -24,46 +24,25 @@ "uri": "https://github.com/fortinet/azure-templates/tree/main/FortiGate/Active-Passive-SDN" } }, - { - "name": "fortiGateImageSKU", - "type": "Microsoft.Common.DropDown", - "label": "Fortigate-VM License Type", - "defaultValue": "Bring Your Own License or FortiFlex", - "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", - "constraints": { - "required": false, - "allowedValues": [ - { - "label": "Bring Your Own License or FortiFlex", - "value": "fortinet_fg-vm_byol" - }, - { - "label": "Pay As You Go", - "value": "fortinet_fg-vm_payg" - } - ] - }, - "visible": true - }, { "name": "fortiGateInstanceArchitecture", "type": "Microsoft.Common.OptionsGroup", "label": "FortiGate VM instance Architecture", - "defaultValue": "X64 - Intel / AMD based processors | Gen1 VM FortiGate 7.0 - 7.4", + "defaultValue": "X64 - Intel / AMD based processors", "toolTip": "Select FortiGate VM instance Architecture", "constraints": { "allowedValues": [ { - "label": "X64 - Intel / AMD based processors | Gen1 VM FortiGate 7.0 - 7.4", + "label": "X64 - Intel / AMD based processors", "value": "x64" }, { - "label": "X64 - Intel / AMD based processors | Gen2 VM FortiGate 7.6+", - "value": "_g2" + "label": "X64 - Intel / AMD based processors - Generation 2 VM (> 7.6.1)", + "value": "x64_g2" }, { - "label": "ARM64 - ARM based processors | Gen2 VM FortiGate 7.2 - 7.6", - "value": "_arm64" + "label": "ARM64 - ARM based processors (Azure Cobalt or Ampere Altra) - Generation 2 VM (> 7.2.8)", + "value": "arm64" } ], "required": true @@ -139,41 +118,285 @@ { "name": "instancetype_x64", "type": "Microsoft.Common.Section", - "label": "Instance Type x64 Generation 1", + "label": "Instance Type x64", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_x64", + "type": "Microsoft.Common.DropDown", + "label": "Fortigate Image SKU", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" - }, + "visible": true + }, { "name": "fortiGateImageVersion_x64", "type": "Microsoft.Common.DropDown", "label": "FortiGate Image Version", - "multiLine": true, - "defaultValue": "7.4.11", + "defaultValue": "7.4.9", "toolTip": "Only 6.x has the A/P HA feature currently", "constraints": { "required": false, "allowedValues": [ + { + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.0", + "value": "7.6.0" + }, { "label": "7.4.11", - "value": "7.4.11", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','74')]" + "value": "7.4.11" + }, + { + "label": "7.4.9", + "value": "7.4.9" + }, + { + "label": "7.4.8", + "value": "7.4.8" + }, + { + "label": "7.4.7", + "value": "7.4.7" + }, + { + "label": "7.4.6", + "value": "7.4.6" + }, + { + "label": "7.4.5", + "value": "7.4.5" + }, + { + "label": "7.4.4", + "value": "7.4.4" + }, + { + "label": "7.4.3", + "value": "7.4.3" + }, + { + "label": "7.4.2", + "value": "7.4.2" + }, + { + "label": "7.4.1", + "value": "7.4.1" + }, + { + "label": "7.4.0", + "value": "7.4.0" }, { "label": "7.2.13", - "value": "7.2.13", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','72')]" + "value": "7.2.13" + }, + { + "label": "7.2.12", + "value": "7.2.12" + }, + { + "label": "7.2.11", + "value": "7.2.11" + }, + { + "label": "7.2.10", + "value": "7.2.10" + }, + { + "label": "7.2.9", + "value": "7.2.9" + }, + { + "label": "7.2.8", + "value": "7.2.8" + }, + { + "label": "7.2.7", + "value": "7.2.7" + }, + { + "label": "7.2.6", + "value": "7.2.6" + }, + { + "label": "7.2.5", + "value": "7.2.5" + }, + { + "label": "7.2.4", + "value": "7.2.4" + }, + { + "label": "7.2.3", + "value": "7.2.3" + }, + { + "label": "7.2.2", + "value": "7.2.2" + }, + { + "label": "7.2.1", + "value": "7.2.1" + }, + { + "label": "7.2.0", + "value": "7.2.0" + }, + { + "label": "7.0.18", + "value": "7.0.18" + }, + { + "label": "7.0.17", + "value": "7.0.17" + }, + { + "label": "7.0.15", + "value": "7.0.15" + }, + { + "label": "7.0.14", + "value": "7.0.14" + }, + { + "label": "7.0.13", + "value": "7.0.13" + }, + { + "label": "7.0.12", + "value": "7.0.12" + }, + { + "label": "7.0.11", + "value": "7.0.11" + }, + { + "label": "7.0.10", + "value": "7.0.10" + }, + { + "label": "7.0.9", + "value": "7.0.9" + }, + { + "label": "7.0.8", + "value": "7.0.8" + }, + { + "label": "7.0.6", + "value": "7.0.6" + }, + { + "label": "7.0.5", + "value": "7.0.5" + }, + { + "label": "7.0.4", + "value": "7.0.4" + }, + { + "label": "7.0.3", + "value": "7.0.3" + }, + { + "label": "7.0.2", + "value": "7.0.2" + }, + { + "label": "7.0.1", + "value": "7.0.1" + }, + { + "label": "7.0.0", + "value": "7.0.0" + }, + { + "label": "6.4.16", + "value": "6.4.16" + }, + { + "label": "6.4.15", + "value": "6.4.15" + }, + { + "label": "6.4.13", + "value": "6.4.13" + }, + { + "label": "6.4.12", + "value": "6.4.12" + }, + { + "label": "6.4.11", + "value": "6.4.11" + }, + { + "label": "6.4.10", + "value": "6.4.10" + }, + { + "label": "6.4.9", + "value": "6.4.9" + }, + { + "label": "6.4.8", + "value": "6.4.8" + }, + { + "label": "6.4.7", + "value": "6.4.7" + }, + { + "label": "6.4.6", + "value": "6.4.6" + }, + { + "label": "6.4.5", + "value": "6.4.5" + }, + { + "label": "6.4.3", + "value": "6.4.3" + }, + { + "label": "6.4.2", + "value": "6.4.2" }, { - "label": "7.0.19", - "value": "7.0.19", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','70')]" + "label": "6.4.0", + "value": "6.4.0" + }, + { + "label": "6.2.5", + "value": "6.2.5" + }, + { + "label": "6.2.4", + "value": "6.2.4" + }, + { + "label": "6.2.2", + "value": "6.2.2" + }, + { + "label": "6.2.0", + "value": "6.2.0" } ] }, @@ -197,7 +420,7 @@ "label": "Size", "toolTip": "Select the instance size of your FortiGate VM solution. Minimum 4 NICs are required.", "recommendedSizes": [ - "Standard_D8s_v3", + "Standard_D8s_v3", "Standard_F4s", "Standard_F8s", "Standard_F16s", @@ -292,11 +515,21 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_x64.fortiGateImageVersion_x64, '.',''), 2))]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[steps('instance').instancetype_x64.fortiGateImageSKU_x64]" }, "count": 2, "visible": true + }, + { + "name": "versionInfo", + "type": "Microsoft.Common.InfoBox", + "visible": "[and(contains(steps('instance').instancetype_x64.selection_x64, '_v6'),not(or(equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.1'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'7.6.2'),equals(steps('instance').instancetype_x64.fortiGateImageVersion_x64,'latest'))))]", + "options": { + "icon": "Error", + "text": "Dsv6 and Esv6 Instance families require a Gen2 VM Image, support for MANA network drivers and are incompatible with the selected FortiGate version, please select version 7.6.1 or higher", + "uri": "https://azure.microsoft.com/en-ca/updates/public-preview-internet-inbound-for-network-virtual-appliances-in-virtual-wan-hubs/" + } } ], "visible": "[equals(basics('fortiGateInstanceArchitecture'),'x64')]" @@ -304,31 +537,65 @@ { "name": "instancetype_x64_g2", "type": "Microsoft.Common.Section", - "label": "Instance Type x64 Generation 2", + "label": "Instance Type x64_g2", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_x64_g2", + "type": "Microsoft.Common.DropDown", + "label": "Fortigate-VM License Type", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm_g2" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023_g2" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_x64_g2", "type": "Microsoft.Common.DropDown", "label": "Fortigate Image Version", - "multiLine": true, - "defaultValue": "7.6.6", + "defaultValue": "7.6.4", "toolTip": "Only 6.x has the A/P HA feature currently", "constraints": { "required": false, "allowedValues": [ { - "label": "7.6.6", - "value": "7.6.6", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','76')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.500", + "value": "7.6.500" + }, + { + "label": "7.6.2", + "value": "7.6.200" + }, + { + "label": "7.6.1", + "value": "7.6.100" + }, + { + "label": "7.6.5", + "value": "7.6.5" + }, + { + "label": "7.6.4", + "value": "7.6.4" + }, + { + "label": "7.6.3", + "value": "7.6.3" } ] }, @@ -352,8 +619,9 @@ "label": "Size", "toolTip": "Select the instance size of your FortiGate VM solution. Minimum 4 NICs are required.", "recommendedSizes": [ - "Standard_D8_v4", + "Standard_D2_v4", "Standard_D4_v4", + "Standard_D8_v4", "Standard_D16_v4", "Standard_D32_v4", "Standard_D2s_v4", @@ -434,8 +702,12 @@ ], "constraints": { "allowedSizes": [ - "Standard_D8_v4", + "Standard_D4s_v3", + "Standard_D8s_v3", + "Standard_D16s_v3", + "Standard_D32s_v3", "Standard_D4_v4", + "Standard_D8_v4", "Standard_D16_v4", "Standard_D32_v4", "Standard_D2s_v4", @@ -506,8 +778,8 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2, '.',''), 2),'_g2')]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2]" }, "count": 2, "visible": true @@ -515,7 +787,7 @@ { "name": "versionInfo", "type": "Microsoft.Common.InfoBox", - "visible": "[and(contains(steps('instance').instancetype_x64_g2.selection_x64_g2, '_v6'),not(or(equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.6'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'latest'))))]", + "visible": "[and(contains(steps('instance').instancetype_x64_g2.selection_x64_g2, '_v6'),not(or(equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.100'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'7.6.200'),equals(steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2,'latest'))))]", "options": { "icon": "Error", "text": "Dsv6 and Esv6 Instance families require a Gen2 VM Image, support for MANA network drivers and are incompatible with the selected FortiGate version, please select version 7.6.1 or higher", @@ -523,7 +795,7 @@ } } ], - "visible": "[equals(basics('fortiGateInstanceArchitecture'),'_g2')]" + "visible": "[equals(basics('fortiGateInstanceArchitecture'),'x64_g2')]" }, { "name": "instancetype_arm64", @@ -531,38 +803,114 @@ "label": "Instance Type ARM 64", "elements": [ { - "name": "fgtPAYG.privateOfferInfo", - "type": "Microsoft.Common.InfoBox", - "options": { - "icon": "Info", - "text": "Fortinet Private Offers are tied to a specific plan id, if your organization has a Private Offer please ensure the correct plan id is selected. Changing a plan id requires redeployment.\n\nA VM’s plan id can be viewed in the VM Properties as the 'Source image plan'." + "name": "fortiGateImageSKU_arm64", + "type": "Microsoft.Common.DropDown", + "label": "Fortigate Image SKU", + "defaultValue": "Bring Your Own License or FortiFlex", + "toolTip": "Identifies whether to to use PAYG (on demand licensing) or BYOL license model (where license is purchased separately)", + "constraints": { + "required": false, + "allowedValues": [ + { + "label": "Bring Your Own License or FortiFlex", + "value": "fortinet_fg-vm_arm64" + }, + { + "label": "Pay As You Go", + "value": "fortinet_fg-vm_payg_2023_arm64" + } + ] }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": true }, { "name": "fortiGateImageVersion_arm64", "type": "Microsoft.Common.DropDown", "label": "Fortigate Image Version", - "multiLine": true, - "defaultValue": "7.6.6", + "defaultValue": "7.6.4", "toolTip": "Only 6.x has the A/P HA feature currently", "constraints": { "required": false, "allowedValues": [ { - "label": "7.6.6", - "value": "7.6.6", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','76')]" + "label": "latest", + "value": "latest" + }, + { + "label": "7.6.5", + "value": "7.6.5" + }, + { + "label": "7.6.4", + "value": "7.6.4" + }, + { + "label": "7.6.3", + "value": "7.6.3" + }, + { + "label": "7.6.2", + "value": "7.6.2" + }, + { + "label": "7.6.1", + "value": "7.6.1" + }, + { + "label": "7.6.0", + "value": "7.6.0" }, { "label": "7.4.11", - "value": "7.4.11", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','74')]" + "value": "7.4.11" }, { - "label": "7.2.13", - "value": "7.2.13", - "description": "[concat('VM PlanID : ',basics('fortiGateImageSKU'),'_','72')]" + "label": "7.4.9", + "value": "7.4.9" + }, + { + "label": "7.4.8", + "value": "7.4.8" + }, + { + "label": "7.4.7", + "value": "7.4.7" + }, + { + "label": "7.4.6", + "value": "7.4.6" + }, + { + "label": "7.4.5", + "value": "7.4.5" + }, + { + "label": "7.4.4", + "value": "7.4.4" + }, + { + "label": "7.4.3", + "value": "7.4.3" + }, + { + "label": "7.2.12", + "value": "7.2.12" + }, + { + "label": "7.2.11", + "value": "7.2.11" + }, + { + "label": "7.2.10", + "value": "7.2.10" + }, + { + "label": "7.2.9", + "value": "7.2.9" + }, + { + "label": "7.2.8", + "value": "7.2.8" } ] }, @@ -651,14 +999,14 @@ "osPlatform": "Linux", "imageReference": { "publisher": "Fortinet", - "offer": "fortinet_fortigate-vm", - "sku": "[concat(basics('fortiGateImageSKU'),'_',take(replace(steps('instance').instancetype_arm64.fortiGateImageVersion_arm64, '.',''), 2),'_arm64')]" + "offer": "fortinet_fortigate-vm_v5", + "sku": "[steps('instance').instancetype_arm64.fortiGateImageSKU_arm64]" }, "count": 2, "visible": true } ], - "visible": "[equals(basics('fortiGateInstanceArchitecture'),'_arm64')]" + "visible": "[equals(basics('fortiGateInstanceArchitecture'),'arm64')]" }, { "name": "availabilityOptions", @@ -681,7 +1029,7 @@ "name": "availabilityOptions", "type": "Microsoft.Common.DropDown", "label": "Availability Option", - "defaultValue": "[if(and(equals(basics('fortiGateInstanceArchitecture'),'_g2'),equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), contains(steps('instance').instancetype_x64_g2.selection_x64_g2, 'v6')), 'Availability Set', 'Availability Zones')]", + "defaultValue": "[if(and(equals(basics('fortiGateInstanceArchitecture'),'x64_g2'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'), contains(steps('instance').instancetype_x64_g2.selection_x64_g2, 'v6')), 'Availability Set', 'Availability Zones')]", "toolTip": "Deploy FortiGate VMs in an Availability Set or Availability Zones.", "constraints": { "required": false, @@ -718,7 +1066,7 @@ { "name": "fgtLicenseBYOLInfo", "type": "Microsoft.Common.TextBlock", - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]", + "visible": "[or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64'))]", "options": { "text": "Bring Your Own License was selected in the basics blade. The license file(s) retrieved from support.fortinet.com can be uploaded here or uploaded after deployment." } @@ -728,7 +1076,7 @@ "type": "Microsoft.Common.CheckBox", "label": "My organisation is using the FortiFlex subscription service.", "toolTip": "Select this box to enter a FortiFlex token", - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol')]" + "visible": "[or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64'))]" }, { "name": "fgtAcontent", @@ -745,7 +1093,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')) ,not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgtBcontent", @@ -762,7 +1110,7 @@ "openMode": "text", "encoding": "UTF-8" }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')) ,not(steps('instance').fgtLicense.fgtLicenseFortiFlexCheck))]" }, { "name": "fgtAfortiflex", @@ -772,10 +1120,10 @@ "toolTip": "FortiGate A FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')) ,steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgtBfortiflex", @@ -785,10 +1133,10 @@ "toolTip": "FortiGate B FortiFlex license token", "constraints": { "required": false, - "regex": "^[A-F0-9]{20}$", - "validationMessage": "Only Hexadecimal characters are allowed, FortiFlex token is 20 characters long." + "regex": "^[A-Za-z0-9-]{1,64}$", + "validationMessage": "Only alphanumeric characters and a dash are allowed, and the value must be 1 to 64 characters." }, - "visible": "[and(equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_byol'), steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" + "visible": "[and(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')) ,steps('instance').fgtLicense.fgtLicenseFortiFlexCheck)]" }, { "name": "fgtLicensePAYGInfo", @@ -798,7 +1146,7 @@ "text": "Pay As You Go licenses was selected in the basics blade and provisioned automatically durig deployment. Registration of the PAYG license is required to receive support.", "uri": "https://docs.fortinet.com/document/fortigate-public-cloud/7.4.0/azure-administration-guide/533394/creating-a-support-account" }, - "visible": "[equals(basics('fortiGateImageSKU'),'fortinet_fg-vm_payg')]" + "visible": "[not(or(equals(steps('instance').instancetype_x64.fortiGateImageSKU_x64, 'fortinet_fg-vm'),equals(steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2, 'fortinet_fg-vm_g2'),equals(steps('instance').instancetype_arm64.fortiGateImageSKU_arm64, 'fortinet_fg-vm_arm64')))]" }, { "name": "fgtLicenseMigrateInfo", @@ -1329,7 +1677,7 @@ "type": "Microsoft.Common.TextBox", "label": "Custom Data", "toolTip": "Custom Data", - "placeholder": "Add your required additional configuration here.", + "placeholder": "Add you required additional configuration here.", "multiLine": true, "constraints": { "required": false, @@ -1421,7 +1769,7 @@ "defaultValue": "", "toolTip": "Azure Compute Gallery Image Version resource ID", "constraints": { - "required": "[and(steps('advanced').customvhd.customvhdcheck, equals(basics('fortiGateInstanceArchitecture'), '_arm64'))]", + "required": "[and(steps('advanced').customvhd.customvhdcheck, equals(basics('fortiGateInstanceArchitecture'), 'arm64'))]", "regex": "^[\\w\\W\n\t]{0,10240}$", "validationMessage": "All characters allowed, max 10240 characters." }, @@ -1517,7 +1865,9 @@ ], "outputs": { "fortiGateNamePrefix": "[basics('fortiGateNamePrefix')]", - "fortiGateLicenseType": "[basics('fortiGateImageSKU')]", + "fortiGateImageSKU_x64": "[steps('instance').instancetype_x64.fortiGateImageSKU_x64]", + "fortiGateImageSKU_x64_g2": "[steps('instance').instancetype_x64_g2.fortiGateImageSKU_x64_g2]", + "fortiGateImageSKU_arm64": "[steps('instance').instancetype_arm64.fortiGateImageSKU_arm64]", "fortiGateImageVersion_x64": "[steps('instance').instancetype_x64.fortiGateImageVersion_x64]", "fortiGateImageVersion_x64_g2": "[steps('instance').instancetype_x64_g2.fortiGateImageVersion_x64_g2]", "fortiGateImageVersion_arm64": "[steps('instance').instancetype_arm64.fortiGateImageVersion_arm64]",