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
| Module | GitHub | Description |
|---|---|---|
| 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
| Module | GitHub | Description |
|---|---|---|
| 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
| Module | GitHub | Description |
|---|---|---|
| terraform-digitalocean-kubernetes | → | Provisions DigitalOcean Kubernetes (DOKS) clusters with auto-scaling node pools |
Storage
| Module | GitHub | Description |
|---|---|---|
| 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
| Module | GitHub | Description |
|---|---|---|
| terraform-digitalocean-database | → | Manages fully managed database clusters — PostgreSQL, MySQL, Redis, and MongoDB |
Monitoring & Observability
| Module | GitHub | Description |
|---|---|---|
| terraform-digitalocean-monitoring | → | Creates alert policies and uptime checks for infrastructure metrics and availability |
Organization
| Module | GitHub | Description |
|---|---|---|
| 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
| Module | GitHub | Description |
|---|---|---|
| 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.