Skip to main content

Module: redshift-cluster

This is terraform-example-module project provides all the scaffolding for a typical well-built Cloud Posse module. It's a template repository you can use when creating new repositories.

Usage

For a complete example, see examples/complete.

For automated tests of the complete example using bats and Terratest (which tests and deploys the example on AWS), see test.

module "vpc" {
source = "cloudposse/vpc/aws"
# Cloud Posse recommends pinning every module to a specific version
# version = "x.x.x"

ipv4_primary_cidr_block = "172.19.0.0/16"

context = module.this.context
}

module "subnet" {
source = "cloudposse/dynamic-subnets/aws"
# Cloud Posse recommends pinning every module to a specific version
# version = "x.x.x"

availability_zones = var.availability_zones
vpc_id = module.vpc.vpc_id
igw_id = [module.vpc.igw_id]
ipv4_cidr_block = module.vpc.vpc_cidr_block
nat_gateway_enabled = false
nat_instance_enabled = false

context = module.this.context
}

module "security_group" {
source = "cloudposse/security-group/aws"
# Cloud Posse recommends pinning every module to a specific version
# version = "x.x.x"

vpc_id = module.vpc.vpc_id

rules = [
{
type = "ingress"
from_port = var.port
to_port = var.port
protocol = "all"
cidr_blocks = ["0.0.0.0/0"]
},
{
type = "egress"
from_port = 0
to_port = 0
protocol = "all"
cidr_blocks = ["0.0.0.0/0"]
}
]

context = module.this.context
}

module "redshift_cluster" {
source = "cloudposse/redshift-cluster/aws"
# Cloud Posse recommends pinning every module to a specific version
# version = "x.x.x"

subnet_ids = module.subnet.private_subnet_ids
vpc_security_groups = [module.vpc.vpc_default_security_group_id, module.security_group.id]

admin_user = var.admin_user
admin_password = var.admin_password
database_name = var.database_name
node_type = var.node_type
cluster_type = var.cluster_type
engine_version = var.engine_version
publicly_accessible = var.publicly_accessible
allow_version_upgrade = var.allow_version_upgrade

context = module.this.context
}

Examples

Here is an example of using this module: