Skip to main content

Overview

The Shipyard Terraform modules are battle-tested, reusable infrastructure components designed for AWS. Each module follows best practices for security, high availability, and cost optimization.

Available Modules

VPC

Complete VPC with public/private subnets, NAT gateways, and VPC endpoints

EKS

Amazon EKS cluster with managed node groups, OIDC provider, and IAM roles

RDS

PostgreSQL/MySQL RDS instances with security groups and automated backups

Vault

HashiCorp Vault AWS resources with KMS auto-unseal and DynamoDB backend

EC2

EC2 instances with optional ALB, Tailscale, and HTTPS support

State

S3 and DynamoDB for Terraform remote state with locking

Quick Start

Using a Module

Reference modules directly from GitHub:

Module Versioning

All modules support Git ref-based versioning:
Always pin to specific version tags in production to ensure reproducible deployments.

Module Organization

Each module follows a consistent structure:

Common Patterns

Composing Modules

Modules are designed to work together:

Using Outputs

Modules expose outputs for cross-module references:

Requirements

Terraform Version

All modules require Terraform >= 1.0:

AWS Provider

Configure the AWS provider in your root module:

AWS Credentials

Set AWS credentials using one of these methods:

Module Features

Security Best Practices

  • RDS: Encrypted storage by default
  • EBS: Encrypted root volumes
  • S3: Server-side encryption (AES256)
  • DynamoDB: Encryption enabled
  • VPC: Private subnets for workloads
  • Security Groups: Least privilege rules
  • NetworkPolicies: Kubernetes network segmentation
  • VPC Flow Logs: Optional traffic logging
  • IAM: Least privilege roles and policies
  • IRSA: EKS workload identity
  • KMS: Customer-managed encryption keys
  • Secrets: Vault integration for sensitive data
  • Multi-AZ: Resources across availability zones
  • RDS: Multi-AZ deployment option
  • EKS: Node groups in multiple subnets
  • NAT: Multiple NAT gateways for redundancy

Cost Optimization

Development

  • Single NAT gateway
  • t3.micro/t3.small instances
  • Single-AZ RDS
  • gp2 storage

Production

  • Multi-AZ NAT gateways
  • Production instance sizes
  • Multi-AZ RDS
  • gp3 storage with provisioned IOPS

Complete Example

Here’s a complete infrastructure setup using multiple modules:

Getting Help

Module Documentation

Each module has detailed README with examples, inputs, and outputs

GitHub Issues

Report bugs or request features in the repository

Terraform Docs

Official Terraform documentation for advanced usage

AWS Documentation

AWS service documentation for resource details

Next Steps

1

Choose Your Modules

Review the available modules and identify which ones you need for your infrastructure
2

Set Up State Backend

Create the state backend using the State module before deploying other resources
3

Deploy Core Infrastructure

Start with VPC and EKS for the foundation
4

Add Data Layer

Deploy RDS for databases and Vault for secrets management
5

Review Examples

Check the full infrastructure deployment guide in Infrastructure Overview