“Infrastructure as Code” is a great thing – you can configure just about anything! In this video, we’ll explore how to use one such tool, Terraform, to provision virtual machines. We’ll explore how to set it up, create an API key, and then watch a VM come to life.
main.tf
terraform {
required_providers {
proxmox = {
source = "telmate/proxmox"
}
}
}
provider "proxmox" {
pm_api_url = "https://url-to-proxmox-server:8006/api2/json"
pm_api_token_id = "your-token-id"
pm_api_token_secret = "your-secret"
pm_tls_insecure = true
}
resource "proxmox_vm_qemu" "vm-instance" {
name = "vm-instance"
target_node = "pve-1"
clone = "your-template-name"
full_clone = true
cores = 2
memory = 2048
disk {
size = "32G"
type = "scsi"
storage = "your-storage-volume"
discard = "on"
}
network {
model = "virtio"
bridge = "vmbr1"
firewall = false
link_down = false
}
}
Required Role Permissions
Make sure your role has these permissions:
Datastore.AllocateSpace
Datastore.Audit
Pool.Allocate
SDN.Use
Sys.Audit
Sys.Console
Sys.Modify
Sys.PowerMgmt
VM.Allocate
VM.Audit
VM.Clone
VM.Config.CDROM
VM.Config.CPU
VM.Config.Cloudinit
VM.Config.Disk
VM.Config.HWType
VM.Config.Memory
VM.Config.Network
VM.Config.Options
VM.Migrate
VM.Monitor
VM.PowerMgmt