Skip to main content

DigitalOcean Terraform Modules

The terraform-do-modules GitHub organization hosts Terraform modules for DigitalOcean infrastructure. All modules are Apache 2.0 licensed and written in HCL.


Networking​

ModuleGitHubDescription
terraform-digitalocean-vpc→Creates isolated Virtual Private Cloud networks for secure resource communication
terraform-digitalocean-firewall→Manages network firewall rules controlling inbound and outbound traffic for Droplets
terraform-digitalocean-load-balancer→Provisions DigitalOcean Load Balancers for distributing traffic across Droplets
terraform-digitalocean-cdn→Configures CDN endpoints to serve Spaces content from edge locations globally
terraform-digitalocean-domain→Manages DNS domains and records using DigitalOcean's nameservers
terraform-digitalocean-certificate→Provisions SSL/TLS certificates (Let's Encrypt or custom) for use with load balancers

Compute​

ModuleGitHubDescription
terraform-digitalocean-droplet→Creates and manages DigitalOcean Droplets (virtual machines) with optional volumes and backups
terraform-digitalocean-ssh-key→Registers SSH public keys in DigitalOcean for Droplet access
terraform-digitalocean-app→Deploys applications via DigitalOcean App Platform (PaaS) from source or container images

Kubernetes​

ModuleGitHubDescription
terraform-digitalocean-kubernetes→Provisions DigitalOcean Kubernetes (DOKS) clusters with auto-scaling node pools

Storage​

ModuleGitHubDescription
terraform-digitalocean-spaces→Creates S3-compatible Spaces object storage buckets with optional CDN and CORS policies
terraform-digitalocean-container-registry→Provisions a private Docker container registry with tiered storage plans

Databases​

ModuleGitHubDescription
terraform-digitalocean-database→Manages fully managed database clusters — PostgreSQL, MySQL, Redis, and MongoDB

Monitoring & Observability​

ModuleGitHubDescription
terraform-digitalocean-monitoring→Creates alert policies and uptime checks for infrastructure metrics and availability

Organization​

ModuleGitHubDescription
terraform-digitalocean-labels→Applies consistent tags and labels across DigitalOcean resources for cost attribution and management
terraform-digitalocean-components→Meta-module combining common DigitalOcean resources into a reusable stack

Applications​

ModuleGitHubDescription
terraform-do-openclaw→Production-ready Terraform configuration for deploying OpenClaw on DigitalOcean with security hardening

Quick start​

# Example: provision a DOKS cluster
module "kubernetes" {
source = "git::https://github.com/terraform-do-modules/terraform-digitalocean-kubernetes.git?ref=v1.0.0"

name = "my-cluster"
region = "nyc3"
version = "1.32"

node_pool = {
name = "worker"
size = "s-2vcpu-2gb"
node_count = 2
}
}
# Example: provision a Droplet behind a firewall
module "droplet" {
source = "git::https://github.com/terraform-do-modules/terraform-digitalocean-droplet.git?ref=v1.0.0"

name = "web-server"
region = "nyc3"
size = "s-1vcpu-1gb"
image = "ubuntu-22-04-x64"
}

module "firewall" {
source = "git::https://github.com/terraform-do-modules/terraform-digitalocean-firewall.git?ref=v1.0.0"

name = "web-fw"
droplet_ids = [module.droplet.id]

inbound_rules = [
{ protocol = "tcp", port_range = "443", source_addresses = ["0.0.0.0/0", "::/0"] },
]
}

Pin each module to a release tag. Browse tags on the module's GitHub releases page.


All modules​

Full list at github.com/terraform-do-modules.