Skip to content

Terraform Module Docs

Unreal Horde

Requirements

Name Version
terraform >= 1.0
aws 5.69.0
random 3.6.3

Providers

Name Version
aws 5.69.0
random 3.6.3

Modules

No modules.

Resources

Name Type
aws_autoscaling_group.unreal_horde_agent_asg resource
aws_cloudwatch_log_group.unreal_horde_log_group resource
aws_docdb_cluster.horde resource
aws_docdb_cluster_instance.horde resource
aws_docdb_cluster_parameter_group.horde resource
aws_docdb_subnet_group.horde resource
aws_ecs_cluster.unreal_horde_cluster resource
aws_ecs_service.unreal_horde resource
aws_ecs_task_definition.unreal_horde_task_definition resource
aws_elasticache_cluster.horde resource
aws_elasticache_subnet_group.horde resource
aws_iam_instance_profile.unreal_horde_agent_instance_profile resource
aws_iam_policy.horde_agents_s3_policy resource
aws_iam_policy.unreal_horde_default_policy resource
aws_iam_policy.unreal_horde_secrets_manager_policy resource
aws_iam_role.unreal_horde_agent_default_role resource
aws_iam_role.unreal_horde_default_role resource
aws_iam_role.unreal_horde_task_execution_role resource
aws_launch_template.unreal_horde_agent_template resource
aws_lb.unreal_horde_external_alb resource
aws_lb.unreal_horde_internal_alb resource
aws_lb_listener.unreal_horde_external_alb_https_listener resource
aws_lb_listener.unreal_horde_internal_alb_https_listener resource
aws_lb_listener_rule.unreal_horde_external_alb_grpc_rule resource
aws_lb_listener_rule.unreal_horde_internal_alb_grpc_rule resource
aws_lb_target_group.unreal_horde_api_target_group_external resource
aws_lb_target_group.unreal_horde_api_target_group_internal resource
aws_lb_target_group.unreal_horde_grpc_target_group_external resource
aws_lb_target_group.unreal_horde_grpc_target_group_internal resource
aws_s3_bucket.ansible_playbooks resource
aws_s3_bucket.unreal_horde_alb_access_logs_bucket resource
aws_s3_bucket_lifecycle_configuration.access_logs_bucket_lifecycle_configuration resource
aws_s3_bucket_policy.alb_access_logs_bucket_policy resource
aws_s3_bucket_public_access_block.access_logs_bucket_public_block resource
aws_s3_bucket_public_access_block.ansible_playbooks_bucket_public_block resource
aws_s3_bucket_versioning.ansible_playbooks_versioning resource
aws_s3_object.unreal_horde_agent_playbook resource
aws_s3_object.unreal_horde_agent_service resource
aws_security_group.unreal_horde_agent_sg resource
aws_security_group.unreal_horde_docdb_sg resource
aws_security_group.unreal_horde_elasticache_sg resource
aws_security_group.unreal_horde_external_alb_sg resource
aws_security_group.unreal_horde_internal_alb_sg resource
aws_security_group.unreal_horde_sg resource
aws_ssm_association.configure_unreal_horde_agent resource
aws_ssm_document.ansible_run_document resource
aws_vpc_security_group_egress_rule.unreal_horde_agents_outbound_ipv4 resource
aws_vpc_security_group_egress_rule.unreal_horde_agents_outbound_ipv6 resource
aws_vpc_security_group_egress_rule.unreal_horde_external_alb_outbound_service_api resource
aws_vpc_security_group_egress_rule.unreal_horde_external_alb_outbound_service_grpc resource
aws_vpc_security_group_egress_rule.unreal_horde_internal_alb_outbound_service_api resource
aws_vpc_security_group_egress_rule.unreal_horde_internal_alb_outbound_service_grpc resource
aws_vpc_security_group_egress_rule.unreal_horde_outbound_ipv4 resource
aws_vpc_security_group_egress_rule.unreal_horde_outbound_ipv6 resource
aws_vpc_security_group_ingress_rule.unreal_horde_docdb_ingress resource
aws_vpc_security_group_ingress_rule.unreal_horde_elasticache_ingress resource
aws_vpc_security_group_ingress_rule.unreal_horde_inbound_external_alb_api resource
aws_vpc_security_group_ingress_rule.unreal_horde_inbound_external_alb_grpc resource
aws_vpc_security_group_ingress_rule.unreal_horde_inbound_internal_alb_api resource
aws_vpc_security_group_ingress_rule.unreal_horde_inbound_internal_alb_grpc resource
aws_vpc_security_group_ingress_rule.unreal_horde_service_inbound_agents resource
random_string.unreal_horde resource
random_string.unreal_horde_alb_access_logs_bucket_suffix resource
random_string.unreal_horde_ansible_playbooks_bucket_suffix resource
aws_ecs_cluster.unreal_horde_cluster data source
aws_elb_service_account.main data source
aws_iam_policy_document.access_logs_bucket_alb_write data source
aws_iam_policy_document.ec2_trust_relationship data source
aws_iam_policy_document.ecs_tasks_trust_relationship data source
aws_iam_policy_document.horde_agents_s3_policy data source
aws_iam_policy_document.unreal_horde_default_policy data source
aws_iam_policy_document.unreal_horde_secrets_manager_policy data source
aws_region.current data source

Inputs

