/terraform

Shared terraform modules for use across projects

Primary LanguageHCLOtherNOASSERTION

DBL Terraform Modules

We create modules here for re-use between projects.

Modules

  • certificate - Requests a certificate from the Amazon Certificate Manager.
  • cloudwatch - Creates basic cloudwatch dashboard and cloudwatch alarm for monitoring and observability
  • cognito - Create user pools for use with authentication.
  • ecr - A repository for storing built docker images.
  • ecs - Compute cluster for running docker containers.
  • elasticache - elasticache cluster based on Redis.
  • global-accelerator - Global Accelerator for load balancing across multiple regions.
  • iam - Preconfigured IAM groups and roles for sane access policies.
  • kms-key - Encryption keys for securing various AWS resources.
  • kms-key-replica - KMS Key replica for cross-regional access to encryption keys.
  • nat - A reopsitory for setting up a network address translation (NAT).
  • rds - Used for creating and configuring databases and their networking.
  • s3-private - Private, encrypted S3 bucket with versioning.
  • s3-public - S3 bucket to host public files such as a frontend app, or anything you want to servce via a CDN.
  • slack - Creates chatbot and SNS topic required to setup Slack message
  • snowflake-cloud - Manage a Snowflake Cloud account
  • secrets - Used for creating a new secret.
  • stack - Creates all resources required to launch the entire application
  • vpc - Creates a VPC in AWS account. Also generates a group fo public and private submodules.
  • vpc-peering - Creates a VPC Peering Resource.
  • vpn - Launches an isolated Outline VPN inside a new VPC.
  • xray - Used for creating general xray group and sampling

Conventions

  • Use project + environment combination for a workspace/module context
  • Use main for core resource identifiers. e.g. resource "aws_rds_instance" "main" {}

Usage

Refer to specific module README for variables and recommended usage.

module "awesome-module" {
  source = "github.com/dbl-works/terraform//awesome-module?ref=v2021.07.05"

  # Required
  environment = "staging"
  project     = "someproject"

  # Optional
  some_variable = "some_value"
}