How tsuyakashi/iac-proxmox-lab works
This repository is Terraform infrastructure-as-code for provisioning and operating a Proxmox lab. Operators select an environment stack, which derives its Proxmox endpoint and golden-image ID from the target node, provisions VMs, and uses MinIO for remote state and Vault for credentials and SSH keys. The stacks cover general cluster nodes, specialized Immich and Minecraft VMs, poly-nodes, and a CI runner. Documented supporting capabilities include MinIO, Vault, and Tailscale service setup, plus CI-driven and manual Terraform applies. Relationships here follow README documentation; implementation wiring was not sampled.
Main entry points: runner CI runner · nodes Cluster nodes · poly-nodes Poly-nodes · immich-node Immich VM
Components 21
Environment stacks
- Cluster nodes
environments/nodes - Poly-nodes
environments/poly-nodes - Immich VM
environments/immich-node - Minecraft VM
environments/minecraft-node - CI runner
environments/runner
VM provisioning
- Proxmox VM module
modules/proxmox-vm
Lab services
- MinIO state
- Vault secrets
- Tailscale access
Operations
- CI pipeline
.github/workflows/pipeline.yml - Manual apply
scripts/vault-apply-wrapper.sh - MinIO setup
scripts/minio-lxc-init.sh - Vault setup
scripts/vault-lxc-init.sh - AppRole setup
scripts/vault-approle-init.sh - Manual login setup
scripts/vault-userpass-init.sh - Tailscale setup
scripts/tailscale-lxc-init.sh - Runner setup
scripts/register-github-runner.sh
Other components
- Operator
- GitHub Actions
- Proxmox cluster
- swarm-lab Ansible
Connections 38
- Operator → Cluster nodes: applies
- Operator → Poly-nodes: applies
- Operator → Immich VM: applies
- Operator → Minecraft VM: applies
- Operator → CI runner: applies
- GitHub Actions → CI pipeline: triggers
- CI pipeline → CI runner: applies
- CI pipeline → Vault secrets: gets credentials
- Cluster nodes → Proxmox VM module: uses
- Poly-nodes → Proxmox VM module: uses
- Immich VM → Proxmox VM module: uses
- Minecraft VM → Proxmox VM module: uses
- CI runner → Proxmox VM module: uses
- Cluster nodes → Proxmox cluster: provisions VMs
- Poly-nodes → Proxmox cluster: provisions VMs
- Immich VM → Proxmox cluster: provisions VM
- Minecraft VM → Proxmox cluster: provisions VM
- CI runner → Proxmox cluster: provisions VM
- Cluster nodes → MinIO state: stores state
- Poly-nodes → MinIO state: stores state
- Immich VM → MinIO state: stores state
- Minecraft VM → MinIO state: stores state
- CI runner → MinIO state: stores state
- Cluster nodes → Vault secrets: reads secrets
- Poly-nodes → Vault secrets: reads secrets
- Immich VM → Vault secrets: reads secrets
- Minecraft VM → Vault secrets: reads secrets
- CI runner → Vault secrets: reads secrets
- Operator → Manual apply: runs
- Manual apply → Vault secrets: authenticates
- MinIO setup → MinIO state: initializes
- Vault setup → Vault secrets: initializes
- AppRole setup → Vault secrets: configures AppRole
- Manual login setup → Vault secrets: configures login
- Tailscale setup → Tailscale access: initializes
- Runner setup → CI runner: registers
- CI runner → swarm-lab Ansible: delegates configuration
- Proxmox cluster → Tailscale access: hosts service