Name Description Type Default Required
admin_claim_type The claim type for administrators. string null no
admin_claim_value The claim value for administrators. string null no
agents Configures autoscaling groups to be used as build agents by Unreal Engine Horde.
map(object({
ami = string
instance_type = string
block_device_mappings = list(
object({
device_name = string
ebs = object({
volume_size = number
})
})
)
min_size = optional(number, 0)
max_size = optional(number, 1)
}))
{} no
auth_method The authentication method for the Horde server. string "Anonymous" no
certificate_arn The TLS certificate ARN for the Unreal Horde load balancer. string n/a yes
cluster_name The name of the cluster to deploy the Unreal Horde into. Defaults to null and a cluster will be created. string null no
container_api_port The container port for the Unreal Horde web server. number 5000 no
container_cpu The CPU allotment for the Unreal Horde container. number 1024 no
container_grpc_port The container port for the Unreal Horde GRPC channel. number 5002 no
container_memory The memory allotment for the Unreal Horde container. number 4096 no
container_name The name of the Unreal Horde container. string "unreal-horde-container" no
create_external_alb Set this flag to true to create an external load balancer for Unreal Horde. bool true no
create_internal_alb Set this flag to true to create an internal load balancer for Unreal Horde. bool true no
create_unreal_horde_default_policy Optional creation of Unreal Horde default IAM Policy. Default is set to true. bool true no
create_unreal_horde_default_role Optional creation of Unreal Horde default IAM Role. Default is set to true. bool true no
custom_unreal_horde_role ARN of the custom IAM Role you wish to use with Unreal Horde. string null no
database_connection_string The database connection string that Horde should use. string null no
debug Set this flag to enable ECS execute permissions on the Unreal Horde container and force new service deployments on Terraform apply. bool false no
desired_container_count The desired number of containers running Unreal Horde. number 1 no
docdb_backup_retention_period Number of days to retain backups for DocumentDB cluster. number 7 no
docdb_instance_class The instance class for the Horde DocumentDB cluster. string "db.t4g.medium" no
docdb_instance_count The number of instances to provision for the Horde DocumentDB cluster. number 2 no
docdb_master_password Master password created for DocumentDB cluster. string "mustbeeightchars" no
docdb_master_username Master username created for DocumentDB cluster. string "horde" no
docdb_preferred_backup_window The preferred window for DocumentDB backups to be created. string "07:00-09:00" no
docdb_skip_final_snapshot Flag for whether a final snapshot should be created when the cluster is destroyed. bool true no
docdb_storage_encrypted Configure DocumentDB storage at rest. bool true no
elasticache_node_count Number of cache nodes to provision in the Elasticache cluster. number 1 no
elasticache_node_type The type of nodes provisioned in the Elasticache cluster. string "cache.t4g.micro" no
elasticache_snapshot_retention_limit The number of Elasticache snapshots to retain. number 5 no
enable_new_agents_by_default Set this flag to automatically enable new agents that enroll with the Horde Server. bool false no
enable_unreal_horde_alb_access_logs Enables access logging for the Unreal Horde ALB. Defaults to true. bool true no
enable_unreal_horde_alb_deletion_protection Enables deletion protection for the Unreal Horde ALB. Defaults to true. bool false no
environment The current environment (e.g. Development, Staging, Production, etc.). This will tag ressources and set ASPNETCORE_ENVIRONMENT variable. string "Development" no
existing_security_groups A list of existing security group IDs to attach to the Unreal Horde load balancer. list(string) [] no
fully_qualified_domain_name The fully qualified domain name where your Unreal Engine Horde server will be available. This agents will use this to enroll. string n/a yes
github_credentials_secret_arn A secret containing the Github username and password with permissions to the EpicGames organization. string n/a yes
name The name attached to Unreal Engine Horde module resources. string "unreal-horde" no
oidc_audience The audience used for validating externally issued tokens. string null no
oidc_authority The authority for the OIDC authentication provider used. string null no
oidc_client_id The client ID used for authenticating with the OIDC provider. string null no
oidc_client_secret The client secret used for authenticating with the OIDC provider. string null no
oidc_signin_redirect The sign-in redirect URL for the OIDC provider. string null no
project_prefix The project prefix for this workload. This is appeneded to the beginning of most resource names. string "cgd" no
redis_connection_config The redis connection configuration that Horde should use. string null no
tags Tags to apply to resources. map(any)
{
"iac-management": "CGD-Toolkit",
"iac-module": "unreal-horde",
"iac-provider": "Terraform"
}
no
unreal_horde_alb_access_logs_bucket ID of the S3 bucket for Unreal Horde ALB access log storage. If access logging is enabled and this is null the module creates a bucket. string null no
unreal_horde_alb_access_logs_prefix Log prefix for Unreal Horde ALB access logs. If null the project prefix and module name are used. string null no
unreal_horde_cloudwatch_log_retention_in_days The log retention in days of the cloudwatch log group for Unreal Horde. string 365 no
unreal_horde_external_alb_subnets A list of subnets to deploy the Unreal Horde load balancer into. Public subnets are recommended. list(string) [] no
unreal_horde_internal_alb_subnets A list of subnets to deploy the Unreal Horde internal load balancer into. Private subnets are recommended. list(string) [] no
unreal_horde_service_subnets A list of subnets to deploy the Unreal Horde service into. Private subnets are recommended. list(string) n/a yes
vpc_id The ID of the existing VPC you would like to deploy Unreal Horde into. string n/a yes

Outputs

Name Description
agent_security_group_id n/a
external_alb_dns_name n/a
external_alb_sg_id n/a
external_alb_zone_id n/a
internal_alb_dns_name n/a
internal_alb_sg_id n/a
internal_alb_zone_id n/a
service_security_group_id n/a