home / terraform-modules

$ terraform registry search mikmorley

Open source Terraform modules for AWS.

Free, production-ready modules that encode the security, cost and resilience practices I use on real AWS environments. Published on the Terraform Registry with documentation and examples on GitHub.

01 // modules

Available modules.

Each module is versioned, documented and designed to drop into an existing AWS environment.

  • finops-baseline

    FinOps Baseline

    A FinOps baseline for a single AWS account in one module block: budgets, cost anomaly alerts, a tag-based dev scheduler for EC2 and RDS, weekly cost reports and opt-in budget actions, with Slack and email alerts.

    module "finops_baseline" { source = "mikmorley/finops-baseline/aws" }
  • ec2-backup

    EC2 Backup

    Automated EC2 instance backups using AWS Systems Manager and Lambda. Scheduled snapshots with configurable retention policies, so recovery points exist before you need them.

    module "ec2_backup" { source = "mikmorley/ec2-backup/aws" }
  • static-website

    Static Website

    Complete AWS static website hosting with a CloudFront CDN, S3 origin, Route 53 DNS and SSL certificates. A good fit for portfolio sites and static applications.

    module "static_website" { source = "mikmorley/static-website/aws" }

02 // approach

How the modules are built.

Efficiency and scalability

Each module encapsulates best practices learned from real-world AWS work and is designed to integrate cleanly with infrastructure you already run.

From routine tasks to complex architectures

The collection covers routine automation, security controls and availability patterns, so teams of different sizes can adopt only what they need.

Customisation over copy-paste

Every cloud environment is different. Modules expose sensible variables and defaults so they can be tailored to your requirements instead of forked. If you need a custom module built for your environment, get in touch.

03 // usage

Using a module.

Reference any module straight from the registry by its source address and pin a version:

main.tf
module "static_website" {
  source  = "mikmorley/static-website/aws"
  version = "~> 1.0"
}

Check each module's registry page for the current version and its required inputs.