https://github.com/strausmann/homelab-terraform-modules
Wiederverwendbare OpenTofu/Terraform Module für Proxmox VE HomeLab
https://github.com/strausmann/homelab-terraform-modules
Last synced: 10 days ago
JSON representation
Wiederverwendbare OpenTofu/Terraform Module für Proxmox VE HomeLab
- Host: GitHub
- URL: https://github.com/strausmann/homelab-terraform-modules
- Owner: strausmann
- License: mit
- Created: 2026-03-31T02:51:32.000Z (2 months ago)
- Default Branch: main
- Last Pushed: 2026-04-14T22:52:42.000Z (about 2 months ago)
- Last Synced: 2026-04-15T00:32:15.536Z (about 2 months ago)
- Language: HCL
- Size: 7.81 KB
- Stars: 0
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# homelab-terraform-modules
Wiederverwendbare [OpenTofu](https://opentofu.org/) / Terraform Module fuer Proxmox VE HomeLab-Infrastruktur.
## Module
### `modules/linux-vm`
Erstellt eine Linux-VM aus einem Cloud-Init-Template auf Proxmox VE.
**Features:**
- Template-Lookup ueber **Tags** (kein Hardcoden von VM-IDs)
- Cloud-Init: IP, Gateway, DNS, SSH-Keys, Benutzer
- Optionale Disk-Vergroesserung
- QEMU Guest Agent
**Template-Tags Beispiel:**
```hcl
template_tags = ["latest", "os-ubuntu", "v-2404"]
```
### `modules/docker-node`
Spezialisierung des `linux-vm` Moduls fuer Docker-Nodes.
**Zusaetzliche Features:**
- Zweite Disk fuer `/docker` (konfigurierbare Groesse, Default: 300 GB)
- Docker-spezifische Template-Tags
## Voraussetzungen
- [OpenTofu](https://opentofu.org/) >= 1.8.0 (oder Terraform >= 1.8.0)
- [bpg/proxmox Provider](https://registry.terraform.io/providers/bpg/proxmox/latest) >= 0.66.0
- Proxmox VE 8.x oder 9.x mit API-Token
- VM-Templates mit Cloud-Init (z.B. via [Packer](https://github.com/strausmann/homelab-proxmox-templates))
## Schnellstart
```bash
# Repository klonen
git clone https://github.com/strausmann/homelab-terraform-modules.git
cd homelab-terraform-modules/examples/homelab
# Variablen konfigurieren
cp terraform.tfvars.example terraform.tfvars
# terraform.tfvars editieren mit eigenen Werten
# OpenTofu verwenden
tofu init
tofu plan
tofu apply
```
## Modul-Referenz aus Git
Module koennen direkt aus diesem Repository referenziert werden:
```hcl
module "my_vm" {
source = "git::https://github.com/strausmann/homelab-terraform-modules.git//modules/linux-vm?ref=v1.0.0"
vm_name = "my-server"
proxmox_node = "PVE1"
template_tags = ["latest", "os-ubuntu", "v-2404"]
ip_address = "dhcp"
ssh_keys = ["ssh-ed25519 AAAA..."]
}
```
## Variablen
Alle Module verwenden generische Defaults. Konkrete Werte (IPs, Hostnamen, Tokens) gehoeren in:
- `terraform.tfvars` (gitignored)
- CI/CD-Variablen
- SOPS-verschluesselte Secrets
**Keine konkreten Infrastruktur-Werte in diesem Repository.**
## State-Verschluesselung (OpenTofu)
OpenTofu unterstuetzt native client-seitige State-Verschluesselung:
```hcl
terraform {
encryption {
key_provider "pbkdf2" "main" {
passphrase = var.state_passphrase
}
method "aes_gcm" "default" {
keys = key_provider.pbkdf2.main
}
state {
method = method.aes_gcm.default
}
}
}
```
## Lizenz
MIT