Reusable Terraform modules for Hetzner Cloud, AWS, and KVM node provisioning with cloud-init support. These modules provide standardized, tested infrastructure building blocks used by labrats.work.hetzner.cluster and other organization infrastructure.
Reference a module directly from GitHub using the double-slash (//) syntax to specify the subdirectory:
module "node" {
source = "github.com/labrats-work/modules-terraform//modules/hetzner/node"
node_config = {
name = "my-node"
location = "fsn1"
image = "ubuntu-24.04"
server_type = "cx22"
nodetype = "worker"
ssh_user = "root"
ssh_port = "22"
}
}Replace modules/hetzner/node with the path to any module listed below.
modules-terraform/
├── modules/
│ ├── aws/
│ │ ├── network/ # AWS VPC infrastructure
│ │ └── node/ # EC2 instance provisioning
│ ├── cloud-init/ # Cloud-init configuration templates
│ ├── hetzner/
│ │ ├── network/ # Hetzner Cloud network
│ │ ├── node/ # Hetzner Cloud server
│ │ └── node_group/ # Hetzner group node provisioning
│ └── kvm/
│ └── node/ # KVM/libvirt VM provisioning
├── tests/ # Per-module integration tests
│ ├── aws/
│ ├── cloud-init/
│ ├── hetzner/
│ └── kvm/
├── .github/workflows/ # CI test and release workflows
├── CLAUDE.md
├── LICENSE
└── README.md
| Name | Description | Status |
|---|---|---|
| hetzner | tests hetzner modules | |
| aws | tests aws modules | |
| kvm | tests kvm modules | |
| cloud-init | tests cloud init |