basic/minimal_cluster_alb_ssl

A basic AWS infrastructure for the Twitch Extension Sample.

Providers

  • aws (~> 3.35.0)

Requirements

  • terraform >= 0.13
  • aws ~> 3.35.0

Inputs

bastionid (string)

ID of this bastion instance.

cluster (string)

Name of your cluster.

game_instance_profile_name (string)

The instance profile name to provide for the Game instance(s).

key_pair_private (string)

Key Pair Private PEM to use instead of creating a new one.

key_pair_public (string)

Key Pair Public Key to use instead of creating a new one.

server_instance_profile_name (string)

The instance profile name to provide for the Server, Encoding, Internal, and Public instances.

trusted_cidr (string)

CIDR to be trusted. This should at least contain the external CIDR (<ip>/32) for the local machine. Otherwise, the provision and access to Consul/Nomad will fail.

admin_password (string)

Administrative password for the game machine.

Default: 1genvid6

ami_version (string)

Version prefix of the AMIs (both wingame and server) to use. For example, 1.20.0 will match both 1.20.0 and 1.20.0.0 versions.

In order to use an AMI with a version suffix, you must specify the whole version with the suffix. For example, 1.28.0.1.mysuffix.

Default: 1.35.0

azs (list(string))

A list of availability zones in the region. subnet_ids takes precedence over azs.

custom_tags (map(string))

Map of user-defined tags to add to all cloud resources. [1] [5]

datacenter (string)

Consul/Nomad datacenter.

Default: default

domain_name (string)

Root domain name.

Default: acme.com

game_ami_owners (list(string))

The list of owners that can own the game AMI. Default to self.

New in version 1.30.0.

Default: [‘self’]

game_ami_prefix (string)

A common prefix for the game AMI. This is the prefix we use in the Save the AMI section. You can change it if you want to experiment with your own AMI. [6]

Default: default

instance_encoding_count (number)

Number of Internal workers to spawn.

Default: 1

instance_encoding_type (string)

Type of EC2 instance to use for Encoding servers.

Default: c5.2xlarge

instance_game_count (number)

Number of Game instances to spawn.

Default: 1

instance_game_type (string)

Type of EC2 instance to use for Game servers.

Default: g5.xlarge

instance_internal_count (number)

Number of Internal workers to spawn.

Default: 1

instance_internal_type (string)

Type of EC2 instance to use for Internal servers.

Default: t3.small

instance_public_count (number)

Number of Public workers to spawn.

Default: 1

instance_public_type (string)

Type of EC2 instance to use for Public servers.

Default: t3.small

instance_server_count (number)

The number of supervisor servers. Must be an odd number. It is usually 3 for production deployment.

Default: 1

instance_server_type (string)

Type of EC2 instance to use for Admin servers.

Default: t3.small

leaf_port (number)

The port the Leaf service is running on.

Default: 30001

leaf_stickiness_ttl (number)

Sets the Leaf target group stickiness timeout.

Default: 600

leaf_tg_stickiness_enabled (bool)

Sets the Leaf target group stickiness to enabled or disabled.

Default: True

region (string)

AWS deployment region.

Default: us-east-1

reusable_delegation_sets_id (string)

If you would like to use an existing reusable delegation set, add its ID here. (It should be something like NXXXXXXXXXXXXXXXXXXXX.) If left empty, Route 53 assigns a random selection of name servers to the hosted zone. [5]

server_ami_owners (list(string))

The list of owners that a valid AMI can have. Default to the Genvid public account.

New in version 1.30.0.

Default: [‘149754531711’]

server_ami_prefix (string)

A common prefix for the server AMI. You can change it if you want to experiment with your own AMI. [6]

Default: genvidtech

subdomain_name (string)

Use subdomain_name to create a zone in AWS. (For example, subdomain.acme.com.)

Note

The default value for subdomain_name is {bastionid}-{clustername} if nothing is provided.

Note

