Changed structure to be more consistant with the terraform standard and removed some resources to try Refactor terraform main file to be more alike with aws and azure scripts and fixed some things that were wrong in the install script. Changed variables.tf and output.tf as needed Refactor firewall rules and streamline user data scripts for OpenVidu deployment on GCP added Elastic deployment for GCP and changed default values of instance type in Single Node and Single Node PRO openvidu-deployment_ gcp - changed output.tf in all deployments to output the link to secret manager; changed the name of the instance resource of openvidu single node pro; fixed some things that were broken in elastic terraform file and adjusted times for the lambda and the cronjob
131 lines
6.1 KiB
HCL
131 lines
6.1 KiB
HCL
# ------------------------- variables -------------------------
|
|
|
|
# Variables used by the configuration
|
|
variable "projectId" {
|
|
description = "GCP project id where the resourw es will be created."
|
|
type = string
|
|
}
|
|
|
|
variable "region" {
|
|
description = "GCP region where resources will be created."
|
|
type = string
|
|
default = "europe-west1"
|
|
}
|
|
|
|
variable "zone" {
|
|
description = "GCP zone that some resources will use."
|
|
type = string
|
|
default = "europe-west1-b"
|
|
}
|
|
|
|
variable "stackName" {
|
|
description = "Stack name for OpenVidu deployment."
|
|
type = string
|
|
}
|
|
|
|
variable "certificateType" {
|
|
description = "[selfsigned] Not recommended for production use. Just for testing purposes or development environments. You don't need a FQDN to use this option. [owncert] Valid for production environments. Use your own certificate. You need a FQDN to use this option. [letsencrypt] Valid for production environments. Can be used with or without a FQDN (if no FQDN is provided, a random sslip.io domain will be used)."
|
|
type = string
|
|
default = "letsencrypt"
|
|
validation {
|
|
condition = contains(["selfsigned", "owncert", "letsencrypt"], var.certificateType)
|
|
error_message = "certificateType must be one of: selfsigned, owncert, letsencrypt"
|
|
}
|
|
}
|
|
|
|
variable "publicIpAddress" {
|
|
description = "Previously created Public IP address for the OpenVidu Deployment. Blank will generate a public IP."
|
|
type = string
|
|
default = ""
|
|
validation {
|
|
condition = can(regex("^$|^([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.([01]?\\d{1,2}|2[0-4]\\d|25[0-5])\\.([01]?\\d{1,2}|2[0-4]\\d|25[0-5])$", var.publicIpAddress))
|
|
error_message = "The Public Elastic IP does not have a valid IPv4 format"
|
|
}
|
|
}
|
|
|
|
variable "domainName" {
|
|
description = "Domain name for the OpenVidu Deployment."
|
|
type = string
|
|
default = ""
|
|
validation {
|
|
condition = can(regex("^$|^(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\\.)+[a-z0-9][a-z0-9-]{0,61}[a-z0-9]$", var.domainName))
|
|
error_message = "The domain name does not have a valid domain name format"
|
|
}
|
|
}
|
|
|
|
variable "ownPublicCertificate" {
|
|
description = "If certificate type is 'owncert', this parameter will be used to specify the public certificate"
|
|
type = string
|
|
default = ""
|
|
}
|
|
|
|
variable "ownPrivateCertificate" {
|
|
description = "If certificate type is 'owncert', this parameter will be used to specify the private certificate"
|
|
type = string
|
|
default = ""
|
|
}
|
|
|
|
variable "initialMeetAdminPassword" {
|
|
description = "Initial password for the 'admin' user in OpenVidu Meet. If not provided, a random password will be generated."
|
|
type = string
|
|
default = ""
|
|
validation {
|
|
condition = can(regex("^[A-Za-z0-9_-]*$", var.initialMeetAdminPassword))
|
|
error_message = "Must contain only alphanumeric characters (A-Z, a-z, 0-9). Leave empty to generate a random password."
|
|
}
|
|
}
|
|
|
|
variable "initialMeetApiKey" {
|
|
description = "Initial API key for OpenVidu Meet. If not provided, no API key will be set and the user can set it later from Meet Console."
|
|
type = string
|
|
default = ""
|
|
validation {
|
|
condition = can(regex("^[A-Za-z0-9_-]*$", var.initialMeetApiKey))
|
|
error_message = "Must contain only alphanumeric characters (A-Z, a-z, 0-9). Leave empty to not set an initial API key."
|
|
}
|
|
}
|
|
|
|
variable "instanceType" {
|
|
description = "Specifies the GCE machine type for your OpenVidu instance"
|
|
type = string
|
|
default = "e2-standard-2"
|
|
validation {
|
|
condition = can(regex("^(e2-(micro|small|medium|standard-[2-9]|standard-1[0-6]|highmem-[2-9]|highmem-1[0-6]|highcpu-[2-9]|highcpu-1[0-6])|n1-(standard-[1-9]|standard-[1-9][0-9]|highmem-[2-9]|highmem-[1-9][0-9]|highcpu-[1-9]|highcpu-[1-9][0-9])|n2-(standard-[2-9]|standard-[1-9][0-9]|standard-1[0-2][0-8]|highmem-[2-9]|highmem-[1-9][0-9]|highmem-1[0-2][0-8]|highcpu-[1-9][0-9]|highcpu-1[0-2][0-8])|n2d-(standard-[2-9]|standard-[1-9][0-9]|standard-2[0-2][0-4]|highmem-[2-9]|highmem-[1-9][0-9]|highmem-9[0-6]|highcpu-[1-9][0-9]|highcpu-2[0-2][0-4])|c2-(standard-[4-9]|standard-[1-5][0-9]|standard-60)|c2d-(standard-[2-9]|standard-[1-9][0-9]|standard-1[0-1][0-2]|highmem-[2-9]|highmem-[1-9][0-9]|highmem-1[0-1][0-2]|highcpu-[1-9][0-9]|highcpu-1[0-1][0-2])|m1-(ultramem-[4-9][0-9]|ultramem-160)|m2-(ultramem-208|ultramem-416|megamem-416)|m3-(ultramem-32|ultramem-64|ultramem-128|megamem-64|megamem-128)|a2-(standard-[1-9]|standard-[1-9][0-9]|standard-96|highmem-1g|ultramem-1g|megamem-1g)|a3-(standard-[1-9]|standard-[1-9][0-9]|standard-80|highmem-1g|megamem-1g)|g2-(standard-[4-9]|standard-[1-9][0-9]|standard-96)|t2d-(standard-[1-9]|standard-[1-9][0-9]|standard-60)|t2a-(standard-[1-9]|standard-[1-9][0-9]|standard-48)|h3-(standard-88)|f1-(micro)|t4g-(micro|small|medium|standard-[1-9]|standard-[1-9][0-9]))$", var.instanceType))
|
|
error_message = "The instance type is not valid"
|
|
}
|
|
}
|
|
|
|
variable "bucketName" {
|
|
description = "Name of the S3 bucket to store data and recordings. If empty, a bucket will be created"
|
|
type = string
|
|
default = ""
|
|
}
|
|
|
|
variable "additionalInstallFlags" {
|
|
description = "Additional optional flags to pass to the OpenVidu installer (comma-separated, e.g.,'--flag1=value, --flag2')."
|
|
type = string
|
|
default = ""
|
|
validation {
|
|
condition = can(regex("^[A-Za-z0-9, =_.\\-]*$", var.additionalInstallFlags))
|
|
error_message = "Must be a comma-separated list of flags (for example, --flag=value, --bool-flag)."
|
|
}
|
|
}
|
|
|
|
variable "turnDomainName" {
|
|
description = "(Optional) Domain name for the TURN server with TLS. Only needed if your users are behind restrictive firewalls"
|
|
type = string
|
|
default = ""
|
|
}
|
|
|
|
variable "turnOwnPublicCertificate" {
|
|
description = "(Optional) This setting is applicable if the certificate type is set to 'owncert' and the TurnDomainName is specified."
|
|
type = string
|
|
default = ""
|
|
}
|
|
|
|
variable "turnOwnPrivateCertificate" {
|
|
description = "(Optional) This setting is applicable if the certificate type is set to 'owncert' and the TurnDomainName is specified."
|
|
type = string
|
|
default = ""
|
|
}
|