* chore: reformat code * chore: add commitlint config * reformat README.md * add linter config * lint & reformat docs * go linter: only new issues * fix some linting errors * more reformatting * disable linter warning for some duplicated code
19 KiB
layout | title | permalink | nav_order | parent | subcategory |
---|---|---|---|---|---|
page | proxmox_virtual_environment_vm | /resources/virtual_environment_vm | 13 | Resources | Virtual Environment |
Resource: proxmox_virtual_environment_vm
Manages a virtual machine.
Example Usage
resource "proxmox_virtual_environment_vm" "ubuntu_vm" {
name = "terraform-provider-proxmox-ubuntu-vm"
description = "Managed by Terraform"
tags = ["terraform", "ubuntu"]
node_name = "first-node"
vm_id = 4321
agent {
enabled = true
}
disk {
datastore_id = "local-lvm"
file_id = proxmox_virtual_environment_file.ubuntu_cloud_image.id
interface = "scsi0"
}
initialization {
ip_config {
ipv4 {
address = "dhcp"
}
}
user_account {
keys = [trimspace(tls_private_key.ubuntu_vm_key.public_key_openssh)]
password = random_password.ubuntu_vm_password.result
username = "ubuntu"
}
user_data_file_id = proxmox_virtual_environment_file.cloud_config.id
}
network_device {
bridge = "vmbr0"
}
operating_system {
type = "l26"
}
serial_device {}
}
resource "proxmox_virtual_environment_file" "ubuntu_cloud_image" {
content_type = "iso"
datastore_id = "local"
node_name = "first-node"
source_file {
path = "http://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img"
}
}
resource "random_password" "ubuntu_vm_password" {
length = 16
override_special = "_%@"
special = true
}
resource "tls_private_key" "ubuntu_vm_key" {
algorithm = "RSA"
rsa_bits = 2048
}
output "ubuntu_vm_password" {
value = random_password.ubuntu_vm_password.result
sensitive = true
}
output "ubuntu_vm_private_key" {
value = tls_private_key.ubuntu_vm_key.private_key_pem
sensitive = true
}
output "ubuntu_vm_public_key" {
value = tls_private_key.ubuntu_vm_key.public_key_openssh
}
Argument Reference
acpi
- (Optional) Whether to enable ACPI (defaults totrue
).agent
- (Optional) The QEMU agent configuration.enabled
- (Optional) Whether to enable the QEMU agent (defaults tofalse
).timeout
- (Optional) The maximum amount of time to wait for data from the QEMU agent to become available ( defaults to15m
).trim
- (Optional) Whether to enable the FSTRIM feature in the QEMU agent (defaults tofalse
).type
- (Optional) The QEMU agent interface type (defaults tovirtio
).isa
- ISA Serial Port.virtio
- VirtIO (paravirtualized).
audio_device
- (Optional) An audio device.device
- (Optional) The device (defaults tointel-hda
).AC97
- Intel 82801AA AC97 Audio.ich9-intel-hda
- Intel HD Audio Controller (ich9).intel-hda
- Intel HD Audio.
driver
- (Optional) The driver (defaults tospice
).spice
- Spice.
enabled
- (Optional) Whether to enable the audio device (defaults totrue
).
bios
- (Optional) The BIOS implementation (defaults toseabios
).ovmf
- OVMF (UEFI).seabios
- SeaBIOS.
cdrom
- (Optional) The CDROM configuration.enabled
- (Optional) Whether to enable the CDROM drive (defaults tofalse
).file_id
- (Optional) A file ID for an ISO file (defaults tocdrom
as in the physical drive).
clone
- (Optional) The cloning configuration.datastore_id
- (Optional) The identifier for the target datastore.node_name
- (Optional) The name of the source node (leave blank, if equal to thenode_name
argument).retries
- (Optional) Number of retries in Proxmox for clone vm. Sometimes Proxmox errors with timeout when creating multiple clones at once.vm_id
- (Required) The identifier for the source VM.
cpu
- (Optional) The CPU configuration.architecture
- (Optional) The CPU architecture (defaults tox86_64
).aarch64
- ARM (64 bit).x86_64
- x86 (64-bit).
cores
- (Optional) The number of CPU cores (defaults to1
).flags
- (Optional) The CPU flags.+aes
/-aes
- Activate AES instruction set for HW acceleration.+amd-no-ssb
/-amd-no-ssb
- Notifies guest OS that host is not vulnerable for Spectre on AMD CPUs.+amd-ssbd
/-amd-ssbd
- Improves Spectre mitigation performance with AMD CPUs, best used with "virt-ssbd".+hv-evmcs
/-hv-evmcs
- Improve performance for nested virtualization (only supported on Intel CPUs).+hv-tlbflush
/-hv-tlbflush
- Improve performance in overcommitted
Windows guests (may lead to guest BSOD on old CPUs).+ibpb
/-ibpb
- Allows improved Spectre mitigation on AMD CPUs.+md-clear
/-md-clear
- Required to let the guest OS know if MDS is mitigated correctly.+pcid
/-pcid
- Meltdown fix cost reduction on Westmere, Sandy- and Ivy Bridge Intel CPUs.+pdpe1gb
/-pdpe1gb
- Allows guest OS to use 1 GB size pages, if host HW supports it.+spec-ctrl
/-spec-ctrl
- Allows improved Spectre mitigation with Intel CPUs.+ssbd
/-ssbd
- Protection for "Speculative Store Bypass" for Intel models.+virt-ssbd
/-virt-ssbd
- Basis for "Speculative Store Bypass" protection for AMD models.
hotplugged
- (Optional) The number of hotplugged vCPUs (defaults to0
).sockets
- (Optional) The number of CPU sockets (defaults to1
).type
- (Optional) The emulated CPU type (defaults toqemu64
).486
- Intel 486.Broadwell
/Broadwell-IBRS
/Broadwell-noTSX
/Broadwell-noTSX-IBRS
- Intel Core Processor (Broadwell, 2014).
Cascadelake-Server
- Intel Xeon 32xx/42xx/52xx/62xx/82xx/92xx ( 2019).Conroe
- Intel Celeron_4x0 (Conroe/Merom Class Core 2, 2006).EPYC
/EPYC-IBPB
- AMD EPYC Processor (2017).Haswell
/Haswell-IBRS
/Haswell-noTSX
/Haswell-noTSX-IBRS
- Intel Core Processor (Haswell, 2013).IvyBridge
/IvyBridge-IBRS
- Intel Xeon E3-12xx v2 (Ivy Bridge, 2012).KnightsMill
- Intel Xeon Phi 72xx (2017).Nehalem
/Nehalem-IBRS
- Intel Core i7 9xx (Nehalem Class Core i7, 2008).Opteron_G1
- AMD Opteron 240 (Gen 1 Class Opteron, 2004).Opteron_G2
- AMD Opteron 22xx (Gen 2 Class Opteron, 2006).Opteron_G3
- AMD Opteron 23xx (Gen 3 Class Opteron, 2009).Opteron_G4
- AMD Opteron 62xx class CPU (2011).Opteron_G5
- AMD Opteron 63xx class CPU (2012).Penryn
- Intel Core 2 Duo P9xxx (Penryn Class Core 2, 2007).SandyBridge
/SandyBridge-IBRS
- Intel Xeon E312xx (Sandy Bridge, 2011).Skylake-Client
/Skylake-Client-IBRS
- Intel Core Processor ( Skylake, 2015).Skylake-Server
/Skylake-Server-IBRS
- Intel Xeon Processor ( Skylake, 2016).Westmere
/Westmere-IBRS
- Intel Westmere E56xx/L56xx/X56xx ( Nehalem-C, 2010).athlon
- AMD Athlon.core2duo
- Intel Core 2 Duo.coreduo
- Intel Core Duo.host
- Host pass-through.kvm32
/kvm64
- Common KVM processor (32 & 64 bit variants).max
- Maximum amount of features from host CPU.pentium
- Intel Pentium (1993).pentium2
- Intel Pentium 2 (1997-1999).pentium3
- Intel Pentium 3 (1999-2001).phenom
- AMD Phenom (2010).qemu32
/qemu64
- QEMU Virtual CPU version 2.5+ (32 & 64 bit variants).
units
- (Optional) The CPU units (defaults to1024
).
description
- (Optional) The description.disk
- (Optional) A disk (multiple blocks supported).datastore_id
- (Optional) The identifier for the datastore to create the disk in (defaults tolocal-lvm
).discard
- (Optional) Whether to pass discard/trim requests to the underlying storage. Supported values areon
/ignore
(defaults toignore
).file_format
- (Optional) The file format (defaults toqcow2
).qcow2
- QEMU Disk Image v2.raw
- Raw Disk Image.vmdk
- VMware Disk Image.
file_id
- (Optional) The file ID for a disk image (experimental - might cause high CPU utilization during import, especially with large disk images).interface
- (Required) The disk interface for Proxmox, currently scsi, sata and virtio are supported.iothread
- (Optional) Whether to use iothreads for this disk (defaults tofalse
).size
- (Optional) The disk size in gigabytes (defaults to8
).speed
- (Optional) The speed limits.read
- (Optional) The maximum read speed in megabytes per second.read_burstable
- (Optional) The maximum burstable read speed in megabytes per second.write
- (Optional) The maximum write speed in megabytes per second.write_burstable
- (Optional) The maximum burstable write speed in megabytes per second.
ssd
- (Optional) Whether to use an SSD emulation option for this disk ( defaults tofalse
). Note that SSD emulation is not supported on VirtIO Block drives.
hostpci
- (Optional) A host PCI device mapping (multiple blocks supported).device
- (Required) The PCI device name for Proxmox, in form ofhostpciX
whereX
is a sequential number from 0 to 3.id
- (Required) The PCI device ID.mdev
- (Optional) The mediated device ID to use.pcie
- (Optional) Tells Proxmox to use a PCIe or PCI port. Some guests/device combination require PCIe rather than PCI. PCIe is only available for q35 machine types.rombar
- (Optional) Makes the firmware ROM visible for the VM (defaults totrue
).rom_file
- (Optional) A path to a ROM file for the device to use. This is a relative path under/usr/share/kvm/
.xvga
- (Optional) Marks the PCI(e) device as the primary GPU of the VM. With this enabled thevga
configuration argument will be ignored.
initialization
- (Optional) The cloud-init configuration.datastore_id
- (Optional) The identifier for the datastore to create the cloud-init disk in (defaults tolocal-lvm
).dns
- (Optional) The DNS configuration.domain
- (Optional) The DNS search domain.server
- (Optional) The DNS server.
ip_config
- (Optional) The IP configuration (one block per network device).ipv4
- (Optional) The IPv4 configuration.address
- (Optional) The IPv4 address (usedhcp
for autodiscovery).gateway
- (Optional) The IPv4 gateway (must be omitted whendhcp
is used as the address).
ipv6
- (Optional) The IPv4 configuration.address
- (Optional) The IPv6 address (usedhcp
for autodiscovery).gateway
- (Optional) The IPv6 gateway (must be omitted whendhcp
is used as the address).
user_account
- (Optional) The user account configuration (conflicts withuser_data_file_id
).keys
- (Optional) The SSH keys.password
- (Optional) The SSH password.username
- (Optional) The SSH username.
network_data_file_id
- (Optional) The identifier for a file containing network configuration data passed to the VM via cloud-init (conflicts withip_config
).user_data_file_id
- (Optional) The identifier for a file containing custom user data (conflicts withuser_account
).vendor_data_file_id
- (Optional) The identifier for a file containing all vendor data passed to the VM via cloud-init.
keyboard_layout
- (Optional) The keyboard layout (defaults toen-us
).da
- Danish.de
- German.de-ch
- Swiss German.en-gb
- British English.en-us
- American English.es
- Spanish.fi
- Finnish.fr
- French.fr-be
- Belgian French.fr-ca
- French Canadian.fr-ch
- Swish French.hu
- Hungarian.is
- Icelandic.it
- Italian.ja
- Japanese.lt
- Lithuanian.mk
- Macedonian.nl
- Dutch.no
- Norwegian.pl
- Polish.pt
- Portuguese.pt-br
- Brazilian Portuguese.sl
- Slovenian.sv
- Swedish.tr
- Turkish.
kvm_arguments
- (Optional) Arbitrary arguments passed to kvm.
machine
- (Optional) The VM machine type (defaults toi440fx
).i440fx
- Standard PC (i440FX + PIIX, 1996).q35
- Standard PC (Q35 + ICH9, 2009).
memory
- (Optional) The memory configuration.dedicated
- (Optional) The dedicated memory in megabytes (defaults to512
).floating
- (Optional) The floating memory in megabytes (defaults to0
).shared
- (Optional) The shared memory in megabytes (defaults to0
).
name
- (Optional) The virtual machine name.network_device
- (Optional) A network device (multiple blocks supported).bridge
- (Optional) The name of the network bridge (defaults tovmbr0
).enabled
- (Optional) Whether to enable the network device (defaults totrue
).mac_address
- (Optional) The MAC address.model
- (Optional) The network device model (defaults tovirtio
).e1000
- Intel E1000.rtl8139
- Realtek RTL8139.virtio
- VirtIO (paravirtualized).vmxnet3
- VMware vmxnet3.
mtu
- (Optional) Force MTU, for VirtIO only. Set to 1 to use the bridge MTU. Cannot be larger than the bridge MTU.rate_limit
- (Optional) The rate limit in megabytes per second.vlan_id
- (Optional) The VLAN identifier.
node_name
- (Required) The name of the node to assign the virtual machine to.on_boot
- (Optional) Specifies whether a VM will be started during system boot. (defaults totrue
)operating_system
- (Optional) The Operating System configuration.type
- (Optional) The type (defaults toother
).l24
- Linux Kernel 2.4.l26
- Linux Kernel 2.6 - 5.X.other
- Unspecified OS.solaris
- OpenIndiania, OpenSolaris og Solaris Kernel.w2k
- Windows 2000.w2k3
- Windows 2003.w2k8
- Windows 2008.win7
- Windows 7.win8
- Windows 8, 2012 or 2012 R2.win10
- Windows 10 or 2016.wvista
- Windows Vista.wxp
- Windows XP.
pool_id
- (Optional) The identifier for a pool to assign the virtual machine to.reboot
- (Optional) Reboot the VM after initial creation. (defaults tofalse
)serial_device
- (Optional) A serial device (multiple blocks supported).device
- (Optional) The device (defaults tosocket
)./dev/*
- A host serial device.socket
- A unix socket.
started
- (Optional) Whether to start the virtual machine (defaults totrue
).tablet_device
- (Optional) Whether to enable the USB tablet device (defaults totrue
).tags
- (Optional) A list of tags of the VM. This is only meta information ( defaults to[]
). Note: Proxmox always sorts the VM tags. If the list in template is not sorted, then Proxmox will always report a difference on the resource. You may use theignore_changes
lifecycle meta-argument to ignore changes to this attribute.template
- (Optional) Whether to create a template (defaults tofalse
).timeout_clone
- (Optional) Timeout for cloning a VM in seconds (defaults to 1800).timeout_move_disk
- (Optional) Timeout for moving the disk of a VM in seconds (defaults to 1800).timeout_reboot
- (Optional) Timeout for rebooting a VM in seconds (defaults to 1800).timeout_shutdown_vm
- (Optional) Timeout for shutting down a VM in seconds ( defaults to 1800).timeout_start_vm
- (Optional) Timeout for starting a VM in seconds (defaults to 1800).timeout_stop_vm
- (Optional) Timeout for stopping a VM in seconds (defaults to 300).vga
- (Optional) The VGA configuration.enabled
- (Optional) Whether to enable the VGA device (defaults totrue
).memory
- (Optional) The VGA memory in megabytes (defaults to16
).type
- (Optional) The VGA type (defaults tostd
).cirrus
- Cirrus (deprecated since QEMU 2.2).qxl
- SPICE.qxl2
- SPICE Dual Monitor.qxl3
- SPICE Triple Monitor.qxl4
- SPICE Quad Monitor.serial0
- Serial Terminal 0.serial1
- Serial Terminal 1.serial2
- Serial Terminal 2.serial3
- Serial Terminal 3.std
- Standard VGA.virtio
- VirtIO-GPU.vmware
- VMware Compatible.
vm_id
- (Optional) The VM identifier.
Attribute Reference
ipv4_addresses
- The IPv4 addresses per network interface published by the QEMU agent (empty list whenagent.enabled
isfalse
)ipv6_addresses
- The IPv6 addresses per network interface published by the QEMU agent (empty list whenagent.enabled
isfalse
)mac_addresses
- The MAC addresses published by the QEMU agent with fallback to the network device configuration, if the agent is disablednetwork_interface_names
- The network interface names published by the QEMU agent (empty list whenagent.enabled
isfalse
)
Important Notes
When cloning an existing virtual machine, whether it's a template or not, the resource will only detect changes to the arguments which are not set to their default values.
Furthermore, when cloning from one node to a different one, the behavior changes depening on the datastores of the source VM. If at least one non-shared datastore is used, the VM is first cloned to the source node before being migrated to the target node. This circumvents a limitation in the Proxmox clone API.
Note: Because the migration step after the clone tries to preserve the used
datastores by their name, it may fail if a datastore used in the source VM is
not available on the target node (e.g. local-lvm
is used on the source node in
the VM but no local-lvm
datastore is availabel on the target node). In this
case, it is recommended to set the datastore_id
argument in the clone
block
to force the migration step to migrate all disks to a specific datastore on the
target node. If you need certain disks to be on specific datastores, set
the datastore_id
argument of the disks in the disks
block to move the disks
to the correct datastore after the cloning and migrating succeeded.