mirror of https://github.com/OpenVidu/openvidu.git
openvidu-deployment: GCP - Fixes in ARM64 changes and some cleaning.
parent
00a9a21de3
commit
118d6d370e
|
|
@ -28,8 +28,8 @@ resource "google_secret_manager_secret" "openvidu_shared_info" {
|
||||||
|
|
||||||
# GCS bucket
|
# GCS bucket
|
||||||
resource "google_storage_bucket" "bucket" {
|
resource "google_storage_bucket" "bucket" {
|
||||||
count = 1
|
count = local.isEmpty ? 1 : 0
|
||||||
name = local.isEmpty ? "${var.projectId}-${random_id.bucket_suffix.hex}" : var.bucketName
|
name = "${var.projectId}-${var.stackName}-${random_id.bucket_suffix.hex}"
|
||||||
location = var.region
|
location = var.region
|
||||||
force_destroy = true
|
force_destroy = true
|
||||||
uniform_bucket_level_access = true
|
uniform_bucket_level_access = true
|
||||||
|
|
@ -340,7 +340,7 @@ EXTERNAL_S3_SECRET_KEY=$(echo "$HMAC_OUTPUT" | jq -r '.secret')
|
||||||
EXTERNAL_S3_ENDPOINT="https://storage.googleapis.com"
|
EXTERNAL_S3_ENDPOINT="https://storage.googleapis.com"
|
||||||
EXTERNAL_S3_REGION="${var.region}"
|
EXTERNAL_S3_REGION="${var.region}"
|
||||||
EXTERNAL_S3_PATH_STYLE_ACCESS="true"
|
EXTERNAL_S3_PATH_STYLE_ACCESS="true"
|
||||||
EXTERNAL_S3_BUCKET_APP_DATA=${google_storage_bucket.bucket[0].name}
|
EXTERNAL_S3_BUCKET_APP_DATA=$(get_meta "instance/attributes/bucketName")
|
||||||
|
|
||||||
# Update egress.yaml to use hardcoded credentials instead of env variable
|
# Update egress.yaml to use hardcoded credentials instead of env variable
|
||||||
if [ -f "$${CONFIG_DIR}/egress.yaml" ]; then
|
if [ -f "$${CONFIG_DIR}/egress.yaml" ]; then
|
||||||
|
|
|
||||||
|
|
@ -32,7 +32,7 @@ resource "google_secret_manager_secret" "openvidu_shared_info" {
|
||||||
# GCS bucket
|
# GCS bucket
|
||||||
resource "google_storage_bucket" "bucket" {
|
resource "google_storage_bucket" "bucket" {
|
||||||
count = local.isEmpty ? 1 : 0
|
count = local.isEmpty ? 1 : 0
|
||||||
name = "${var.projectId}-openvidu-${var.stackName}-${random_id.bucket_suffix.hex}"
|
name = "${var.projectId}-${var.stackName}-${random_id.bucket_suffix.hex}"
|
||||||
location = var.region
|
location = var.region
|
||||||
force_destroy = true
|
force_destroy = true
|
||||||
uniform_bucket_level_access = true
|
uniform_bucket_level_access = true
|
||||||
|
|
@ -122,6 +122,12 @@ resource "google_compute_address" "public_ip_address" {
|
||||||
region = var.region
|
region = var.region
|
||||||
}
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
is_arm_instance = startswith(var.masterNodeInstanceType, "c4a-") || startswith(var.masterNodeInstanceType, "t2a-") || startswith(var.masterNodeInstanceType, "n4a-") || startswith(var.masterNodeInstanceType, "a4x-")
|
||||||
|
yq_arch = local.is_arm_instance ? "arm64" : "amd64"
|
||||||
|
|
||||||
|
ubuntu_image = local.is_arm_instance ? "ubuntu-os-cloud/ubuntu-2404-noble-arm64-v20241219" : "ubuntu-os-cloud/ubuntu-2404-noble-amd64-v20241219"
|
||||||
|
}
|
||||||
# Compute instance for OpenVidu
|
# Compute instance for OpenVidu
|
||||||
resource "google_compute_instance" "openvidu_master_node" {
|
resource "google_compute_instance" "openvidu_master_node" {
|
||||||
name = lower("${var.stackName}-master-node")
|
name = lower("${var.stackName}-master-node")
|
||||||
|
|
@ -132,7 +138,7 @@ resource "google_compute_instance" "openvidu_master_node" {
|
||||||
|
|
||||||
boot_disk {
|
boot_disk {
|
||||||
initialize_params {
|
initialize_params {
|
||||||
image = "projects/ubuntu-os-cloud/global/images/family/ubuntu-2204-lts"
|
image = local.ubuntu_image
|
||||||
size = 100
|
size = 100
|
||||||
type = "pd-standard"
|
type = "pd-standard"
|
||||||
}
|
}
|
||||||
|
|
@ -178,6 +184,12 @@ resource "google_compute_instance" "openvidu_master_node" {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
is_arm_instance_media = startswith(var.mediaNodeInstanceType, "c4a-") || startswith(var.mediaNodeInstanceType, "t2a-") || startswith(var.mediaNodeInstanceType, "n4a-") || startswith(var.mediaNodeInstanceType, "a4x-")
|
||||||
|
|
||||||
|
ubuntu_image_media = local.is_arm_instance_media ? "ubuntu-os-cloud/ubuntu-2404-noble-arm64-v20241219" : "ubuntu-os-cloud/ubuntu-2404-noble-amd64-v20241219"
|
||||||
|
}
|
||||||
|
|
||||||
# Media Node Instance Template
|
# Media Node Instance Template
|
||||||
resource "google_compute_instance_template" "media_node_template" {
|
resource "google_compute_instance_template" "media_node_template" {
|
||||||
name = lower("${var.stackName}-media-node-template")
|
name = lower("${var.stackName}-media-node-template")
|
||||||
|
|
@ -186,7 +198,7 @@ resource "google_compute_instance_template" "media_node_template" {
|
||||||
tags = [lower("${var.stackName}-media-node")]
|
tags = [lower("${var.stackName}-media-node")]
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
source_image = "projects/ubuntu-os-cloud/global/images/family/ubuntu-2204-lts"
|
source_image = local.ubuntu_image_media
|
||||||
auto_delete = true
|
auto_delete = true
|
||||||
boot = true
|
boot = true
|
||||||
disk_size_gb = 100
|
disk_size_gb = 100
|
||||||
|
|
@ -599,9 +611,7 @@ resource "google_cloud_scheduler_job" "scale_scheduler" {
|
||||||
# ------------------------- local values -------------------------
|
# ------------------------- local values -------------------------
|
||||||
|
|
||||||
locals {
|
locals {
|
||||||
isEmpty = var.bucketName == ""
|
isEmpty = var.bucketName == ""
|
||||||
is_arm_instance = startswith(var.masterNodeInstanceType, "c4a-") || startswith(var.masterNodeInstanceType, "t2a-") || startswith(var.masterNodeInstanceType, "n4a-") || startswith(var.masterNodeInstanceType, "a4x-")
|
|
||||||
yq_arch = local.is_arm_instance ? "arm64" : "amd64"
|
|
||||||
|
|
||||||
install_script_master = <<-EOF
|
install_script_master = <<-EOF
|
||||||
#!/bin/bash -x
|
#!/bin/bash -x
|
||||||
|
|
|
||||||
|
|
@ -32,16 +32,16 @@ resource "google_secret_manager_secret" "openvidu_shared_info" {
|
||||||
|
|
||||||
# GCS buckets for HA deployment
|
# GCS buckets for HA deployment
|
||||||
resource "google_storage_bucket" "appdata_bucket" {
|
resource "google_storage_bucket" "appdata_bucket" {
|
||||||
count = var.GCSAppDataBucketName == "" ? 1 : 0
|
count = local.isEmptyAppData ? 1 : 0
|
||||||
name = "${var.projectId}-openvidu-appdata-${var.stackName}-${random_id.bucket_suffix.hex}"
|
name = "${var.projectId}-${var.stackName}-appdata-${random_id.bucket_suffix.hex}"
|
||||||
location = var.region
|
location = var.region
|
||||||
force_destroy = true
|
force_destroy = true
|
||||||
uniform_bucket_level_access = true
|
uniform_bucket_level_access = true
|
||||||
}
|
}
|
||||||
|
|
||||||
resource "google_storage_bucket" "clusterdata_bucket" {
|
resource "google_storage_bucket" "clusterdata_bucket" {
|
||||||
count = var.GCSClusterDataBucketName == "" ? 1 : 0
|
count = local.isEmptyClusterData ? 1 : 0
|
||||||
name = "${var.projectId}-openvidu-clusterdata-${var.stackName}-${random_id.bucket_suffix.hex}"
|
name = "${var.projectId}-${var.stackName}-clusterdata-${random_id.bucket_suffix.hex}"
|
||||||
location = var.region
|
location = var.region
|
||||||
force_destroy = true
|
force_destroy = true
|
||||||
uniform_bucket_level_access = true
|
uniform_bucket_level_access = true
|
||||||
|
|
@ -279,6 +279,13 @@ resource "google_compute_instance_group" "master_node_group" {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
is_arm_instance = startswith(var.masterNodesInstanceType, "c4a-") || startswith(var.masterNodesInstanceType, "t2a-") || startswith(var.masterNodesInstanceType, "n4a-") || startswith(var.masterNodesInstanceType, "a4x-")
|
||||||
|
yq_arch = local.is_arm_instance ? "arm64" : "amd64"
|
||||||
|
|
||||||
|
ubuntu_image = local.is_arm_instance ? "ubuntu-os-cloud/ubuntu-2404-noble-arm64-v20241219" : "ubuntu-os-cloud/ubuntu-2404-noble-amd64-v20241219"
|
||||||
|
}
|
||||||
|
|
||||||
# Master Node 1
|
# Master Node 1
|
||||||
resource "google_compute_instance" "openvidu_master_node_1" {
|
resource "google_compute_instance" "openvidu_master_node_1" {
|
||||||
name = lower("${var.stackName}-master-node-1")
|
name = lower("${var.stackName}-master-node-1")
|
||||||
|
|
@ -288,7 +295,7 @@ resource "google_compute_instance" "openvidu_master_node_1" {
|
||||||
|
|
||||||
boot_disk {
|
boot_disk {
|
||||||
initialize_params {
|
initialize_params {
|
||||||
image = "projects/ubuntu-os-cloud/global/images/family/ubuntu-2204-lts"
|
image = local.ubuntu_image
|
||||||
size = var.masterNodesDiskSize
|
size = var.masterNodesDiskSize
|
||||||
type = "pd-standard"
|
type = "pd-standard"
|
||||||
}
|
}
|
||||||
|
|
@ -314,8 +321,8 @@ resource "google_compute_instance" "openvidu_master_node_1" {
|
||||||
initialMeetAdminPassword = var.initialMeetAdminPassword
|
initialMeetAdminPassword = var.initialMeetAdminPassword
|
||||||
initialMeetApiKey = var.initialMeetApiKey
|
initialMeetApiKey = var.initialMeetApiKey
|
||||||
additionalInstallFlags = var.additionalInstallFlags
|
additionalInstallFlags = var.additionalInstallFlags
|
||||||
bucketAppDataName = var.GCSAppDataBucketName == "" ? google_storage_bucket.appdata_bucket[0].name : var.GCSAppDataBucketName
|
bucketAppDataName = local.isEmptyAppData ? google_storage_bucket.appdata_bucket[0].name : var.GCSAppDataBucketName
|
||||||
bucketClusterDataName = var.GCSClusterDataBucketName == "" ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
bucketClusterDataName = local.isEmptyClusterData ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
||||||
}
|
}
|
||||||
|
|
||||||
service_account {
|
service_account {
|
||||||
|
|
@ -341,7 +348,7 @@ resource "google_compute_instance" "openvidu_master_node_2" {
|
||||||
|
|
||||||
boot_disk {
|
boot_disk {
|
||||||
initialize_params {
|
initialize_params {
|
||||||
image = "projects/ubuntu-os-cloud/global/images/family/ubuntu-2204-lts"
|
image = local.ubuntu_image
|
||||||
size = var.masterNodesDiskSize
|
size = var.masterNodesDiskSize
|
||||||
type = "pd-standard"
|
type = "pd-standard"
|
||||||
}
|
}
|
||||||
|
|
@ -367,8 +374,8 @@ resource "google_compute_instance" "openvidu_master_node_2" {
|
||||||
initialMeetAdminPassword = var.initialMeetAdminPassword
|
initialMeetAdminPassword = var.initialMeetAdminPassword
|
||||||
initialMeetApiKey = var.initialMeetApiKey
|
initialMeetApiKey = var.initialMeetApiKey
|
||||||
additionalInstallFlags = var.additionalInstallFlags
|
additionalInstallFlags = var.additionalInstallFlags
|
||||||
bucketAppDataName = var.GCSAppDataBucketName == "" ? google_storage_bucket.appdata_bucket[0].name : var.GCSAppDataBucketName
|
bucketAppDataName = local.isEmptyAppData ? google_storage_bucket.appdata_bucket[0].name : var.GCSAppDataBucketName
|
||||||
bucketClusterDataName = var.GCSClusterDataBucketName == "" ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
bucketClusterDataName = local.isEmptyClusterData ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
||||||
}
|
}
|
||||||
|
|
||||||
service_account {
|
service_account {
|
||||||
|
|
@ -396,7 +403,7 @@ resource "google_compute_instance" "openvidu_master_node_3" {
|
||||||
|
|
||||||
boot_disk {
|
boot_disk {
|
||||||
initialize_params {
|
initialize_params {
|
||||||
image = "projects/ubuntu-os-cloud/global/images/family/ubuntu-2204-lts"
|
image = local.ubuntu_image
|
||||||
size = var.masterNodesDiskSize
|
size = var.masterNodesDiskSize
|
||||||
type = "pd-standard"
|
type = "pd-standard"
|
||||||
}
|
}
|
||||||
|
|
@ -422,8 +429,8 @@ resource "google_compute_instance" "openvidu_master_node_3" {
|
||||||
initialMeetAdminPassword = var.initialMeetAdminPassword
|
initialMeetAdminPassword = var.initialMeetAdminPassword
|
||||||
initialMeetApiKey = var.initialMeetApiKey
|
initialMeetApiKey = var.initialMeetApiKey
|
||||||
additionalInstallFlags = var.additionalInstallFlags
|
additionalInstallFlags = var.additionalInstallFlags
|
||||||
bucketAppDataName = var.GCSAppDataBucketName == "" ? google_storage_bucket.appdata_bucket[0].name : var.GCSAppDataBucketName
|
bucketAppDataName = local.isEmptyAppData ? google_storage_bucket.appdata_bucket[0].name : var.GCSAppDataBucketName
|
||||||
bucketClusterDataName = var.GCSClusterDataBucketName == "" ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
bucketClusterDataName = local.isEmptyClusterData ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
||||||
}
|
}
|
||||||
|
|
||||||
service_account {
|
service_account {
|
||||||
|
|
@ -451,7 +458,7 @@ resource "google_compute_instance" "openvidu_master_node_4" {
|
||||||
|
|
||||||
boot_disk {
|
boot_disk {
|
||||||
initialize_params {
|
initialize_params {
|
||||||
image = "projects/ubuntu-os-cloud/global/images/family/ubuntu-2204-lts"
|
image = local.ubuntu_image
|
||||||
size = var.masterNodesDiskSize
|
size = var.masterNodesDiskSize
|
||||||
type = "pd-standard"
|
type = "pd-standard"
|
||||||
}
|
}
|
||||||
|
|
@ -477,8 +484,8 @@ resource "google_compute_instance" "openvidu_master_node_4" {
|
||||||
initialMeetAdminPassword = var.initialMeetAdminPassword
|
initialMeetAdminPassword = var.initialMeetAdminPassword
|
||||||
initialMeetApiKey = var.initialMeetApiKey
|
initialMeetApiKey = var.initialMeetApiKey
|
||||||
additionalInstallFlags = var.additionalInstallFlags
|
additionalInstallFlags = var.additionalInstallFlags
|
||||||
bucketAppDataName = var.GCSAppDataBucketName == "" ? google_storage_bucket.appdata_bucket[0].name : var.GCSAppDataBucketName
|
bucketAppDataName = local.isEmptyAppData ? google_storage_bucket.appdata_bucket[0].name : var.GCSAppDataBucketName
|
||||||
bucketClusterDataName = var.GCSClusterDataBucketName == "" ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
bucketClusterDataName = local.isEmptyClusterData ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
||||||
}
|
}
|
||||||
|
|
||||||
service_account {
|
service_account {
|
||||||
|
|
@ -771,7 +778,7 @@ EOF
|
||||||
|
|
||||||
resource "google_storage_bucket_object" "function_source" {
|
resource "google_storage_bucket_object" "function_source" {
|
||||||
name = "function-source.zip"
|
name = "function-source.zip"
|
||||||
bucket = var.GCSClusterDataBucketName == "" ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
bucket = local.isEmptyClusterData ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
||||||
source = data.archive_file.function_source.output_path
|
source = data.archive_file.function_source.output_path
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -785,7 +792,7 @@ resource "google_cloudfunctions2_function" "scalein_function" {
|
||||||
entry_point = "scalein_function"
|
entry_point = "scalein_function"
|
||||||
source {
|
source {
|
||||||
storage_source {
|
storage_source {
|
||||||
bucket = var.GCSClusterDataBucketName == "" ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
bucket = local.isEmptyClusterData ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
||||||
object = google_storage_bucket_object.function_source.name
|
object = google_storage_bucket_object.function_source.name
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -833,6 +840,11 @@ resource "google_cloud_scheduler_job" "scale_scheduler" {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
locals {
|
||||||
|
is_arm_media_instance = startswith(var.mediaNodeInstanceType, "c4a-") || startswith(var.mediaNodeInstanceType, "t2a-") || startswith(var.mediaNodeInstanceType, "n4a-") || startswith(var.mediaNodeInstanceType, "a4x-")
|
||||||
|
media_ubuntu_image = local.is_arm_media_instance ? "ubuntu-os-cloud/ubuntu-2404-noble-arm64-v20241219" : "ubuntu-os-cloud/ubuntu-2404-noble-amd64-v20241219"
|
||||||
|
}
|
||||||
|
|
||||||
# Media Node Instance Template
|
# Media Node Instance Template
|
||||||
resource "google_compute_instance_template" "media_node_template" {
|
resource "google_compute_instance_template" "media_node_template" {
|
||||||
name = lower("${var.stackName}-media-node-template")
|
name = lower("${var.stackName}-media-node-template")
|
||||||
|
|
@ -840,7 +852,7 @@ resource "google_compute_instance_template" "media_node_template" {
|
||||||
tags = [lower("${var.stackName}-media-node")]
|
tags = [lower("${var.stackName}-media-node")]
|
||||||
|
|
||||||
disk {
|
disk {
|
||||||
source_image = "projects/ubuntu-os-cloud/global/images/family/ubuntu-2204-lts"
|
source_image = local.media_ubuntu_image
|
||||||
auto_delete = true
|
auto_delete = true
|
||||||
boot = true
|
boot = true
|
||||||
disk_size_gb = 100
|
disk_size_gb = 100
|
||||||
|
|
@ -855,8 +867,8 @@ resource "google_compute_instance_template" "media_node_template" {
|
||||||
metadata = {
|
metadata = {
|
||||||
stackName = var.stackName
|
stackName = var.stackName
|
||||||
masterNodePrivateIPList = "${google_compute_instance.openvidu_master_node_1.network_interface[0].network_ip},${google_compute_instance.openvidu_master_node_2.network_interface[0].network_ip},${google_compute_instance.openvidu_master_node_3.network_interface[0].network_ip},${google_compute_instance.openvidu_master_node_4.network_interface[0].network_ip}"
|
masterNodePrivateIPList = "${google_compute_instance.openvidu_master_node_1.network_interface[0].network_ip},${google_compute_instance.openvidu_master_node_2.network_interface[0].network_ip},${google_compute_instance.openvidu_master_node_3.network_interface[0].network_ip},${google_compute_instance.openvidu_master_node_4.network_interface[0].network_ip}"
|
||||||
bucketAppDataName = var.GCSAppDataBucketName == "" ? google_storage_bucket.appdata_bucket[0].name : var.GCSAppDataBucketName
|
bucketAppDataName = local.isEmptyAppData ? google_storage_bucket.appdata_bucket[0].name : var.GCSAppDataBucketName
|
||||||
bucketClusterDataName = var.GCSClusterDataBucketName == "" ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
bucketClusterDataName = local.isEmptyClusterData ? google_storage_bucket.clusterdata_bucket[0].name : var.GCSClusterDataBucketName
|
||||||
region = var.region
|
region = var.region
|
||||||
shutdown-script = local.graceful_shutdown_script
|
shutdown-script = local.graceful_shutdown_script
|
||||||
}
|
}
|
||||||
|
|
@ -933,8 +945,6 @@ resource "google_compute_region_autoscaler" "media_node_autoscaler" {
|
||||||
locals {
|
locals {
|
||||||
isEmptyAppData = var.GCSAppDataBucketName == ""
|
isEmptyAppData = var.GCSAppDataBucketName == ""
|
||||||
isEmptyClusterData = var.GCSClusterDataBucketName == ""
|
isEmptyClusterData = var.GCSClusterDataBucketName == ""
|
||||||
is_arm_instance = startswith(var.masterNodesInstanceType, "c4a-") || startswith(var.masterNodesInstanceType, "t2a-") || startswith(var.masterNodesInstanceType, "n4a-") || startswith(var.masterNodesInstanceType, "a4x-")
|
|
||||||
yq_arch = local.is_arm_instance ? "arm64" : "amd64"
|
|
||||||
|
|
||||||
install_script_master = <<-EOF
|
install_script_master = <<-EOF
|
||||||
#!/bin/bash -x
|
#!/bin/bash -x
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue