Skip to content

ProxmoxTerraformProvider

Dennis Lee edited this page May 27, 2026 · 1 revision

title: bpg/proxmox Terraform provider type: tool created: 2026-05-26 last_updated: 2026-05-26 related: ["radar/techniques/HomelabTerraformCloudInit", "radar/techniques/TerraformTesting", "radar/techniques/HomelabKubernetesPatterns"] sources: ["https://registry.terraform.io/providers/bpg/proxmox/latest/docs"] radar_quadrant: Tools radar_ring: Assess radar_position: inner

bpg/proxmox Terraform provider

Community Terraform provider for managing Proxmox VE infrastructure as code — VMs, LXC containers, storage, network bridges, and user accounts defined in HCL and applied via terraform apply.

What It Provides

Proxmox VE has no official Terraform provider. The bpg/proxmox provider fills this gap as the community standard (the older telmate/proxmox provider is largely abandoned). It covers the full Proxmox resource lifecycle:

  • Virtual machines — create, clone, configure, and destroy KVM VMs with full resource specification (CPU, memory, disks, network, PCIe passthrough)
  • LXC containers — manage lightweight containers alongside VMs in the same Terraform state
  • Cloud-init integration — inject cloud-init user-data and meta-data files directly into VM provisioning via the initialization block
  • Storage and network — define storage pools, NFS mounts, and network bridges as managed resources
  • Snippets and file uploads — upload cloud-init configs and ISO images to Proxmox storage via proxmox_virtual_environment_file

Integration with Cloud-Init

The provider's initialization block is the concrete enabler for the Homelab Terraform and Cloud-Init Provisioning technique (Assess/inner):

resource "proxmox_virtual_environment_vm" "node" {
  name      = "k3s-node-1"
  node_name = "pve"
  clone     { vm_id = var.template_vm_id }
  cpu       { cores = 2 }
  memory    { dedicated = 2048 }
  initialization {
    user_data_file_id = proxmox_virtual_environment_file.cloud_init.id
  }
}

Terraform creates the VM from a template; cloud-init configures hostname, SSH keys, packages, and services on first boot. Destroying and re-creating the VM from Terraform state produces an identical result — the key property for reproducible homelab infrastructure.

Radar Assessment

bpg/proxmox sits in the Assess ring of the Tools quadrant, at inner position. First studied via Terraform Registry (2024-09-01). This is the only actively maintained community Terraform provider for Proxmox VE — the de facto standard for homelab IaC on the most popular self-hosted hypervisor. Inner position reflects direct applicability to any Proxmox-based homelab alongside the Homelab Terraform + Cloud-Init technique already on the radar. Remaining gate before Trial is a completed Terraform apply creating at least one VM from a template with cloud-init configuration verified, and a successful destroy-and-recreate cycle confirming reproducibility.

Clone this wiki locally