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: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:- Environment Variables
- AWS CLI Profile
- IAM Role (Recommended)
Module Features
Security Best Practices
Encryption at Rest
Encryption at Rest
- RDS: Encrypted storage by default
- EBS: Encrypted root volumes
- S3: Server-side encryption (AES256)
- DynamoDB: Encryption enabled
Network Security
Network Security
- VPC: Private subnets for workloads
- Security Groups: Least privilege rules
- NetworkPolicies: Kubernetes network segmentation
- VPC Flow Logs: Optional traffic logging
Access Control
Access Control
- IAM: Least privilege roles and policies
- IRSA: EKS workload identity
- KMS: Customer-managed encryption keys
- Secrets: Vault integration for sensitive data
High Availability
High Availability
- 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
5
Review Examples
Check the full infrastructure deployment guide in Infrastructure Overview