From 75fc732c6960944c0c07ded1470c76500253268a Mon Sep 17 00:00:00 2001 From: cruizba Date: Tue, 2 Dec 2025 19:21:16 +0100 Subject: [PATCH] openvidu-deployment: Refactor Azure VM size parameters for OpenVidu deployment ARM support. --- .../azure/cf-openvidu-singlenode.bicep | 171 +--------- .../azure/cf-openvidu-singlenode.json | 169 +--------- .../singlenode/azure/createUiDefinition.json | 6 +- .../elastic/azure/cf-openvidu-elastic.bicep | 312 +----------------- .../elastic/azure/cf-openvidu-elastic.json | 310 +---------------- .../pro/elastic/azure/createUiDefinition.json | 11 +- .../pro/ha/azure/cf-openvidu-ha.bicep | 303 +---------------- .../pro/ha/azure/cf-openvidu-ha.json | 301 +---------------- .../pro/ha/azure/createUiDefinition.json | 11 +- .../azure/cf-openvidu-singlenode.bicep | 171 +--------- .../azure/cf-openvidu-singlenode.json | 169 +--------- .../singlenode/azure/createUiDefinition.json | 6 +- 12 files changed, 104 insertions(+), 1836 deletions(-) diff --git a/openvidu-deployment/community/singlenode/azure/cf-openvidu-singlenode.bicep b/openvidu-deployment/community/singlenode/azure/cf-openvidu-singlenode.bicep index a99ce3dec..7b8d706b3 100644 --- a/openvidu-deployment/community/singlenode/azure/cf-openvidu-singlenode.bicep +++ b/openvidu-deployment/community/singlenode/azure/cf-openvidu-singlenode.bicep @@ -45,141 +45,8 @@ param initialMeetApiKey string = '' // Azure instance config -@description('Specifies the azure vm size for your OpenVidu instance') -@allowed([ - 'Standard_B1s' - 'Standard_B1ms' - 'Standard_B2s' - 'Standard_B2ms' - 'Standard_B4ms' - 'Standard_B8ms' - 'Standard_D2_v3' - 'Standard_D4_v3' - 'Standard_D8_v3' - 'Standard_D16_v3' - 'Standard_D32_v3' - 'Standard_D48_v3' - 'Standard_D64_v3' - 'Standard_D2_v4' - 'Standard_D4_v4' - 'Standard_D8_v4' - 'Standard_D16_v4' - 'Standard_D32_v4' - 'Standard_D48_v4' - 'Standard_D64_v4' - 'Standard_D96_v4' - 'Standard_D2_v5' - 'Standard_D4_v5' - 'Standard_D8_v5' - 'Standard_D16_v5' - 'Standard_D32_v5' - 'Standard_D48_v5' - 'Standard_D64_v5' - 'Standard_D96_v5' - 'Standard_D2ps_v5' - 'Standard_D4ps_v5' - 'Standard_D8ps_v5' - 'Standard_D16ps_v5' - 'Standard_D32ps_v5' - 'Standard_D48ps_v5' - 'Standard_D64ps_v5' - 'Standard_D2pls_v5' - 'Standard_D4pls_v5' - 'Standard_D8pls_v5' - 'Standard_D16pls_v5' - 'Standard_D32pls_v5' - 'Standard_D48pls_v5' - 'Standard_D64pls_v5' - 'Standard_D96ps_v5' - 'Standard_F2' - 'Standard_F4' - 'Standard_F8' - 'Standard_F16' - 'Standard_F32' - 'Standard_F64' - 'Standard_F72' - 'Standard_F2s_v2' - 'Standard_F4s_v2' - 'Standard_F8s_v2' - 'Standard_F16s_v2' - 'Standard_F32s_v2' - 'Standard_F64s_v2' - 'Standard_F72s_v2' - 'Standard_E2_v3' - 'Standard_E4_v3' - 'Standard_E8_v3' - 'Standard_E16_v3' - 'Standard_E32_v3' - 'Standard_E48_v3' - 'Standard_E64_v3' - 'Standard_E96_v3' - 'Standard_E2_v4' - 'Standard_E4_v4' - 'Standard_E8_v4' - 'Standard_E16_v4' - 'Standard_E32_v4' - 'Standard_E48_v4' - 'Standard_E64_v4' - 'Standard_E2_v5' - 'Standard_E4_v5' - 'Standard_E8_v5' - 'Standard_E16_v5' - 'Standard_E32_v5' - 'Standard_E48_v5' - 'Standard_E64_v5' - 'Standard_E96_v5' - 'Standard_E2ps_v5' - 'Standard_E4ps_v5' - 'Standard_E8ps_v5' - 'Standard_E16ps_v5' - 'Standard_E20ps_v5' - 'Standard_E32ps_v5' - 'Standard_E48ps_v5' - 'Standard_E64ps_v5' - 'Standard_E96ps_v5' - 'Standard_M64' - 'Standard_M128' - 'Standard_M208ms_v2' - 'Standard_M416ms_v2' - 'Standard_L4s_v2' - 'Standard_L8s_v2' - 'Standard_L16s_v2' - 'Standard_L32s_v2' - 'Standard_L64s_v2' - 'Standard_L80s_v2' - 'Standard_NC6' - 'Standard_NC12' - 'Standard_NC24' - 'Standard_NC24r' - 'Standard_ND6s' - 'Standard_ND12s' - 'Standard_ND24s' - 'Standard_ND24rs' - 'Standard_NV6' - 'Standard_NV12' - 'Standard_NV24' - 'Standard_H8' - 'Standard_H16' - 'Standard_H16r' - 'Standard_H16mr' - 'Standard_HB120rs_v2' - 'Standard_HC44rs' - 'Standard_DC2s' - 'Standard_DC4s' - 'Standard_DC2s_v2' - 'Standard_DC4s_v2' - 'Standard_DC8s_v2' - 'Standard_DC16s_v2' - 'Standard_DC32s_v2' - 'Standard_A1_v2' - 'Standard_A2_v2' - 'Standard_A4_v2' - 'Standard_A8_v2' - 'Standard_A2m_v2' - 'Standard_A4m_v2' - 'Standard_A8m_v2' -]) -param instanceType string = 'Standard_B2s' // Azure instance types. +@description('Specifies the azure vm size for your OpenVidu instance. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes.') +param instanceType string = 'Standard_B4s' @description('Username for the Virtual Machine.') param adminUsername string @@ -198,34 +65,14 @@ var isEmptyIp = publicIpAddressObject.newOrExistingOrNone == 'none' //Condition for the domain name var isEmptyDomain = domainName == '' -var arm64InstanceTypes = [ - 'standard_d2ps_v5' - 'standard_d4ps_v5' - 'standard_d8ps_v5' - 'standard_d16ps_v5' - 'standard_d32ps_v5' - 'standard_d48ps_v5' - 'standard_d64ps_v5' - 'standard_d2pls_v5' - 'standard_d4pls_v5' - 'standard_d8pls_v5' - 'standard_d16pls_v5' - 'standard_d32pls_v5' - 'standard_d48pls_v5' - 'standard_d64pls_v5' - 'standard_d96ps_v5' - 'standard_e2ps_v5' - 'standard_e4ps_v5' - 'standard_e8ps_v5' - 'standard_e16ps_v5' - 'standard_e20ps_v5' - 'standard_e32ps_v5' - 'standard_e48ps_v5' - 'standard_e64ps_v5' - 'standard_e96ps_v5' -] +// ARM64 instances are detected by checking for 'p' in the instance type name pattern. +// Azure ARM-based VMs use 'p' to indicate ARM processors (Ampere Altra, Microsoft Cobalt, etc.) +// Examples: Standard_D2ps_v5, Standard_E4pds_v5, Standard_B2pls_v2, etc. +// The pattern checks for 'p' followed by optional letters (like 'l', 'd', 's') before '_v' version suffix +var instanceTypeLower = toLower(instanceType) +var isArm64Instance = contains(instanceTypeLower, 'ps_v') || contains(instanceTypeLower, 'pls_v') || contains(instanceTypeLower, 'pds_v') || contains(instanceTypeLower, 'plds_v') || contains(instanceTypeLower, 'psv') || contains(instanceTypeLower, 'plsv') || contains(instanceTypeLower, 'pdsv') || contains(instanceTypeLower, 'pldsv') -var ubuntuSku = contains(arm64InstanceTypes, toLower(instanceType)) ? '24_04-lts-arm64' : '24_04-lts-gen2' +var ubuntuSku = isArm64Instance ? '24_04-lts-arm64' : '24_04-lts-gen2' //Variables for deployment var networkSettings = { diff --git a/openvidu-deployment/community/singlenode/azure/cf-openvidu-singlenode.json b/openvidu-deployment/community/singlenode/azure/cf-openvidu-singlenode.json index 764b3332e..8475ac258 100644 --- a/openvidu-deployment/community/singlenode/azure/cf-openvidu-singlenode.json +++ b/openvidu-deployment/community/singlenode/azure/cf-openvidu-singlenode.json @@ -5,7 +5,7 @@ "_generator": { "name": "bicep", "version": "0.37.4.10188", - "templateHash": "2317567583079726758" + "templateHash": "15500404754597159784" } }, "parameters": { @@ -91,142 +91,9 @@ }, "instanceType": { "type": "string", - "defaultValue": "Standard_B2s", - "allowedValues": [ - "Standard_B1s", - "Standard_B1ms", - "Standard_B2s", - "Standard_B2ms", - "Standard_B4ms", - "Standard_B8ms", - "Standard_D2_v3", - "Standard_D4_v3", - "Standard_D8_v3", - "Standard_D16_v3", - "Standard_D32_v3", - "Standard_D48_v3", - "Standard_D64_v3", - "Standard_D2_v4", - "Standard_D4_v4", - "Standard_D8_v4", - "Standard_D16_v4", - "Standard_D32_v4", - "Standard_D48_v4", - "Standard_D64_v4", - "Standard_D96_v4", - "Standard_D2_v5", - "Standard_D4_v5", - "Standard_D8_v5", - "Standard_D16_v5", - "Standard_D32_v5", - "Standard_D48_v5", - "Standard_D64_v5", - "Standard_D96_v5", - "Standard_D2ps_v5", - "Standard_D4ps_v5", - "Standard_D8ps_v5", - "Standard_D16ps_v5", - "Standard_D32ps_v5", - "Standard_D48ps_v5", - "Standard_D64ps_v5", - "Standard_D2pls_v5", - "Standard_D4pls_v5", - "Standard_D8pls_v5", - "Standard_D16pls_v5", - "Standard_D32pls_v5", - "Standard_D48pls_v5", - "Standard_D64pls_v5", - "Standard_D96ps_v5", - "Standard_F2", - "Standard_F4", - "Standard_F8", - "Standard_F16", - "Standard_F32", - "Standard_F64", - "Standard_F72", - "Standard_F2s_v2", - "Standard_F4s_v2", - "Standard_F8s_v2", - "Standard_F16s_v2", - "Standard_F32s_v2", - "Standard_F64s_v2", - "Standard_F72s_v2", - "Standard_E2_v3", - "Standard_E4_v3", - "Standard_E8_v3", - "Standard_E16_v3", - "Standard_E32_v3", - "Standard_E48_v3", - "Standard_E64_v3", - "Standard_E96_v3", - "Standard_E2_v4", - "Standard_E4_v4", - "Standard_E8_v4", - "Standard_E16_v4", - "Standard_E32_v4", - "Standard_E48_v4", - "Standard_E64_v4", - "Standard_E2_v5", - "Standard_E4_v5", - "Standard_E8_v5", - "Standard_E16_v5", - "Standard_E32_v5", - "Standard_E48_v5", - "Standard_E64_v5", - "Standard_E96_v5", - "Standard_E2ps_v5", - "Standard_E4ps_v5", - "Standard_E8ps_v5", - "Standard_E16ps_v5", - "Standard_E20ps_v5", - "Standard_E32ps_v5", - "Standard_E48ps_v5", - "Standard_E64ps_v5", - "Standard_E96ps_v5", - "Standard_M64", - "Standard_M128", - "Standard_M208ms_v2", - "Standard_M416ms_v2", - "Standard_L4s_v2", - "Standard_L8s_v2", - "Standard_L16s_v2", - "Standard_L32s_v2", - "Standard_L64s_v2", - "Standard_L80s_v2", - "Standard_NC6", - "Standard_NC12", - "Standard_NC24", - "Standard_NC24r", - "Standard_ND6s", - "Standard_ND12s", - "Standard_ND24s", - "Standard_ND24rs", - "Standard_NV6", - "Standard_NV12", - "Standard_NV24", - "Standard_H8", - "Standard_H16", - "Standard_H16r", - "Standard_H16mr", - "Standard_HB120rs_v2", - "Standard_HC44rs", - "Standard_DC2s", - "Standard_DC4s", - "Standard_DC2s_v2", - "Standard_DC4s_v2", - "Standard_DC8s_v2", - "Standard_DC16s_v2", - "Standard_DC32s_v2", - "Standard_A1_v2", - "Standard_A2_v2", - "Standard_A4_v2", - "Standard_A8_v2", - "Standard_A2m_v2", - "Standard_A4m_v2", - "Standard_A8m_v2" - ], + "defaultValue": "Standard_B4s", "metadata": { - "description": "Specifies the azure vm size for your OpenVidu instance" + "description": "Specifies the azure vm size for your OpenVidu instance. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes." } }, "adminUsername": { @@ -263,33 +130,9 @@ "variables": { "isEmptyIp": "[equals(parameters('publicIpAddressObject').newOrExistingOrNone, 'none')]", "isEmptyDomain": "[equals(parameters('domainName'), '')]", - "arm64InstanceTypes": [ - "standard_d2ps_v5", - "standard_d4ps_v5", - "standard_d8ps_v5", - "standard_d16ps_v5", - "standard_d32ps_v5", - "standard_d48ps_v5", - "standard_d64ps_v5", - "standard_d2pls_v5", - "standard_d4pls_v5", - "standard_d8pls_v5", - "standard_d16pls_v5", - "standard_d32pls_v5", - "standard_d48pls_v5", - "standard_d64pls_v5", - "standard_d96ps_v5", - "standard_e2ps_v5", - "standard_e4ps_v5", - "standard_e8ps_v5", - "standard_e16ps_v5", - "standard_e20ps_v5", - "standard_e32ps_v5", - "standard_e48ps_v5", - "standard_e64ps_v5", - "standard_e96ps_v5" - ], - "ubuntuSku": "[if(contains(variables('arm64InstanceTypes'), toLower(parameters('instanceType'))), '24_04-lts-arm64', '24_04-lts-gen2')]", + "instanceTypeLower": "[toLower(parameters('instanceType'))]", + "isArm64Instance": "[or(or(or(or(or(or(or(contains(variables('instanceTypeLower'), 'ps_v'), contains(variables('instanceTypeLower'), 'pls_v')), contains(variables('instanceTypeLower'), 'pds_v')), contains(variables('instanceTypeLower'), 'plds_v')), contains(variables('instanceTypeLower'), 'psv')), contains(variables('instanceTypeLower'), 'plsv')), contains(variables('instanceTypeLower'), 'pdsv')), contains(variables('instanceTypeLower'), 'pldsv'))]", + "ubuntuSku": "[if(variables('isArm64Instance'), '24_04-lts-arm64', '24_04-lts-gen2')]", "networkSettings": { "privateIPaddressNetInterface": "10.0.0.5", "vNetAddressPrefix": "10.0.0.0/16", diff --git a/openvidu-deployment/community/singlenode/azure/createUiDefinition.json b/openvidu-deployment/community/singlenode/azure/createUiDefinition.json index 9e9bab95f..843b8db1d 100644 --- a/openvidu-deployment/community/singlenode/azure/createUiDefinition.json +++ b/openvidu-deployment/community/singlenode/azure/createUiDefinition.json @@ -209,8 +209,10 @@ "label": "Type of Instance", "toolTip": "Specifies the azure vm size for your OpenVidu instance", "recommendedSizes": [ - "Standard_B2s", - "Standard_B4ms" + "Standard_B4s", + "Standard_B4ms", + "Standard_D4ps_v5", + "Standard_D4pls_v5" ], "constraints": { "allowedSizes": [], diff --git a/openvidu-deployment/pro/elastic/azure/cf-openvidu-elastic.bicep b/openvidu-deployment/pro/elastic/azure/cf-openvidu-elastic.bicep index 243244682..d0c9f8eb1 100644 --- a/openvidu-deployment/pro/elastic/azure/cf-openvidu-elastic.bicep +++ b/openvidu-deployment/pro/elastic/azure/cf-openvidu-elastic.bicep @@ -53,277 +53,11 @@ param initialMeetAdminPassword string = '' @secure() param initialMeetApiKey string = '' -@description('Specifies the EC2 instance type for your OpenVidu Master Node') -@allowed([ - 'Standard_B1s' - 'Standard_B1ms' - 'Standard_B2s' - 'Standard_B2ms' - 'Standard_B4ms' - 'Standard_B8ms' - 'Standard_D2_v3' - 'Standard_D4_v3' - 'Standard_D8_v3' - 'Standard_D16_v3' - 'Standard_D32_v3' - 'Standard_D48_v3' - 'Standard_D64_v3' - 'Standard_D2_v4' - 'Standard_D4_v4' - 'Standard_D8_v4' - 'Standard_D16_v4' - 'Standard_D32_v4' - 'Standard_D48_v4' - 'Standard_D64_v4' - 'Standard_D96_v4' - 'Standard_D2_v5' - 'Standard_D4_v5' - 'Standard_D8_v5' - 'Standard_D16_v5' - 'Standard_D32_v5' - 'Standard_D48_v5' - 'Standard_D64_v5' - 'Standard_D96_v5' - 'Standard_D2ps_v5' - 'Standard_D4ps_v5' - 'Standard_D8ps_v5' - 'Standard_D16ps_v5' - 'Standard_D32ps_v5' - 'Standard_D48ps_v5' - 'Standard_D64ps_v5' - 'Standard_D96ps_v5' - 'Standard_D2pls_v5' - 'Standard_D4pls_v5' - 'Standard_D8pls_v5' - 'Standard_D16pls_v5' - 'Standard_D32pls_v5' - 'Standard_D48pls_v5' - 'Standard_D64pls_v5' - 'Standard_F2' - 'Standard_F4' - 'Standard_F8' - 'Standard_F16' - 'Standard_F32' - 'Standard_F64' - 'Standard_F72' - 'Standard_F2s_v2' - 'Standard_F4s_v2' - 'Standard_F8s_v2' - 'Standard_F16s_v2' - 'Standard_F32s_v2' - 'Standard_F64s_v2' - 'Standard_F72s_v2' - 'Standard_E2_v3' - 'Standard_E4_v3' - 'Standard_E8_v3' - 'Standard_E16_v3' - 'Standard_E32_v3' - 'Standard_E48_v3' - 'Standard_E64_v3' - 'Standard_E96_v3' - 'Standard_E2_v4' - 'Standard_E4_v4' - 'Standard_E8_v4' - 'Standard_E16_v4' - 'Standard_E32_v4' - 'Standard_E48_v4' - 'Standard_E64_v4' - 'Standard_E2_v5' - 'Standard_E4_v5' - 'Standard_E8_v5' - 'Standard_E16_v5' - 'Standard_E32_v5' - 'Standard_E48_v5' - 'Standard_E64_v5' - 'Standard_E96_v5' - 'Standard_E2ps_v5' - 'Standard_E4ps_v5' - 'Standard_E8ps_v5' - 'Standard_E16ps_v5' - 'Standard_E20ps_v5' - 'Standard_E32ps_v5' - 'Standard_E48ps_v5' - 'Standard_E64ps_v5' - 'Standard_E96ps_v5' - 'Standard_M64' - 'Standard_M128' - 'Standard_M208ms_v2' - 'Standard_M416ms_v2' - 'Standard_L4s_v2' - 'Standard_L8s_v2' - 'Standard_L16s_v2' - 'Standard_L32s_v2' - 'Standard_L64s_v2' - 'Standard_L80s_v2' - 'Standard_NC6' - 'Standard_NC12' - 'Standard_NC24' - 'Standard_NC24r' - 'Standard_ND6s' - 'Standard_ND12s' - 'Standard_ND24s' - 'Standard_ND24rs' - 'Standard_NV6' - 'Standard_NV12' - 'Standard_NV24' - 'Standard_H8' - 'Standard_H16' - 'Standard_H16r' - 'Standard_H16mr' - 'Standard_HB120rs_v2' - 'Standard_HC44rs' - 'Standard_DC2s' - 'Standard_DC4s' - 'Standard_DC2s_v2' - 'Standard_DC4s_v2' - 'Standard_DC8s_v2' - 'Standard_DC16s_v2' - 'Standard_DC32s_v2' - 'Standard_A1_v2' - 'Standard_A2_v2' - 'Standard_A4_v2' - 'Standard_A8_v2' - 'Standard_A2m_v2' - 'Standard_A4m_v2' - 'Standard_A8m_v2' -]) -param masterNodeInstanceType string = 'Standard_B2s' +@description('Specifies the VM size for your OpenVidu Master Node. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes.') +param masterNodeInstanceType string = 'Standard_B4s' -@description('Specifies the EC2 instance type for your OpenVidu Media Nodes') -@allowed([ - 'Standard_B1s' - 'Standard_B1ms' - 'Standard_B2s' - 'Standard_B2ms' - 'Standard_B4ms' - 'Standard_B8ms' - 'Standard_D2_v3' - 'Standard_D4_v3' - 'Standard_D8_v3' - 'Standard_D16_v3' - 'Standard_D32_v3' - 'Standard_D48_v3' - 'Standard_D64_v3' - 'Standard_D2_v4' - 'Standard_D4_v4' - 'Standard_D8_v4' - 'Standard_D16_v4' - 'Standard_D32_v4' - 'Standard_D48_v4' - 'Standard_D64_v4' - 'Standard_D96_v4' - 'Standard_D2_v5' - 'Standard_D4_v5' - 'Standard_D8_v5' - 'Standard_D16_v5' - 'Standard_D32_v5' - 'Standard_D48_v5' - 'Standard_D64_v5' - 'Standard_D96_v5' - 'Standard_D2ps_v5' - 'Standard_D4ps_v5' - 'Standard_D8ps_v5' - 'Standard_D16ps_v5' - 'Standard_D32ps_v5' - 'Standard_D48ps_v5' - 'Standard_D64ps_v5' - 'Standard_D96ps_v5' - 'Standard_D2pls_v5' - 'Standard_D4pls_v5' - 'Standard_D8pls_v5' - 'Standard_D16pls_v5' - 'Standard_D32pls_v5' - 'Standard_D48pls_v5' - 'Standard_D64pls_v5' - 'Standard_F2' - 'Standard_F4' - 'Standard_F8' - 'Standard_F16' - 'Standard_F32' - 'Standard_F64' - 'Standard_F72' - 'Standard_F2s_v2' - 'Standard_F4s_v2' - 'Standard_F8s_v2' - 'Standard_F16s_v2' - 'Standard_F32s_v2' - 'Standard_F64s_v2' - 'Standard_F72s_v2' - 'Standard_E2_v3' - 'Standard_E4_v3' - 'Standard_E8_v3' - 'Standard_E16_v3' - 'Standard_E32_v3' - 'Standard_E48_v3' - 'Standard_E64_v3' - 'Standard_E96_v3' - 'Standard_E2_v4' - 'Standard_E4_v4' - 'Standard_E8_v4' - 'Standard_E16_v4' - 'Standard_E32_v4' - 'Standard_E48_v4' - 'Standard_E64_v4' - 'Standard_E2_v5' - 'Standard_E4_v5' - 'Standard_E8_v5' - 'Standard_E16_v5' - 'Standard_E32_v5' - 'Standard_E48_v5' - 'Standard_E64_v5' - 'Standard_E96_v5' - 'Standard_E2ps_v5' - 'Standard_E4ps_v5' - 'Standard_E8ps_v5' - 'Standard_E16ps_v5' - 'Standard_E20ps_v5' - 'Standard_E32ps_v5' - 'Standard_E48ps_v5' - 'Standard_E64ps_v5' - 'Standard_E96ps_v5' - 'Standard_M64' - 'Standard_M128' - 'Standard_M208ms_v2' - 'Standard_M416ms_v2' - 'Standard_L4s_v2' - 'Standard_L8s_v2' - 'Standard_L16s_v2' - 'Standard_L32s_v2' - 'Standard_L64s_v2' - 'Standard_L80s_v2' - 'Standard_NC6' - 'Standard_NC12' - 'Standard_NC24' - 'Standard_NC24r' - 'Standard_ND6s' - 'Standard_ND12s' - 'Standard_ND24s' - 'Standard_ND24rs' - 'Standard_NV6' - 'Standard_NV12' - 'Standard_NV24' - 'Standard_H8' - 'Standard_H16' - 'Standard_H16r' - 'Standard_H16mr' - 'Standard_HB120rs_v2' - 'Standard_HC44rs' - 'Standard_DC2s' - 'Standard_DC4s' - 'Standard_DC2s_v2' - 'Standard_DC4s_v2' - 'Standard_DC8s_v2' - 'Standard_DC16s_v2' - 'Standard_DC32s_v2' - 'Standard_A1_v2' - 'Standard_A2_v2' - 'Standard_A4_v2' - 'Standard_A8_v2' - 'Standard_A2m_v2' - 'Standard_A4m_v2' - 'Standard_A8m_v2' -]) -param mediaNodeInstanceType string = 'Standard_B2s' +@description('Specifies the VM size for your OpenVidu Media Nodes. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes.') +param mediaNodeInstanceType string = 'Standard_B4s' @description('Username for the Virtual Machine.') param adminUsername string @@ -352,35 +86,17 @@ var isEmptyIp = publicIpAddressObject.newOrExistingOrNone == 'none' var isEmptyDomain = domainName == '' -var arm64InstanceTypes = [ - 'standard_d2ps_v5' - 'standard_d4ps_v5' - 'standard_d8ps_v5' - 'standard_d16ps_v5' - 'standard_d32ps_v5' - 'standard_d48ps_v5' - 'standard_d64ps_v5' - 'standard_d96ps_v5' - 'standard_d2pls_v5' - 'standard_d4pls_v5' - 'standard_d8pls_v5' - 'standard_d16pls_v5' - 'standard_d32pls_v5' - 'standard_d48pls_v5' - 'standard_d64pls_v5' - 'standard_e2ps_v5' - 'standard_e4ps_v5' - 'standard_e8ps_v5' - 'standard_e16ps_v5' - 'standard_e20ps_v5' - 'standard_e32ps_v5' - 'standard_e48ps_v5' - 'standard_e64ps_v5' - 'standard_e96ps_v5' -] +// ARM64 instances are detected by checking for 'p' in the instance type name pattern. +// Azure ARM-based VMs use 'p' to indicate ARM processors (Ampere Altra, Microsoft Cobalt, etc.) +// Examples: Standard_D2ps_v5, Standard_E4pds_v5, Standard_B2pls_v2, etc. +// The pattern checks for 'p' followed by optional letters (like 'l', 'd', 's') before '_v' version suffix +var masterNodeInstanceTypeLower = toLower(masterNodeInstanceType) +var mediaNodeInstanceTypeLower = toLower(mediaNodeInstanceType) +var isMasterArm64 = contains(masterNodeInstanceTypeLower, 'ps_v') || contains(masterNodeInstanceTypeLower, 'pls_v') || contains(masterNodeInstanceTypeLower, 'pds_v') || contains(masterNodeInstanceTypeLower, 'plds_v') || contains(masterNodeInstanceTypeLower, 'psv') || contains(masterNodeInstanceTypeLower, 'plsv') || contains(masterNodeInstanceTypeLower, 'pdsv') || contains(masterNodeInstanceTypeLower, 'pldsv') +var isMediaArm64 = contains(mediaNodeInstanceTypeLower, 'ps_v') || contains(mediaNodeInstanceTypeLower, 'pls_v') || contains(mediaNodeInstanceTypeLower, 'pds_v') || contains(mediaNodeInstanceTypeLower, 'plds_v') || contains(mediaNodeInstanceTypeLower, 'psv') || contains(mediaNodeInstanceTypeLower, 'plsv') || contains(mediaNodeInstanceTypeLower, 'pdsv') || contains(mediaNodeInstanceTypeLower, 'pldsv') -var masterUbuntuSku = contains(arm64InstanceTypes, toLower(masterNodeInstanceType)) ? '24_04-lts-arm64' : '24_04-lts-gen2' -var mediaUbuntuSku = contains(arm64InstanceTypes, toLower(mediaNodeInstanceType)) ? '24_04-lts-arm64' : '24_04-lts-gen2' +var masterUbuntuSku = isMasterArm64 ? '24_04-lts-arm64' : '24_04-lts-gen2' +var mediaUbuntuSku = isMediaArm64 ? '24_04-lts-arm64' : '24_04-lts-gen2' var masterNodeVMSettings = { vmName: '${stackName}-VM-MasterNode' diff --git a/openvidu-deployment/pro/elastic/azure/cf-openvidu-elastic.json b/openvidu-deployment/pro/elastic/azure/cf-openvidu-elastic.json index b7e983b37..3ae5c5e20 100644 --- a/openvidu-deployment/pro/elastic/azure/cf-openvidu-elastic.json +++ b/openvidu-deployment/pro/elastic/azure/cf-openvidu-elastic.json @@ -5,7 +5,7 @@ "_generator": { "name": "bicep", "version": "0.37.4.10188", - "templateHash": "15487529759540634412" + "templateHash": "11064671770283732977" } }, "parameters": { @@ -108,282 +108,16 @@ }, "masterNodeInstanceType": { "type": "string", - "defaultValue": "Standard_B2s", - "allowedValues": [ - "Standard_B1s", - "Standard_B1ms", - "Standard_B2s", - "Standard_B2ms", - "Standard_B4ms", - "Standard_B8ms", - "Standard_D2_v3", - "Standard_D4_v3", - "Standard_D8_v3", - "Standard_D16_v3", - "Standard_D32_v3", - "Standard_D48_v3", - "Standard_D64_v3", - "Standard_D2_v4", - "Standard_D4_v4", - "Standard_D8_v4", - "Standard_D16_v4", - "Standard_D32_v4", - "Standard_D48_v4", - "Standard_D64_v4", - "Standard_D96_v4", - "Standard_D2_v5", - "Standard_D4_v5", - "Standard_D8_v5", - "Standard_D16_v5", - "Standard_D32_v5", - "Standard_D48_v5", - "Standard_D64_v5", - "Standard_D96_v5", - "Standard_D2ps_v5", - "Standard_D4ps_v5", - "Standard_D8ps_v5", - "Standard_D16ps_v5", - "Standard_D32ps_v5", - "Standard_D48ps_v5", - "Standard_D64ps_v5", - "Standard_D96ps_v5", - "Standard_D2pls_v5", - "Standard_D4pls_v5", - "Standard_D8pls_v5", - "Standard_D16pls_v5", - "Standard_D32pls_v5", - "Standard_D48pls_v5", - "Standard_D64pls_v5", - "Standard_F2", - "Standard_F4", - "Standard_F8", - "Standard_F16", - "Standard_F32", - "Standard_F64", - "Standard_F72", - "Standard_F2s_v2", - "Standard_F4s_v2", - "Standard_F8s_v2", - "Standard_F16s_v2", - "Standard_F32s_v2", - "Standard_F64s_v2", - "Standard_F72s_v2", - "Standard_E2_v3", - "Standard_E4_v3", - "Standard_E8_v3", - "Standard_E16_v3", - "Standard_E32_v3", - "Standard_E48_v3", - "Standard_E64_v3", - "Standard_E96_v3", - "Standard_E2_v4", - "Standard_E4_v4", - "Standard_E8_v4", - "Standard_E16_v4", - "Standard_E32_v4", - "Standard_E48_v4", - "Standard_E64_v4", - "Standard_E2_v5", - "Standard_E4_v5", - "Standard_E8_v5", - "Standard_E16_v5", - "Standard_E32_v5", - "Standard_E48_v5", - "Standard_E64_v5", - "Standard_E96_v5", - "Standard_E2ps_v5", - "Standard_E4ps_v5", - "Standard_E8ps_v5", - "Standard_E16ps_v5", - "Standard_E20ps_v5", - "Standard_E32ps_v5", - "Standard_E48ps_v5", - "Standard_E64ps_v5", - "Standard_E96ps_v5", - "Standard_M64", - "Standard_M128", - "Standard_M208ms_v2", - "Standard_M416ms_v2", - "Standard_L4s_v2", - "Standard_L8s_v2", - "Standard_L16s_v2", - "Standard_L32s_v2", - "Standard_L64s_v2", - "Standard_L80s_v2", - "Standard_NC6", - "Standard_NC12", - "Standard_NC24", - "Standard_NC24r", - "Standard_ND6s", - "Standard_ND12s", - "Standard_ND24s", - "Standard_ND24rs", - "Standard_NV6", - "Standard_NV12", - "Standard_NV24", - "Standard_H8", - "Standard_H16", - "Standard_H16r", - "Standard_H16mr", - "Standard_HB120rs_v2", - "Standard_HC44rs", - "Standard_DC2s", - "Standard_DC4s", - "Standard_DC2s_v2", - "Standard_DC4s_v2", - "Standard_DC8s_v2", - "Standard_DC16s_v2", - "Standard_DC32s_v2", - "Standard_A1_v2", - "Standard_A2_v2", - "Standard_A4_v2", - "Standard_A8_v2", - "Standard_A2m_v2", - "Standard_A4m_v2", - "Standard_A8m_v2" - ], + "defaultValue": "Standard_B4s", "metadata": { - "description": "Specifies the EC2 instance type for your OpenVidu Master Node" + "description": "Specifies the VM size for your OpenVidu Master Node. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes." } }, "mediaNodeInstanceType": { "type": "string", - "defaultValue": "Standard_B2s", - "allowedValues": [ - "Standard_B1s", - "Standard_B1ms", - "Standard_B2s", - "Standard_B2ms", - "Standard_B4ms", - "Standard_B8ms", - "Standard_D2_v3", - "Standard_D4_v3", - "Standard_D8_v3", - "Standard_D16_v3", - "Standard_D32_v3", - "Standard_D48_v3", - "Standard_D64_v3", - "Standard_D2_v4", - "Standard_D4_v4", - "Standard_D8_v4", - "Standard_D16_v4", - "Standard_D32_v4", - "Standard_D48_v4", - "Standard_D64_v4", - "Standard_D96_v4", - "Standard_D2_v5", - "Standard_D4_v5", - "Standard_D8_v5", - "Standard_D16_v5", - "Standard_D32_v5", - "Standard_D48_v5", - "Standard_D64_v5", - "Standard_D96_v5", - "Standard_D2ps_v5", - "Standard_D4ps_v5", - "Standard_D8ps_v5", - "Standard_D16ps_v5", - "Standard_D32ps_v5", - "Standard_D48ps_v5", - "Standard_D64ps_v5", - "Standard_D96ps_v5", - "Standard_D2pls_v5", - "Standard_D4pls_v5", - "Standard_D8pls_v5", - "Standard_D16pls_v5", - "Standard_D32pls_v5", - "Standard_D48pls_v5", - "Standard_D64pls_v5", - "Standard_F2", - "Standard_F4", - "Standard_F8", - "Standard_F16", - "Standard_F32", - "Standard_F64", - "Standard_F72", - "Standard_F2s_v2", - "Standard_F4s_v2", - "Standard_F8s_v2", - "Standard_F16s_v2", - "Standard_F32s_v2", - "Standard_F64s_v2", - "Standard_F72s_v2", - "Standard_E2_v3", - "Standard_E4_v3", - "Standard_E8_v3", - "Standard_E16_v3", - "Standard_E32_v3", - "Standard_E48_v3", - "Standard_E64_v3", - "Standard_E96_v3", - "Standard_E2_v4", - "Standard_E4_v4", - "Standard_E8_v4", - "Standard_E16_v4", - "Standard_E32_v4", - "Standard_E48_v4", - "Standard_E64_v4", - "Standard_E2_v5", - "Standard_E4_v5", - "Standard_E8_v5", - "Standard_E16_v5", - "Standard_E32_v5", - "Standard_E48_v5", - "Standard_E64_v5", - "Standard_E96_v5", - "Standard_E2ps_v5", - "Standard_E4ps_v5", - "Standard_E8ps_v5", - "Standard_E16ps_v5", - "Standard_E20ps_v5", - "Standard_E32ps_v5", - "Standard_E48ps_v5", - "Standard_E64ps_v5", - "Standard_E96ps_v5", - "Standard_M64", - "Standard_M128", - "Standard_M208ms_v2", - "Standard_M416ms_v2", - "Standard_L4s_v2", - "Standard_L8s_v2", - "Standard_L16s_v2", - "Standard_L32s_v2", - "Standard_L64s_v2", - "Standard_L80s_v2", - "Standard_NC6", - "Standard_NC12", - "Standard_NC24", - "Standard_NC24r", - "Standard_ND6s", - "Standard_ND12s", - "Standard_ND24s", - "Standard_ND24rs", - "Standard_NV6", - "Standard_NV12", - "Standard_NV24", - "Standard_H8", - "Standard_H16", - "Standard_H16r", - "Standard_H16mr", - "Standard_HB120rs_v2", - "Standard_HC44rs", - "Standard_DC2s", - "Standard_DC4s", - "Standard_DC2s_v2", - "Standard_DC4s_v2", - "Standard_DC8s_v2", - "Standard_DC16s_v2", - "Standard_DC32s_v2", - "Standard_A1_v2", - "Standard_A2_v2", - "Standard_A4_v2", - "Standard_A8_v2", - "Standard_A2m_v2", - "Standard_A4m_v2", - "Standard_A8m_v2" - ], + "defaultValue": "Standard_B4s", "metadata": { - "description": "Specifies the EC2 instance type for your OpenVidu Media Nodes" + "description": "Specifies the VM size for your OpenVidu Media Nodes. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes." } }, "adminUsername": { @@ -459,34 +193,12 @@ "variables": { "isEmptyIp": "[equals(parameters('publicIpAddressObject').newOrExistingOrNone, 'none')]", "isEmptyDomain": "[equals(parameters('domainName'), '')]", - "arm64InstanceTypes": [ - "standard_d2ps_v5", - "standard_d4ps_v5", - "standard_d8ps_v5", - "standard_d16ps_v5", - "standard_d32ps_v5", - "standard_d48ps_v5", - "standard_d64ps_v5", - "standard_d96ps_v5", - "standard_d2pls_v5", - "standard_d4pls_v5", - "standard_d8pls_v5", - "standard_d16pls_v5", - "standard_d32pls_v5", - "standard_d48pls_v5", - "standard_d64pls_v5", - "standard_e2ps_v5", - "standard_e4ps_v5", - "standard_e8ps_v5", - "standard_e16ps_v5", - "standard_e20ps_v5", - "standard_e32ps_v5", - "standard_e48ps_v5", - "standard_e64ps_v5", - "standard_e96ps_v5" - ], - "masterUbuntuSku": "[if(contains(variables('arm64InstanceTypes'), toLower(parameters('masterNodeInstanceType'))), '24_04-lts-arm64', '24_04-lts-gen2')]", - "mediaUbuntuSku": "[if(contains(variables('arm64InstanceTypes'), toLower(parameters('mediaNodeInstanceType'))), '24_04-lts-arm64', '24_04-lts-gen2')]", + "masterNodeInstanceTypeLower": "[toLower(parameters('masterNodeInstanceType'))]", + "mediaNodeInstanceTypeLower": "[toLower(parameters('mediaNodeInstanceType'))]", + "isMasterArm64": "[or(or(or(or(or(or(or(contains(variables('masterNodeInstanceTypeLower'), 'ps_v'), contains(variables('masterNodeInstanceTypeLower'), 'pls_v')), contains(variables('masterNodeInstanceTypeLower'), 'pds_v')), contains(variables('masterNodeInstanceTypeLower'), 'plds_v')), contains(variables('masterNodeInstanceTypeLower'), 'psv')), contains(variables('masterNodeInstanceTypeLower'), 'plsv')), contains(variables('masterNodeInstanceTypeLower'), 'pdsv')), contains(variables('masterNodeInstanceTypeLower'), 'pldsv'))]", + "isMediaArm64": "[or(or(or(or(or(or(or(contains(variables('mediaNodeInstanceTypeLower'), 'ps_v'), contains(variables('mediaNodeInstanceTypeLower'), 'pls_v')), contains(variables('mediaNodeInstanceTypeLower'), 'pds_v')), contains(variables('mediaNodeInstanceTypeLower'), 'plds_v')), contains(variables('mediaNodeInstanceTypeLower'), 'psv')), contains(variables('mediaNodeInstanceTypeLower'), 'plsv')), contains(variables('mediaNodeInstanceTypeLower'), 'pdsv')), contains(variables('mediaNodeInstanceTypeLower'), 'pldsv'))]", + "masterUbuntuSku": "[if(variables('isMasterArm64'), '24_04-lts-arm64', '24_04-lts-gen2')]", + "mediaUbuntuSku": "[if(variables('isMediaArm64'), '24_04-lts-arm64', '24_04-lts-gen2')]", "masterNodeVMSettings": { "vmName": "[format('{0}-VM-MasterNode', parameters('stackName'))]", "osDiskType": "StandardSSD_LRS", diff --git a/openvidu-deployment/pro/elastic/azure/createUiDefinition.json b/openvidu-deployment/pro/elastic/azure/createUiDefinition.json index b92643265..1bb5b2067 100644 --- a/openvidu-deployment/pro/elastic/azure/createUiDefinition.json +++ b/openvidu-deployment/pro/elastic/azure/createUiDefinition.json @@ -260,7 +260,10 @@ "label": "Master Node Instance Type", "toolTip": "Specifies the Azure instance type for your OpenVidu Master Node", "recommendedSizes": [ - "Standard_B2s" + "Standard_B4s", + "Standard_B4ms", + "Standard_D4ps_v5", + "Standard_D4pls_v5" ], "constraints": { "allowedSizes": [], @@ -280,8 +283,10 @@ "label": "Media Node Instance Type", "toolTip": "Specifies the Azure instance type for your OpenVidu Media Nodes", "recommendedSizes": [ - "Standard_B2s", - "Standard_B4ms" + "Standard_B4s", + "Standard_B4ms", + "Standard_D4ps_v5", + "Standard_D4pls_v5" ], "constraints": { "allowedSizes": [], diff --git a/openvidu-deployment/pro/ha/azure/cf-openvidu-ha.bicep b/openvidu-deployment/pro/ha/azure/cf-openvidu-ha.bicep index 08939d2c2..c96872de3 100644 --- a/openvidu-deployment/pro/ha/azure/cf-openvidu-ha.bicep +++ b/openvidu-deployment/pro/ha/azure/cf-openvidu-ha.bicep @@ -53,271 +53,14 @@ param initialMeetAdminPassword string = '' @secure() param initialMeetApiKey string = '' -@description('Specifies the EC2 instance type for your OpenVidu Master Node') -@allowed([ - 'Standard_B1s' - 'Standard_B1ms' - 'Standard_B2s' - 'Standard_B2ms' - 'Standard_B4ms' - 'Standard_B8ms' - 'Standard_D2_v3' - 'Standard_D4_v3' - 'Standard_D8_v3' - 'Standard_D16_v3' - 'Standard_D32_v3' - 'Standard_D48_v3' - 'Standard_D64_v3' - 'Standard_D2_v4' - 'Standard_D4_v4' - 'Standard_D8_v4' - 'Standard_D16_v4' - 'Standard_D32_v4' - 'Standard_D48_v4' - 'Standard_D64_v4' - 'Standard_D96_v4' - 'Standard_D2_v5' - 'Standard_D4_v5' - 'Standard_D8_v5' - 'Standard_D16_v5' - 'Standard_D32_v5' - 'Standard_D48_v5' - 'Standard_D64_v5' - 'Standard_D96_v5' - 'Standard_D2ps_v5' - 'Standard_D4ps_v5' - 'Standard_D8ps_v5' - 'Standard_D16ps_v5' - 'Standard_D32ps_v5' - 'Standard_D48ps_v5' - 'Standard_D64ps_v5' - 'Standard_D96ps_v5' - 'Standard_D2pls_v5' - 'Standard_D4pls_v5' - 'Standard_D8pls_v5' - 'Standard_D16pls_v5' - 'Standard_D32pls_v5' - 'Standard_D48pls_v5' - 'Standard_D64pls_v5' - 'Standard_F2' - 'Standard_F4' - 'Standard_F8' - 'Standard_F16' - 'Standard_F32' - 'Standard_F64' - 'Standard_F72' - 'Standard_F2s_v2' - 'Standard_F4s_v2' - 'Standard_F8s_v2' - 'Standard_F16s_v2' - 'Standard_F32s_v2' - 'Standard_F64s_v2' - 'Standard_F72s_v2' - 'Standard_E2_v3' - 'Standard_E4_v3' - 'Standard_E8_v3' - 'Standard_E16_v3' - 'Standard_E32_v3' - 'Standard_E48_v3' - 'Standard_E64_v3' - 'Standard_E96_v3' - 'Standard_E2_v4' - 'Standard_E4_v4' - 'Standard_E8_v4' - 'Standard_E16_v4' - 'Standard_E32_v4' - 'Standard_E48_v4' - 'Standard_E64_v4' - 'Standard_E2_v5' - 'Standard_E4_v5' - 'Standard_E8_v5' - 'Standard_E16_v5' - 'Standard_E32_v5' - 'Standard_E48_v5' - 'Standard_E64_v5' - 'Standard_E96_v5' - 'Standard_E2ps_v5' - 'Standard_E4ps_v5' - 'Standard_E8ps_v5' - 'Standard_E16ps_v5' - 'Standard_E20ps_v5' - 'Standard_E32ps_v5' - 'Standard_E48ps_v5' - 'Standard_E64ps_v5' - 'Standard_E96ps_v5' - 'Standard_M64' - 'Standard_M128' - 'Standard_M208ms_v2' - 'Standard_M416ms_v2' - 'Standard_L4s_v2' - 'Standard_L8s_v2' - 'Standard_L16s_v2' - 'Standard_L32s_v2' - 'Standard_L64s_v2' - 'Standard_L80s_v2' - 'Standard_NC6' - 'Standard_NC12' - 'Standard_NC24' - 'Standard_NC24r' - 'Standard_ND6s' - 'Standard_ND12s' - 'Standard_ND24s' - 'Standard_ND24rs' - 'Standard_NV6' - 'Standard_NV12' - 'Standard_NV24' - 'Standard_H8' - 'Standard_H16' - 'Standard_H16r' - 'Standard_H16mr' - 'Standard_HB120rs_v2' - 'Standard_HC44rs' - 'Standard_DC2s' - 'Standard_DC4s' - 'Standard_DC2s_v2' - 'Standard_DC4s_v2' - 'Standard_DC8s_v2' - 'Standard_DC16s_v2' - 'Standard_DC32s_v2' - 'Standard_A1_v2' - 'Standard_A2_v2' - 'Standard_A4_v2' - 'Standard_A8_v2' - 'Standard_A2m_v2' - 'Standard_A4m_v2' - 'Standard_A8m_v2' -]) -param masterNodeInstanceType string = 'Standard_B2s' +@description('Specifies the VM size for your OpenVidu Master Node. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes.') +param masterNodeInstanceType string = 'Standard_B4s' @description('Size of the disk in GB') param masterNodesDiskSize int = 100 -@description('Specifies the EC2 instance type for your OpenVidu Media Nodes') -@allowed([ - 'Standard_B1s' - 'Standard_B1ms' - 'Standard_B2s' - 'Standard_B2ms' - 'Standard_B4ms' - 'Standard_B8ms' - 'Standard_D2_v3' - 'Standard_D4_v3' - 'Standard_D8_v3' - 'Standard_D16_v3' - 'Standard_D32_v3' - 'Standard_D48_v3' - 'Standard_D64_v3' - 'Standard_D2_v4' - 'Standard_D4_v4' - 'Standard_D8_v4' - 'Standard_D16_v4' - 'Standard_D32_v4' - 'Standard_D48_v4' - 'Standard_D64_v4' - 'Standard_D96_v4' - 'Standard_D2_v5' - 'Standard_D4_v5' - 'Standard_D8_v5' - 'Standard_D16_v5' - 'Standard_D32_v5' - 'Standard_D48_v5' - 'Standard_D64_v5' - 'Standard_D96_v5' - 'Standard_D2ps_v5' - 'Standard_D4ps_v5' - 'Standard_D8ps_v5' - 'Standard_D16ps_v5' - 'Standard_D32ps_v5' - 'Standard_D48ps_v5' - 'Standard_D64ps_v5' - 'Standard_D96ps_v5' - 'Standard_D2pls_v5' - 'Standard_D4pls_v5' - 'Standard_D8pls_v5' - 'Standard_D16pls_v5' - 'Standard_D32pls_v5' - 'Standard_D48pls_v5' - 'Standard_D64pls_v5' - 'Standard_F2' - 'Standard_F4' - 'Standard_F8' - 'Standard_F16' - 'Standard_F32' - 'Standard_F64' - 'Standard_F72' - 'Standard_F2s_v2' - 'Standard_F4s_v2' - 'Standard_F8s_v2' - 'Standard_F16s_v2' - 'Standard_F32s_v2' - 'Standard_F64s_v2' - 'Standard_F72s_v2' - 'Standard_E2_v3' - 'Standard_E4_v3' - 'Standard_E8_v3' - 'Standard_E16_v3' - 'Standard_E32_v3' - 'Standard_E48_v3' - 'Standard_E64_v3' - 'Standard_E96_v3' - 'Standard_E2_v4' - 'Standard_E4_v4' - 'Standard_E8_v4' - 'Standard_E16_v4' - 'Standard_E32_v4' - 'Standard_E48_v4' - 'Standard_E64_v4' - 'Standard_E2_v5' - 'Standard_E4_v5' - 'Standard_E8_v5' - 'Standard_E16_v5' - 'Standard_E32_v5' - 'Standard_E48_v5' - 'Standard_E64_v5' - 'Standard_E96_v5' - 'Standard_M64' - 'Standard_M128' - 'Standard_M208ms_v2' - 'Standard_M416ms_v2' - 'Standard_L4s_v2' - 'Standard_L8s_v2' - 'Standard_L16s_v2' - 'Standard_L32s_v2' - 'Standard_L64s_v2' - 'Standard_L80s_v2' - 'Standard_NC6' - 'Standard_NC12' - 'Standard_NC24' - 'Standard_NC24r' - 'Standard_ND6s' - 'Standard_ND12s' - 'Standard_ND24s' - 'Standard_ND24rs' - 'Standard_NV6' - 'Standard_NV12' - 'Standard_NV24' - 'Standard_H8' - 'Standard_H16' - 'Standard_H16r' - 'Standard_H16mr' - 'Standard_HB120rs_v2' - 'Standard_HC44rs' - 'Standard_DC2s' - 'Standard_DC4s' - 'Standard_DC2s_v2' - 'Standard_DC4s_v2' - 'Standard_DC8s_v2' - 'Standard_DC16s_v2' - 'Standard_DC32s_v2' - 'Standard_A1_v2' - 'Standard_A2_v2' - 'Standard_A4_v2' - 'Standard_A8_v2' - 'Standard_A2m_v2' - 'Standard_A4m_v2' - 'Standard_A8m_v2' -]) -param mediaNodeInstanceType string = 'Standard_B2s' +@description('Specifies the VM size for your OpenVidu Media Nodes. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes.') +param mediaNodeInstanceType string = 'Standard_B4s' @description('Username for the Virtual Machine.') param adminUsername string @@ -346,35 +89,17 @@ var isEmptyIp = publicIpAddressObject.newOrExistingOrNone == 'none' var isEmptyDomain = domainName == '' -var arm64InstanceTypes = [ - 'standard_d2ps_v5' - 'standard_d4ps_v5' - 'standard_d8ps_v5' - 'standard_d16ps_v5' - 'standard_d32ps_v5' - 'standard_d48ps_v5' - 'standard_d64ps_v5' - 'standard_d96ps_v5' - 'standard_d2pls_v5' - 'standard_d4pls_v5' - 'standard_d8pls_v5' - 'standard_d16pls_v5' - 'standard_d32pls_v5' - 'standard_d48pls_v5' - 'standard_d64pls_v5' - 'standard_e2ps_v5' - 'standard_e4ps_v5' - 'standard_e8ps_v5' - 'standard_e16ps_v5' - 'standard_e20ps_v5' - 'standard_e32ps_v5' - 'standard_e48ps_v5' - 'standard_e64ps_v5' - 'standard_e96ps_v5' -] +// ARM64 instances are detected by checking for 'p' in the instance type name pattern. +// Azure ARM-based VMs use 'p' to indicate ARM processors (Ampere Altra, Microsoft Cobalt, etc.) +// Examples: Standard_D2ps_v5, Standard_E4pds_v5, Standard_B2pls_v2, etc. +// The pattern checks for 'p' followed by optional letters (like 'l', 'd', 's') before '_v' version suffix +var masterNodeInstanceTypeLower = toLower(masterNodeInstanceType) +var mediaNodeInstanceTypeLower = toLower(mediaNodeInstanceType) +var isMasterArm64 = contains(masterNodeInstanceTypeLower, 'ps_v') || contains(masterNodeInstanceTypeLower, 'pls_v') || contains(masterNodeInstanceTypeLower, 'pds_v') || contains(masterNodeInstanceTypeLower, 'plds_v') || contains(masterNodeInstanceTypeLower, 'psv') || contains(masterNodeInstanceTypeLower, 'plsv') || contains(masterNodeInstanceTypeLower, 'pdsv') || contains(masterNodeInstanceTypeLower, 'pldsv') +var isMediaArm64 = contains(mediaNodeInstanceTypeLower, 'ps_v') || contains(mediaNodeInstanceTypeLower, 'pls_v') || contains(mediaNodeInstanceTypeLower, 'pds_v') || contains(mediaNodeInstanceTypeLower, 'plds_v') || contains(mediaNodeInstanceTypeLower, 'psv') || contains(mediaNodeInstanceTypeLower, 'plsv') || contains(mediaNodeInstanceTypeLower, 'pdsv') || contains(mediaNodeInstanceTypeLower, 'pldsv') -var masterUbuntuSku = contains(arm64InstanceTypes, toLower(masterNodeInstanceType)) ? '24_04-lts-arm64' : '24_04-lts-gen2' -var mediaUbuntuSku = contains(arm64InstanceTypes, toLower(mediaNodeInstanceType)) ? '24_04-lts-arm64' : '24_04-lts-gen2' +var masterUbuntuSku = isMasterArm64 ? '24_04-lts-arm64' : '24_04-lts-gen2' +var mediaUbuntuSku = isMediaArm64 ? '24_04-lts-arm64' : '24_04-lts-gen2' var masterNodeVMSettings = { osDiskType: 'StandardSSD_LRS' diff --git a/openvidu-deployment/pro/ha/azure/cf-openvidu-ha.json b/openvidu-deployment/pro/ha/azure/cf-openvidu-ha.json index 7e4a665ab..558be0b4b 100644 --- a/openvidu-deployment/pro/ha/azure/cf-openvidu-ha.json +++ b/openvidu-deployment/pro/ha/azure/cf-openvidu-ha.json @@ -5,7 +5,7 @@ "_generator": { "name": "bicep", "version": "0.37.4.10188", - "templateHash": "12176049289257962193" + "templateHash": "4723246277088565564" } }, "parameters": { @@ -108,142 +108,9 @@ }, "masterNodeInstanceType": { "type": "string", - "defaultValue": "Standard_B2s", - "allowedValues": [ - "Standard_B1s", - "Standard_B1ms", - "Standard_B2s", - "Standard_B2ms", - "Standard_B4ms", - "Standard_B8ms", - "Standard_D2_v3", - "Standard_D4_v3", - "Standard_D8_v3", - "Standard_D16_v3", - "Standard_D32_v3", - "Standard_D48_v3", - "Standard_D64_v3", - "Standard_D2_v4", - "Standard_D4_v4", - "Standard_D8_v4", - "Standard_D16_v4", - "Standard_D32_v4", - "Standard_D48_v4", - "Standard_D64_v4", - "Standard_D96_v4", - "Standard_D2_v5", - "Standard_D4_v5", - "Standard_D8_v5", - "Standard_D16_v5", - "Standard_D32_v5", - "Standard_D48_v5", - "Standard_D64_v5", - "Standard_D96_v5", - "Standard_D2ps_v5", - "Standard_D4ps_v5", - "Standard_D8ps_v5", - "Standard_D16ps_v5", - "Standard_D32ps_v5", - "Standard_D48ps_v5", - "Standard_D64ps_v5", - "Standard_D96ps_v5", - "Standard_D2pls_v5", - "Standard_D4pls_v5", - "Standard_D8pls_v5", - "Standard_D16pls_v5", - "Standard_D32pls_v5", - "Standard_D48pls_v5", - "Standard_D64pls_v5", - "Standard_F2", - "Standard_F4", - "Standard_F8", - "Standard_F16", - "Standard_F32", - "Standard_F64", - "Standard_F72", - "Standard_F2s_v2", - "Standard_F4s_v2", - "Standard_F8s_v2", - "Standard_F16s_v2", - "Standard_F32s_v2", - "Standard_F64s_v2", - "Standard_F72s_v2", - "Standard_E2_v3", - "Standard_E4_v3", - "Standard_E8_v3", - "Standard_E16_v3", - "Standard_E32_v3", - "Standard_E48_v3", - "Standard_E64_v3", - "Standard_E96_v3", - "Standard_E2_v4", - "Standard_E4_v4", - "Standard_E8_v4", - "Standard_E16_v4", - "Standard_E32_v4", - "Standard_E48_v4", - "Standard_E64_v4", - "Standard_E2_v5", - "Standard_E4_v5", - "Standard_E8_v5", - "Standard_E16_v5", - "Standard_E32_v5", - "Standard_E48_v5", - "Standard_E64_v5", - "Standard_E96_v5", - "Standard_E2ps_v5", - "Standard_E4ps_v5", - "Standard_E8ps_v5", - "Standard_E16ps_v5", - "Standard_E20ps_v5", - "Standard_E32ps_v5", - "Standard_E48ps_v5", - "Standard_E64ps_v5", - "Standard_E96ps_v5", - "Standard_M64", - "Standard_M128", - "Standard_M208ms_v2", - "Standard_M416ms_v2", - "Standard_L4s_v2", - "Standard_L8s_v2", - "Standard_L16s_v2", - "Standard_L32s_v2", - "Standard_L64s_v2", - "Standard_L80s_v2", - "Standard_NC6", - "Standard_NC12", - "Standard_NC24", - "Standard_NC24r", - "Standard_ND6s", - "Standard_ND12s", - "Standard_ND24s", - "Standard_ND24rs", - "Standard_NV6", - "Standard_NV12", - "Standard_NV24", - "Standard_H8", - "Standard_H16", - "Standard_H16r", - "Standard_H16mr", - "Standard_HB120rs_v2", - "Standard_HC44rs", - "Standard_DC2s", - "Standard_DC4s", - "Standard_DC2s_v2", - "Standard_DC4s_v2", - "Standard_DC8s_v2", - "Standard_DC16s_v2", - "Standard_DC32s_v2", - "Standard_A1_v2", - "Standard_A2_v2", - "Standard_A4_v2", - "Standard_A8_v2", - "Standard_A2m_v2", - "Standard_A4m_v2", - "Standard_A8m_v2" - ], + "defaultValue": "Standard_B4s", "metadata": { - "description": "Specifies the EC2 instance type for your OpenVidu Master Node" + "description": "Specifies the VM size for your OpenVidu Master Node. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes." } }, "masterNodesDiskSize": { @@ -255,133 +122,9 @@ }, "mediaNodeInstanceType": { "type": "string", - "defaultValue": "Standard_B2s", - "allowedValues": [ - "Standard_B1s", - "Standard_B1ms", - "Standard_B2s", - "Standard_B2ms", - "Standard_B4ms", - "Standard_B8ms", - "Standard_D2_v3", - "Standard_D4_v3", - "Standard_D8_v3", - "Standard_D16_v3", - "Standard_D32_v3", - "Standard_D48_v3", - "Standard_D64_v3", - "Standard_D2_v4", - "Standard_D4_v4", - "Standard_D8_v4", - "Standard_D16_v4", - "Standard_D32_v4", - "Standard_D48_v4", - "Standard_D64_v4", - "Standard_D96_v4", - "Standard_D2_v5", - "Standard_D4_v5", - "Standard_D8_v5", - "Standard_D16_v5", - "Standard_D32_v5", - "Standard_D48_v5", - "Standard_D64_v5", - "Standard_D96_v5", - "Standard_D2ps_v5", - "Standard_D4ps_v5", - "Standard_D8ps_v5", - "Standard_D16ps_v5", - "Standard_D32ps_v5", - "Standard_D48ps_v5", - "Standard_D64ps_v5", - "Standard_D96ps_v5", - "Standard_D2pls_v5", - "Standard_D4pls_v5", - "Standard_D8pls_v5", - "Standard_D16pls_v5", - "Standard_D32pls_v5", - "Standard_D48pls_v5", - "Standard_D64pls_v5", - "Standard_F2", - "Standard_F4", - "Standard_F8", - "Standard_F16", - "Standard_F32", - "Standard_F64", - "Standard_F72", - "Standard_F2s_v2", - "Standard_F4s_v2", - "Standard_F8s_v2", - "Standard_F16s_v2", - "Standard_F32s_v2", - "Standard_F64s_v2", - "Standard_F72s_v2", - "Standard_E2_v3", - "Standard_E4_v3", - "Standard_E8_v3", - "Standard_E16_v3", - "Standard_E32_v3", - "Standard_E48_v3", - "Standard_E64_v3", - "Standard_E96_v3", - "Standard_E2_v4", - "Standard_E4_v4", - "Standard_E8_v4", - "Standard_E16_v4", - "Standard_E32_v4", - "Standard_E48_v4", - "Standard_E64_v4", - "Standard_E2_v5", - "Standard_E4_v5", - "Standard_E8_v5", - "Standard_E16_v5", - "Standard_E32_v5", - "Standard_E48_v5", - "Standard_E64_v5", - "Standard_E96_v5", - "Standard_M64", - "Standard_M128", - "Standard_M208ms_v2", - "Standard_M416ms_v2", - "Standard_L4s_v2", - "Standard_L8s_v2", - "Standard_L16s_v2", - "Standard_L32s_v2", - "Standard_L64s_v2", - "Standard_L80s_v2", - "Standard_NC6", - "Standard_NC12", - "Standard_NC24", - "Standard_NC24r", - "Standard_ND6s", - "Standard_ND12s", - "Standard_ND24s", - "Standard_ND24rs", - "Standard_NV6", - "Standard_NV12", - "Standard_NV24", - "Standard_H8", - "Standard_H16", - "Standard_H16r", - "Standard_H16mr", - "Standard_HB120rs_v2", - "Standard_HC44rs", - "Standard_DC2s", - "Standard_DC4s", - "Standard_DC2s_v2", - "Standard_DC4s_v2", - "Standard_DC8s_v2", - "Standard_DC16s_v2", - "Standard_DC32s_v2", - "Standard_A1_v2", - "Standard_A2_v2", - "Standard_A4_v2", - "Standard_A8_v2", - "Standard_A2m_v2", - "Standard_A4m_v2", - "Standard_A8m_v2" - ], + "defaultValue": "Standard_B4s", "metadata": { - "description": "Specifies the EC2 instance type for your OpenVidu Media Nodes" + "description": "Specifies the VM size for your OpenVidu Media Nodes. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes." } }, "adminUsername": { @@ -464,34 +207,12 @@ "variables": { "isEmptyIp": "[equals(parameters('publicIpAddressObject').newOrExistingOrNone, 'none')]", "isEmptyDomain": "[equals(parameters('domainName'), '')]", - "arm64InstanceTypes": [ - "standard_d2ps_v5", - "standard_d4ps_v5", - "standard_d8ps_v5", - "standard_d16ps_v5", - "standard_d32ps_v5", - "standard_d48ps_v5", - "standard_d64ps_v5", - "standard_d96ps_v5", - "standard_d2pls_v5", - "standard_d4pls_v5", - "standard_d8pls_v5", - "standard_d16pls_v5", - "standard_d32pls_v5", - "standard_d48pls_v5", - "standard_d64pls_v5", - "standard_e2ps_v5", - "standard_e4ps_v5", - "standard_e8ps_v5", - "standard_e16ps_v5", - "standard_e20ps_v5", - "standard_e32ps_v5", - "standard_e48ps_v5", - "standard_e64ps_v5", - "standard_e96ps_v5" - ], - "masterUbuntuSku": "[if(contains(variables('arm64InstanceTypes'), toLower(parameters('masterNodeInstanceType'))), '24_04-lts-arm64', '24_04-lts-gen2')]", - "mediaUbuntuSku": "[if(contains(variables('arm64InstanceTypes'), toLower(parameters('mediaNodeInstanceType'))), '24_04-lts-arm64', '24_04-lts-gen2')]", + "masterNodeInstanceTypeLower": "[toLower(parameters('masterNodeInstanceType'))]", + "mediaNodeInstanceTypeLower": "[toLower(parameters('mediaNodeInstanceType'))]", + "isMasterArm64": "[or(or(or(or(or(or(or(contains(variables('masterNodeInstanceTypeLower'), 'ps_v'), contains(variables('masterNodeInstanceTypeLower'), 'pls_v')), contains(variables('masterNodeInstanceTypeLower'), 'pds_v')), contains(variables('masterNodeInstanceTypeLower'), 'plds_v')), contains(variables('masterNodeInstanceTypeLower'), 'psv')), contains(variables('masterNodeInstanceTypeLower'), 'plsv')), contains(variables('masterNodeInstanceTypeLower'), 'pdsv')), contains(variables('masterNodeInstanceTypeLower'), 'pldsv'))]", + "isMediaArm64": "[or(or(or(or(or(or(or(contains(variables('mediaNodeInstanceTypeLower'), 'ps_v'), contains(variables('mediaNodeInstanceTypeLower'), 'pls_v')), contains(variables('mediaNodeInstanceTypeLower'), 'pds_v')), contains(variables('mediaNodeInstanceTypeLower'), 'plds_v')), contains(variables('mediaNodeInstanceTypeLower'), 'psv')), contains(variables('mediaNodeInstanceTypeLower'), 'plsv')), contains(variables('mediaNodeInstanceTypeLower'), 'pdsv')), contains(variables('mediaNodeInstanceTypeLower'), 'pldsv'))]", + "masterUbuntuSku": "[if(variables('isMasterArm64'), '24_04-lts-arm64', '24_04-lts-gen2')]", + "mediaUbuntuSku": "[if(variables('isMediaArm64'), '24_04-lts-arm64', '24_04-lts-gen2')]", "masterNodeVMSettings": { "osDiskType": "StandardSSD_LRS", "osDiskSize": "[parameters('masterNodesDiskSize')]", diff --git a/openvidu-deployment/pro/ha/azure/createUiDefinition.json b/openvidu-deployment/pro/ha/azure/createUiDefinition.json index 5eb85d2b8..e8a051101 100644 --- a/openvidu-deployment/pro/ha/azure/createUiDefinition.json +++ b/openvidu-deployment/pro/ha/azure/createUiDefinition.json @@ -260,7 +260,10 @@ "label": "Master Node Instance Type", "toolTip": "Specifies the Azure instance type for your OpenVidu Master Node", "recommendedSizes": [ - "Standard_B2s" + "Standard_B4s", + "Standard_B4ms", + "Standard_D4ps_v5", + "Standard_D4pls_v5" ], "constraints": { "allowedSizes": [], @@ -295,8 +298,10 @@ "label": "Media Node Instance Type", "toolTip": "Specifies the Azure instance type for your OpenVidu Media Nodes", "recommendedSizes": [ - "Standard_B2s", - "Standard_B4ms" + "Standard_B4s", + "Standard_B4ms", + "Standard_D4ps_v5", + "Standard_D4pls_v5" ], "constraints": { "allowedSizes": [], diff --git a/openvidu-deployment/pro/singlenode/azure/cf-openvidu-singlenode.bicep b/openvidu-deployment/pro/singlenode/azure/cf-openvidu-singlenode.bicep index de80595ce..a414148b3 100644 --- a/openvidu-deployment/pro/singlenode/azure/cf-openvidu-singlenode.bicep +++ b/openvidu-deployment/pro/singlenode/azure/cf-openvidu-singlenode.bicep @@ -54,141 +54,8 @@ param openviduLicense string param rtcEngine string = 'pion' // Azure instance config -@description('Specifies the azure vm size for your OpenVidu instance') -@allowed([ - 'Standard_B1s' - 'Standard_B1ms' - 'Standard_B2s' - 'Standard_B2ms' - 'Standard_B4ms' - 'Standard_B8ms' - 'Standard_D2_v3' - 'Standard_D4_v3' - 'Standard_D8_v3' - 'Standard_D16_v3' - 'Standard_D32_v3' - 'Standard_D48_v3' - 'Standard_D64_v3' - 'Standard_D2_v4' - 'Standard_D4_v4' - 'Standard_D8_v4' - 'Standard_D16_v4' - 'Standard_D32_v4' - 'Standard_D48_v4' - 'Standard_D64_v4' - 'Standard_D96_v4' - 'Standard_D2_v5' - 'Standard_D4_v5' - 'Standard_D8_v5' - 'Standard_D16_v5' - 'Standard_D32_v5' - 'Standard_D48_v5' - 'Standard_D64_v5' - 'Standard_D96_v5' - 'Standard_D2ps_v5' - 'Standard_D4ps_v5' - 'Standard_D8ps_v5' - 'Standard_D16ps_v5' - 'Standard_D32ps_v5' - 'Standard_D48ps_v5' - 'Standard_D64ps_v5' - 'Standard_D2pls_v5' - 'Standard_D4pls_v5' - 'Standard_D8pls_v5' - 'Standard_D16pls_v5' - 'Standard_D32pls_v5' - 'Standard_D48pls_v5' - 'Standard_D64pls_v5' - 'Standard_D96ps_v5' - 'Standard_F2' - 'Standard_F4' - 'Standard_F8' - 'Standard_F16' - 'Standard_F32' - 'Standard_F64' - 'Standard_F72' - 'Standard_F2s_v2' - 'Standard_F4s_v2' - 'Standard_F8s_v2' - 'Standard_F16s_v2' - 'Standard_F32s_v2' - 'Standard_F64s_v2' - 'Standard_F72s_v2' - 'Standard_E2_v3' - 'Standard_E4_v3' - 'Standard_E8_v3' - 'Standard_E16_v3' - 'Standard_E32_v3' - 'Standard_E48_v3' - 'Standard_E64_v3' - 'Standard_E96_v3' - 'Standard_E2_v4' - 'Standard_E4_v4' - 'Standard_E8_v4' - 'Standard_E16_v4' - 'Standard_E32_v4' - 'Standard_E48_v4' - 'Standard_E64_v4' - 'Standard_E2_v5' - 'Standard_E4_v5' - 'Standard_E8_v5' - 'Standard_E16_v5' - 'Standard_E32_v5' - 'Standard_E48_v5' - 'Standard_E64_v5' - 'Standard_E96_v5' - 'Standard_E2ps_v5' - 'Standard_E4ps_v5' - 'Standard_E8ps_v5' - 'Standard_E16ps_v5' - 'Standard_E20ps_v5' - 'Standard_E32ps_v5' - 'Standard_E48ps_v5' - 'Standard_E64ps_v5' - 'Standard_E96ps_v5' - 'Standard_M64' - 'Standard_M128' - 'Standard_M208ms_v2' - 'Standard_M416ms_v2' - 'Standard_L4s_v2' - 'Standard_L8s_v2' - 'Standard_L16s_v2' - 'Standard_L32s_v2' - 'Standard_L64s_v2' - 'Standard_L80s_v2' - 'Standard_NC6' - 'Standard_NC12' - 'Standard_NC24' - 'Standard_NC24r' - 'Standard_ND6s' - 'Standard_ND12s' - 'Standard_ND24s' - 'Standard_ND24rs' - 'Standard_NV6' - 'Standard_NV12' - 'Standard_NV24' - 'Standard_H8' - 'Standard_H16' - 'Standard_H16r' - 'Standard_H16mr' - 'Standard_HB120rs_v2' - 'Standard_HC44rs' - 'Standard_DC2s' - 'Standard_DC4s' - 'Standard_DC2s_v2' - 'Standard_DC4s_v2' - 'Standard_DC8s_v2' - 'Standard_DC16s_v2' - 'Standard_DC32s_v2' - 'Standard_A1_v2' - 'Standard_A2_v2' - 'Standard_A4_v2' - 'Standard_A8_v2' - 'Standard_A2m_v2' - 'Standard_A4m_v2' - 'Standard_A8m_v2' -]) -param instanceType string = 'Standard_B2s' // Azure instance types. +@description('Specifies the azure vm size for your OpenVidu instance. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes.') +param instanceType string = 'Standard_B4s' @description('Username for the Virtual Machine.') param adminUsername string @@ -207,34 +74,14 @@ var isEmptyIp = publicIpAddressObject.newOrExistingOrNone == 'none' //Condition for the domain name var isEmptyDomain = domainName == '' -var arm64InstanceTypes = [ - 'standard_d2ps_v5' - 'standard_d4ps_v5' - 'standard_d8ps_v5' - 'standard_d16ps_v5' - 'standard_d32ps_v5' - 'standard_d48ps_v5' - 'standard_d64ps_v5' - 'standard_d2pls_v5' - 'standard_d4pls_v5' - 'standard_d8pls_v5' - 'standard_d16pls_v5' - 'standard_d32pls_v5' - 'standard_d48pls_v5' - 'standard_d64pls_v5' - 'standard_d96ps_v5' - 'standard_e2ps_v5' - 'standard_e4ps_v5' - 'standard_e8ps_v5' - 'standard_e16ps_v5' - 'standard_e20ps_v5' - 'standard_e32ps_v5' - 'standard_e48ps_v5' - 'standard_e64ps_v5' - 'standard_e96ps_v5' -] +// ARM64 instances are detected by checking for 'p' in the instance type name pattern. +// Azure ARM-based VMs use 'p' to indicate ARM processors (Ampere Altra, Microsoft Cobalt, etc.) +// Examples: Standard_D2ps_v5, Standard_E4pds_v5, Standard_B2pls_v2, etc. +// The pattern checks for 'p' followed by optional letters (like 'l', 'd', 's') before '_v' version suffix +var instanceTypeLower = toLower(instanceType) +var isArm64Instance = contains(instanceTypeLower, 'ps_v') || contains(instanceTypeLower, 'pls_v') || contains(instanceTypeLower, 'pds_v') || contains(instanceTypeLower, 'plds_v') || contains(instanceTypeLower, 'psv') || contains(instanceTypeLower, 'plsv') || contains(instanceTypeLower, 'pdsv') || contains(instanceTypeLower, 'pldsv') -var ubuntuSku = contains(arm64InstanceTypes, toLower(instanceType)) ? '24_04-lts-arm64' : '24_04-lts-gen2' +var ubuntuSku = isArm64Instance ? '24_04-lts-arm64' : '24_04-lts-gen2' //Variables for deployment var networkSettings = { diff --git a/openvidu-deployment/pro/singlenode/azure/cf-openvidu-singlenode.json b/openvidu-deployment/pro/singlenode/azure/cf-openvidu-singlenode.json index 87c0bfbeb..679e0dd8b 100644 --- a/openvidu-deployment/pro/singlenode/azure/cf-openvidu-singlenode.json +++ b/openvidu-deployment/pro/singlenode/azure/cf-openvidu-singlenode.json @@ -5,7 +5,7 @@ "_generator": { "name": "bicep", "version": "0.37.4.10188", - "templateHash": "14399294642253213945" + "templateHash": "14237993136432487485" } }, "parameters": { @@ -108,142 +108,9 @@ }, "instanceType": { "type": "string", - "defaultValue": "Standard_B2s", - "allowedValues": [ - "Standard_B1s", - "Standard_B1ms", - "Standard_B2s", - "Standard_B2ms", - "Standard_B4ms", - "Standard_B8ms", - "Standard_D2_v3", - "Standard_D4_v3", - "Standard_D8_v3", - "Standard_D16_v3", - "Standard_D32_v3", - "Standard_D48_v3", - "Standard_D64_v3", - "Standard_D2_v4", - "Standard_D4_v4", - "Standard_D8_v4", - "Standard_D16_v4", - "Standard_D32_v4", - "Standard_D48_v4", - "Standard_D64_v4", - "Standard_D96_v4", - "Standard_D2_v5", - "Standard_D4_v5", - "Standard_D8_v5", - "Standard_D16_v5", - "Standard_D32_v5", - "Standard_D48_v5", - "Standard_D64_v5", - "Standard_D96_v5", - "Standard_D2ps_v5", - "Standard_D4ps_v5", - "Standard_D8ps_v5", - "Standard_D16ps_v5", - "Standard_D32ps_v5", - "Standard_D48ps_v5", - "Standard_D64ps_v5", - "Standard_D2pls_v5", - "Standard_D4pls_v5", - "Standard_D8pls_v5", - "Standard_D16pls_v5", - "Standard_D32pls_v5", - "Standard_D48pls_v5", - "Standard_D64pls_v5", - "Standard_D96ps_v5", - "Standard_F2", - "Standard_F4", - "Standard_F8", - "Standard_F16", - "Standard_F32", - "Standard_F64", - "Standard_F72", - "Standard_F2s_v2", - "Standard_F4s_v2", - "Standard_F8s_v2", - "Standard_F16s_v2", - "Standard_F32s_v2", - "Standard_F64s_v2", - "Standard_F72s_v2", - "Standard_E2_v3", - "Standard_E4_v3", - "Standard_E8_v3", - "Standard_E16_v3", - "Standard_E32_v3", - "Standard_E48_v3", - "Standard_E64_v3", - "Standard_E96_v3", - "Standard_E2_v4", - "Standard_E4_v4", - "Standard_E8_v4", - "Standard_E16_v4", - "Standard_E32_v4", - "Standard_E48_v4", - "Standard_E64_v4", - "Standard_E2_v5", - "Standard_E4_v5", - "Standard_E8_v5", - "Standard_E16_v5", - "Standard_E32_v5", - "Standard_E48_v5", - "Standard_E64_v5", - "Standard_E96_v5", - "Standard_E2ps_v5", - "Standard_E4ps_v5", - "Standard_E8ps_v5", - "Standard_E16ps_v5", - "Standard_E20ps_v5", - "Standard_E32ps_v5", - "Standard_E48ps_v5", - "Standard_E64ps_v5", - "Standard_E96ps_v5", - "Standard_M64", - "Standard_M128", - "Standard_M208ms_v2", - "Standard_M416ms_v2", - "Standard_L4s_v2", - "Standard_L8s_v2", - "Standard_L16s_v2", - "Standard_L32s_v2", - "Standard_L64s_v2", - "Standard_L80s_v2", - "Standard_NC6", - "Standard_NC12", - "Standard_NC24", - "Standard_NC24r", - "Standard_ND6s", - "Standard_ND12s", - "Standard_ND24s", - "Standard_ND24rs", - "Standard_NV6", - "Standard_NV12", - "Standard_NV24", - "Standard_H8", - "Standard_H16", - "Standard_H16r", - "Standard_H16mr", - "Standard_HB120rs_v2", - "Standard_HC44rs", - "Standard_DC2s", - "Standard_DC4s", - "Standard_DC2s_v2", - "Standard_DC4s_v2", - "Standard_DC8s_v2", - "Standard_DC16s_v2", - "Standard_DC32s_v2", - "Standard_A1_v2", - "Standard_A2_v2", - "Standard_A4_v2", - "Standard_A8_v2", - "Standard_A2m_v2", - "Standard_A4m_v2", - "Standard_A8m_v2" - ], + "defaultValue": "Standard_B4s", "metadata": { - "description": "Specifies the azure vm size for your OpenVidu instance" + "description": "Specifies the azure vm size for your OpenVidu instance. You can use any valid Azure VM size (e.g., Standard_B4s, Standard_D4s_v5, Standard_E4ps_v5). See https://learn.microsoft.com/en-us/azure/virtual-machines/sizes for available sizes." } }, "adminUsername": { @@ -280,33 +147,9 @@ "variables": { "isEmptyIp": "[equals(parameters('publicIpAddressObject').newOrExistingOrNone, 'none')]", "isEmptyDomain": "[equals(parameters('domainName'), '')]", - "arm64InstanceTypes": [ - "standard_d2ps_v5", - "standard_d4ps_v5", - "standard_d8ps_v5", - "standard_d16ps_v5", - "standard_d32ps_v5", - "standard_d48ps_v5", - "standard_d64ps_v5", - "standard_d2pls_v5", - "standard_d4pls_v5", - "standard_d8pls_v5", - "standard_d16pls_v5", - "standard_d32pls_v5", - "standard_d48pls_v5", - "standard_d64pls_v5", - "standard_d96ps_v5", - "standard_e2ps_v5", - "standard_e4ps_v5", - "standard_e8ps_v5", - "standard_e16ps_v5", - "standard_e20ps_v5", - "standard_e32ps_v5", - "standard_e48ps_v5", - "standard_e64ps_v5", - "standard_e96ps_v5" - ], - "ubuntuSku": "[if(contains(variables('arm64InstanceTypes'), toLower(parameters('instanceType'))), '24_04-lts-arm64', '24_04-lts-gen2')]", + "instanceTypeLower": "[toLower(parameters('instanceType'))]", + "isArm64Instance": "[or(or(or(or(or(or(or(contains(variables('instanceTypeLower'), 'ps_v'), contains(variables('instanceTypeLower'), 'pls_v')), contains(variables('instanceTypeLower'), 'pds_v')), contains(variables('instanceTypeLower'), 'plds_v')), contains(variables('instanceTypeLower'), 'psv')), contains(variables('instanceTypeLower'), 'plsv')), contains(variables('instanceTypeLower'), 'pdsv')), contains(variables('instanceTypeLower'), 'pldsv'))]", + "ubuntuSku": "[if(variables('isArm64Instance'), '24_04-lts-arm64', '24_04-lts-gen2')]", "networkSettings": { "privateIPaddressNetInterface": "10.0.0.5", "vNetAddressPrefix": "10.0.0.0/16", diff --git a/openvidu-deployment/pro/singlenode/azure/createUiDefinition.json b/openvidu-deployment/pro/singlenode/azure/createUiDefinition.json index f0a2471c5..6f7d03004 100644 --- a/openvidu-deployment/pro/singlenode/azure/createUiDefinition.json +++ b/openvidu-deployment/pro/singlenode/azure/createUiDefinition.json @@ -259,8 +259,10 @@ "label": "Type of Instance", "toolTip": "Specifies the azure vm size for your OpenVidu instance", "recommendedSizes": [ - "Standard_B2s", - "Standard_B4ms" + "Standard_B4s", + "Standard_B4ms", + "Standard_D4ps_v5", + "Standard_D4pls_v5" ], "constraints": { "allowedSizes": [],