From c4673170b4b06c0b7dc6e0e5ca6de1a4c67e29ad Mon Sep 17 00:00:00 2001 From: cruizba Date: Fri, 27 Feb 2026 18:12:59 +0100 Subject: [PATCH] openvidu-deployment: Add missing Graviton instances, Nvidia GPU instances, and Nvidia driver AMI selection - Add missing Graviton/ARM instance families to CloudFormation conditions: r6g, r6gd, r7g, r7gd, r8g, c8gd, m8gd - Add Nvidia GPU instance detection conditions (IsNvidia/IsMasterNodeNvidia/ IsMediaNodeNvidia) for families: g4dn, g5, g5g, g6, g6e, g6f, gr6, gr6f, g7e, p4d, p4de, p5, p5e, p5en, p6-b200, p6-b300, p6e-gb200 - Use Ubuntu Deep Learning AMIs with pre-installed Nvidia drivers when a GPU instance type is selected, choosing arm64 or x86_64 variant based on the Graviton condition --- .../aws/cf-openvidu-singlenode.yaml | 22 +++- .../pro/elastic/aws/cf-openvidu-elastic.yaml | 106 +++++++++++++++--- .../pro/ha/aws/cf-openvidu-ha.yaml | 106 +++++++++++++++--- .../aws/cf-openvidu-singlenode.yaml | 53 +++++++-- 4 files changed, 247 insertions(+), 40 deletions(-) diff --git a/openvidu-deployment/community/singlenode/aws/cf-openvidu-singlenode.yaml b/openvidu-deployment/community/singlenode/aws/cf-openvidu-singlenode.yaml index ba42eed46..5ee9702d4 100644 --- a/openvidu-deployment/community/singlenode/aws/cf-openvidu-singlenode.yaml +++ b/openvidu-deployment/community/singlenode/aws/cf-openvidu-singlenode.yaml @@ -449,14 +449,26 @@ Conditions: IsGraviton: !Or - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 't4g'] - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c6gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c7g'] - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c7gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c8g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm6g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm6gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm7g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm7gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm8g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm7g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'r6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'r6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'r7g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'r7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'r8g'] Mappings: ArmImage: diff --git a/openvidu-deployment/pro/elastic/aws/cf-openvidu-elastic.yaml b/openvidu-deployment/pro/elastic/aws/cf-openvidu-elastic.yaml index 4fe137aa3..7a05b784a 100644 --- a/openvidu-deployment/pro/elastic/aws/cf-openvidu-elastic.yaml +++ b/openvidu-deployment/pro/elastic/aws/cf-openvidu-elastic.yaml @@ -853,25 +853,91 @@ Conditions: IsMasterGraviton: !Or - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 't4g'] - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c6gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c7g'] - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c7gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c8g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm6g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm6gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm7g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm7gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm8g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm7g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'r6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'r6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'r7g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'r7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'r8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g5g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p6e-gb200'] IsMediaGraviton: !Or - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 't4g'] - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c6gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c7g'] - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c7gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c8g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm6g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm6gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm7g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm7gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm8g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm7g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'r6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'r6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'r7g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'r7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'r8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g5g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p6e-gb200'] + IsMasterNodeNvidia: !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g4dn'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g5'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g5g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g6'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g6e'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g6f'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'gr6'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'gr6f'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g7e'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p4d'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p4de'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p5'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p5e'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p5en'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p6-b200'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p6-b300'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p6e-gb200'] + IsMediaNodeNvidia: !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g4dn'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g5'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g5g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g6'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g6e'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g6f'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'gr6'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'gr6f'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g7e'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p4d'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p4de'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p5'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p5e'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p5en'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p6-b200'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p6-b300'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p6e-gb200'] Mappings: ArmImage: @@ -1560,8 +1626,14 @@ Resources: Properties: ImageId: !If - IsMasterGraviton - - !FindInMap [ArmImage, !Ref OperatingSystem, ImageId] - - !FindInMap [AmdImage, !Ref OperatingSystem, ImageId] + - !If + - IsMasterNodeNvidia + - '{{resolve:ssm:/aws/service/deeplearning/ami/arm64/base-oss-nvidia-driver-gpu-ubuntu-24.04/latest/ami-id}}' + - !FindInMap [ArmImage, !Ref OperatingSystem, ImageId] + - !If + - IsMasterNodeNvidia + - '{{resolve:ssm:/aws/service/deeplearning/ami/x86_64/base-oss-nvidia-driver-gpu-ubuntu-24.04/latest/ami-id}}' + - !FindInMap [AmdImage, !Ref OperatingSystem, ImageId] LaunchTemplate: # Enable IMDSv2 by default LaunchTemplateId: !Ref IMDSv2LaunchTemplateMasterNode @@ -1813,8 +1885,14 @@ Resources: - !GetAtt OpenViduMediaNodeSG.GroupId ImageId: !If - IsMediaGraviton - - !FindInMap [ArmImage, !Ref OperatingSystem, ImageId] - - !FindInMap [AmdImage, !Ref OperatingSystem, ImageId] + - !If + - IsMediaNodeNvidia + - '{{resolve:ssm:/aws/service/deeplearning/ami/arm64/base-oss-nvidia-driver-gpu-ubuntu-24.04/latest/ami-id}}' + - !FindInMap [ArmImage, !Ref OperatingSystem, ImageId] + - !If + - IsMediaNodeNvidia + - '{{resolve:ssm:/aws/service/deeplearning/ami/x86_64/base-oss-nvidia-driver-gpu-ubuntu-24.04/latest/ami-id}}' + - !FindInMap [AmdImage, !Ref OperatingSystem, ImageId] KeyName: !Ref KeyName InstanceType: !Ref MediaNodeInstanceType UserData: diff --git a/openvidu-deployment/pro/ha/aws/cf-openvidu-ha.yaml b/openvidu-deployment/pro/ha/aws/cf-openvidu-ha.yaml index fd90e84dd..fbfc9ff20 100644 --- a/openvidu-deployment/pro/ha/aws/cf-openvidu-ha.yaml +++ b/openvidu-deployment/pro/ha/aws/cf-openvidu-ha.yaml @@ -845,25 +845,91 @@ Conditions: IsMasterGraviton: !Or - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 't4g'] - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c6gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c7g'] - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c7gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c8g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm6g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm6gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm7g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm7gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm8g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'c8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm7g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'm8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'r6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'r6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'r7g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'r7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'r8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g5g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p6e-gb200'] IsMediaGraviton: !Or - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 't4g'] - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c6gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c7g'] - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c7gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c8g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm6g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm6gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm7g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm7gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm8g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'c8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm7g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'm8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'r6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'r6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'r7g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'r7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'r8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g5g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p6e-gb200'] + IsMasterNodeNvidia: !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g4dn'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g5'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g5g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g6'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g6e'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g6f'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'gr6'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'gr6f'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'g7e'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p4d'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p4de'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p5'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p5e'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p5en'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p6-b200'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p6-b300'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MasterNodeInstanceType ]], 'p6e-gb200'] + IsMediaNodeNvidia: !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g4dn'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g5'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g5g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g6'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g6e'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g6f'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'gr6'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'gr6f'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'g7e'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p4d'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p4de'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p5'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p5e'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p5en'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p6-b200'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p6-b300'] + - !Equals [ !Select [ 0, !Split ['.', !Ref MediaNodeInstanceType ]], 'p6e-gb200'] Mappings: ArmImage: @@ -1733,8 +1799,14 @@ Resources: Name: !Ref OpenViduMasterInstanceProfile ImageId: !If - IsMasterGraviton - - !FindInMap [ArmImage, !Ref OperatingSystem, ImageId] - - !FindInMap [AmdImage, !Ref OperatingSystem, ImageId] + - !If + - IsMasterNodeNvidia + - '{{resolve:ssm:/aws/service/deeplearning/ami/arm64/base-oss-nvidia-driver-gpu-ubuntu-24.04/latest/ami-id}}' + - !FindInMap [ArmImage, !Ref OperatingSystem, ImageId] + - !If + - IsMasterNodeNvidia + - '{{resolve:ssm:/aws/service/deeplearning/ami/x86_64/base-oss-nvidia-driver-gpu-ubuntu-24.04/latest/ami-id}}' + - !FindInMap [AmdImage, !Ref OperatingSystem, ImageId] InstanceType: !Ref MasterNodeInstanceType KeyName: !Ref KeyName SecurityGroupIds: @@ -2133,8 +2205,14 @@ Resources: - !GetAtt OpenViduMediaNodeSG.GroupId ImageId: !If - IsMediaGraviton - - !FindInMap [ArmImage, !Ref OperatingSystem, ImageId] - - !FindInMap [AmdImage, !Ref OperatingSystem, ImageId] + - !If + - IsMediaNodeNvidia + - '{{resolve:ssm:/aws/service/deeplearning/ami/arm64/base-oss-nvidia-driver-gpu-ubuntu-24.04/latest/ami-id}}' + - !FindInMap [ArmImage, !Ref OperatingSystem, ImageId] + - !If + - IsMediaNodeNvidia + - '{{resolve:ssm:/aws/service/deeplearning/ami/x86_64/base-oss-nvidia-driver-gpu-ubuntu-24.04/latest/ami-id}}' + - !FindInMap [AmdImage, !Ref OperatingSystem, ImageId] KeyName: !Ref KeyName InstanceType: !Ref MediaNodeInstanceType UserData: diff --git a/openvidu-deployment/pro/singlenode/aws/cf-openvidu-singlenode.yaml b/openvidu-deployment/pro/singlenode/aws/cf-openvidu-singlenode.yaml index 04d3fbc6c..a85307f45 100644 --- a/openvidu-deployment/pro/singlenode/aws/cf-openvidu-singlenode.yaml +++ b/openvidu-deployment/pro/singlenode/aws/cf-openvidu-singlenode.yaml @@ -470,14 +470,47 @@ Conditions: IsGraviton: !Or - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 't4g'] - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c6gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c7g'] - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c7gn'] - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c8g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm6g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm6gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm7g'] - - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm7gd'] - - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm8g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'c8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm7g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'm8gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'r6g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'r6gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'r7g'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'r7gd'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'r8g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'g5g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'p6e-gb200'] + IsNvidia: !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'g4dn'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'g5'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'g5g'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'g6'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'g6e'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'g6f'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'gr6'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'gr6f'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'g7e'] + - !Or + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'p4d'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'p4de'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'p5'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'p5e'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'p5en'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'p6-b200'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'p6-b300'] + - !Equals [ !Select [ 0, !Split ['.', !Ref InstanceType ]], 'p6e-gb200'] Mappings: ArmImage: @@ -1030,8 +1063,14 @@ Resources: Properties: ImageId: !If - IsGraviton - - !FindInMap [ArmImage, !Ref OperatingSystem, ImageId] - - !FindInMap [AmdImage, !Ref OperatingSystem, ImageId] + - !If + - IsNvidia + - '{{resolve:ssm:/aws/service/deeplearning/ami/arm64/base-oss-nvidia-driver-gpu-ubuntu-24.04/latest/ami-id}}' + - !FindInMap [ArmImage, !Ref OperatingSystem, ImageId] + - !If + - IsNvidia + - '{{resolve:ssm:/aws/service/deeplearning/ami/x86_64/base-oss-nvidia-driver-gpu-ubuntu-24.04/latest/ami-id}}' + - !FindInMap [AmdImage, !Ref OperatingSystem, ImageId] LaunchTemplate: # Enable IMDSv2 by default LaunchTemplateId: !Ref IMDSv2LaunchTemplate