If changing or updating the subdomain on an existing cluster, you must manually remove the NS record for the old subdomain from the main domain in AWS Route53. The old NS record will not be automatically removed.

subnet_ids (list(string))

An ordered list of public subnets that can be used. If empty, subnets will be automatically selected from the available availability zones.

NOTE: Only one subnet per AZ is allowed. If your AZ has more than one subnet, this variable is mandatory. You should provide the ID of the public subnet that you want to use in each AZ. subnet_ids takes precedence over azs. [3]

toolbox_location (string)

Genvid Toolbox wheel file.

Only required if you need to update the one from the AMI. An empty value indicates to not install the Toolbox.

trusted_cidrs (list(string))

A list of CIDRs to be trusted.

trusted_security_groups (list(string))

A list of security groups to be trusted.

use_drive_encryption (bool)

If you want to have encrypted EBS, select true. If you do not want to have encypted EBS or you are upgrading the SDK version from 1.24 or below to 1.25 or higher, select false.

Warning

Your drives will be recreated if you toggle this feature with existing drives. Prior to 1.25, the drives were not encrypted. Starting with version 1.25 the encryption is enabled by default.

Default: True

vpc_id (string)

Specifies the VPC ID to use instead of creating a new one. This enables sharing VPCs between clusters.

Important

The VPC must have subnets named with namespace-stage-public-az or it will fail. A vpc_id should begin like this: vpc-…

web_health_check_path (string)

Health check path for Web service. It should match the path defined in the web.nomad.tmpl. [4]

Default: /health

web_port (number)

The port the Web service is running on.

Default: 30000

web_stickiness_ttl (number)

Sets the Web target group stickiness timeout.

Default: 600

web_tg_stickiness_enabled (bool)

Set the Web target group stickiness to enabled or disabled.

Default: True

Outputs

ami_version

Version of the AMIs (both wingame and server) to use.

azs_available

List of availability zones that were detected as available to use.

azs_selected

List of availability zones that were selected to use.

cluster

Name of your cluster.

consul_nodes

The Consul node.

datacenter

Consul/Nomad datacenter.

domain_name

The domain name that you want to create and associate with your cluster.

encoding_worker_private_ips

The private IP addresses of the Encoding instance(s).

encoding_worker_public_ips

The public IP addresses of the Encoding instance(s).

endpoint_leaf

The endpoint URL for the Leaf service.

endpoint_web

The endpoint URL for the Web service.

game_instance_profile_name

The instance profile name used by the Game instance(s).

game_private_ips

The private IP addresses of the Game instance(s).

game_public_ips

The public IP addresses of the Game instance(s).

internal_worker_private_ips

The private IP addresses of the Internal instance(s).

internal_worker_public_ips

The public IP addresses of the Internal instance(s).

leaf_port

Port that the Leaf service is listening on.

private_key_pem

The private key used to connect to the instances with SSH or RDP.

public_key

The public key for connecting to the instances used by AWS for authentication.

public_worker_private_ips

The private IP addresses of the Public instance(s).

public_worker_public_ips

The public IP addresses of the Public instance(s).

region

AWS deployment region.

server_instance_profile_name

The instance profile name used by the Server, Encoding, Internal, and Public instances.

server_private_ips

The private IP addresses of the Server instance(s).

server_public_ips

The public IP addresses of the Server instance(s).

subnet_ids

Specifies an ordered list of subnets used.

subnets_available

List of subnets that were detected as available to use.

vpc_id_selected

The VPC ID of the VPC used.

web_health_check_path

Health check endpoint path for the Web service.

web_port

Port that the Web service is listening on.

[1]In addition to custom tags, Genvid reserves the right to add its own tags on resources. If they are not documented, they are intended to be used by Genvid without any guarantee of backward compatibility.
[2]Future versions of the Cluster will use a bastion host instead for increased security.
[3]

New in version 1.24.0.

[4]

New in version 1.25.0.

[5](1, 2)

New in version 1.26.0.

[6](1, 2)

New in version 1.27.0.