No description
Find a file
2026-06-29 22:24:53 -05:00
.gitignore Initial commit 2026-01-12 18:06:06 -06:00
.terraform.lock.hcl reformat prometheus 2026-03-17 02:44:58 +00:00
cloud-config.yaml reformat prometheus 2026-03-17 02:44:58 +00:00
dns.tf derive local ip by flattening nested list 2026-06-25 12:42:20 -05:00
LICENSE Initial commit 2026-01-12 18:06:06 -06:00
main.tf reformat prometheus 2026-03-17 02:44:58 +00:00
outputs.tf derive local ip by flattening nested list 2026-06-25 12:42:20 -05:00
provider.tf chore: remove pihole in favor of unifi (#3) 2026-03-05 19:55:59 -06:00
README.md chore: remove pihole in favor of unifi (#3) 2026-03-05 19:55:59 -06:00
variables.tf add scsi hardware as input to enable single mode for disk passthrough 2026-06-29 22:24:53 -05:00
vm.tf add scsi hardware as input to enable single mode for disk passthrough 2026-06-29 22:24:53 -05:00

terraform-proxmox-vm

opinionated terraform module for provisioning vms in my homelab

module "test" {
  source = "github.com/rssnyder/terraform-proxmox-vm"
}

customization is avalible but sane defaults are provided to get me a machine asap for testing

main usage here

Requirements

No requirements.

Providers

Name Version
proxmox 0.93.0
random 3.7.2
unifi n/a

Modules

No modules.

Resources

Name Type
proxmox_virtual_environment_file.user_data_cloud_config resource
proxmox_virtual_environment_vm.this resource
random_integer.node resource
random_pet.vm_name resource
unifi_dns_record.this resource
unifi_dns_record.ttyd resource
proxmox_virtual_environment_nodes.this data source

Inputs

Name Description Type Default Required
cpu cores number 1 no
datastore_id datastore for root vm disk string "data" no
default_image_url cloud image to download for vm string "https://cloud.debian.org/images/cloud/trixie/latest/debian-13-genericcloud-amd64.qcow2" no
default_packages include default packages: (gcc git zsh) bool true no
dns_name local dns name string null no
domain domain for local dns entry string "r.ss" no
gateway gateway for static ip string "192.168.2.1" no
ip_address static ip address in CIDR notation (e.g. 192.168.1.100/24), uses DHCP if not set string null no
iso_id source iso to use for vm string null no
memory mb number 512 no
node_name name of the node to place the vm on string null no
packages additional packages to install list(string) [] no
pet prevent destroy bool false no
public_key public key for ssh access string "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABgQC0eYIj1qScmuGmXxYgu54r7s99s5chsjqFwZ/Vwamu5HLb0AmcgCdDaUkHX7YpGTcbafVTHJXVx/V8JKzu2jiztoXZy52JbIpYbkZNgo+aLwB9Sj3XZXFEjarG+P6/iqNNMPIGhLvGOH61keyYoA8cUOhcBUODZWMssK8L2mQxcTNATzC5mv67H6IDiowcFnRV3CKe2VvsVdOLjAjJzQ1xBUpVENyIFohyV+7kmFI5dODct6UdhHjYfW9YA1qlQYfV+S8vU20jcmXcHF+M6x4i1D6kDb5Ig8/5B/Ym1dHFIjcFnBezF2CIT5tsUc4vqfY0DtdVqt9rHFS/swiNZl3GaG4pMF5ooG4RIkb16oFTwBhsEHMzjzG+Pqaqt8UAHC7MXbY6fQxUts8SZUSal7ydoMw3mOKFCtOog517PkqgGUJt2UNsur0R204Vgxlqx3xTkYbW7VKdglr4MrLjglCM1bT6+cnrP+h2FiWAlXpMXmS4ymsWlrkucmyX0hmLWAk= riley@hurley" no
size_gb disk size in gb number 8 no
snippet_datastore_id datastore to use for snippet files string "zira-red" no
tags tags list(string) [] no
ttyd_password password for ttyd web terminal (enables ttyd when set) string null no
ttyd_port port for ttyd web terminal number 7681 no
usb n/a
list(object({
host = string
usb3 = bool
}))
null no
username admin username string "riley" no
vm_name name of the vm string null no

Outputs

Name Description
ipv4_address n/a