mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-01 19:12:59 +00:00
324 lines
15 KiB
Markdown
324 lines
15 KiB
Markdown
---
|
|
layout: page
|
|
title: proxmox_virtual_environment_vm
|
|
permalink: /resources/virtual_environment_vm
|
|
nav_order: 13
|
|
parent: Resources
|
|
subcategory: Virtual Environment
|
|
---
|
|
|
|
# Resource: proxmox_virtual_environment_vm
|
|
|
|
Manages a virtual machine.
|
|
|
|
## Example Usage
|
|
|
|
```terraform
|
|
resource "proxmox_virtual_environment_vm" "ubuntu_vm" {
|
|
name = "terraform-provider-proxmox-ubuntu-vm"
|
|
description = "Managed by Terraform"
|
|
|
|
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 to `true`).
|
|
* `agent` - (Optional) The QEMU agent configuration.
|
|
* `enabled` - (Optional) Whether to enable the QEMU agent (defaults to `false`).
|
|
* `timeout` - (Optional) The maximum amount of time to wait for data from the QEMU agent to become available (
|
|
defaults to `15m`).
|
|
* `trim` - (Optional) Whether to enable the FSTRIM feature in the QEMU agent (defaults to `false`).
|
|
* `type` - (Optional) The QEMU agent interface type (defaults to `virtio`).
|
|
* `isa` - ISA Serial Port.
|
|
* `virtio` - VirtIO (paravirtualized).
|
|
* `audio_device` - (Optional) An audio device.
|
|
* `device` - (Optional) The device (defaults to `intel-hda`).
|
|
* `AC97` - Intel 82801AA AC97 Audio.
|
|
* `ich9-intel-hda` - Intel HD Audio Controller (ich9).
|
|
* `intel-hda` - Intel HD Audio.
|
|
* `driver` - (Optional) The driver (defaults to `spice`).
|
|
* `spice` - Spice.
|
|
* `enabled` - (Optional) Whether to enable the audio device (defaults to `true`).
|
|
* `bios` - (Optional) The BIOS implementation (defaults to `seabios`).
|
|
* `ovmf` - OVMF (UEFI).
|
|
* `seabios` - SeaBIOS.
|
|
* `cdrom` - (Optional) The CDROM configuration.
|
|
* `enabled` - (Optional) Whether to enable the CDROM drive (defaults to `false`).
|
|
* `file_id` - (Optional) A file ID for an ISO file (defaults to `cdrom` 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 the `node_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 to `x86_64`).
|
|
* `aarch64` - ARM (64 bit).
|
|
* `x86_64` - x86 (64-bit).
|
|
* `cores` - (Optional) The number of CPU cores (defaults to `1`).
|
|
* `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 to `0`).
|
|
* `sockets` - (Optional) The number of CPU sockets (defaults to `1`).
|
|
* `type` - (Optional) The emulated CPU type (defaults to `qemu64`).
|
|
* `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 passthrough.
|
|
* `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 to `1024`).
|
|
* `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 to `local-lvm`).
|
|
* `file_format` - (Optional) The file format (defaults to `qcow2`).
|
|
* `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.
|
|
* `size` - (Optional) The disk size in gigabytes (defaults to `8`).
|
|
* `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.
|
|
* `iothread` - (Optional) Whether to use iothreads for this disk (defaults to `false`).
|
|
* `initialization` - (Optional) The cloud-init configuration.
|
|
* `datastore_id` - (Optional) The identifier for the datastore to create the cloud-init disk in (defaults
|
|
to `local-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 (use `dhcp` for autodiscovery).
|
|
* `gateway` - (Optional) The IPv4 gateway (must be omitted when `dhcp` is used as the address).
|
|
* `ipv6` - (Optional) The IPv4 configuration.
|
|
* `address` - (Optional) The IPv6 address (use `dhcp` for autodiscovery).
|
|
* `gateway` - (Optional) The IPv6 gateway (must be omitted when `dhcp` is used as the address).
|
|
* `user_account` - (Optional) The user account configuration (conflicts with `user_data_file_id`).
|
|
* `keys` - (Optional) The SSH keys.
|
|
* `password` - (Optional) The SSH password.
|
|
* `username` - (Optional) The SSH username.
|
|
* `user_data_file_id` - (Optional) The identifier for a file containing custom user data (conflicts
|
|
with `user_account`).
|
|
* `keyboard_layout` - (Optional) The keyboard layout (defaults to `en-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.
|
|
* `memory` - (Optional) The memory configuration.
|
|
* `dedicated` - (Optional) The dedicated memory in megabytes (defaults to `512`).
|
|
* `floating` - (Optional) The floating memory in megabytes (defaults to `0`).
|
|
* `shared` - (Optional) The shared memory in megabytes (defaults to `0`).
|
|
* `name` - (Optional) The virtual machine name.
|
|
* `network_device` - (Optional) A network device (multiple blocks supported).
|
|
* `bridge` - (Optional) The name of the network bridge (defaults to `vmbr0`).
|
|
* `enabled` - (Optional) Whether to enable the network device (defaults to `true`).
|
|
* `mac_address` - (Optional) The MAC address.
|
|
* `model` - (Optional) The network device model (defaults to `virtio`).
|
|
* `e1000` - Intel E1000.
|
|
* `rtl8139` - Realtek RTL8139.
|
|
* `virtio` - VirtIO (paravirtualized).
|
|
* `vmxnet3` - VMware vmxnet3.
|
|
* `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 to `false`)
|
|
* `operating_system` - (Optional) The Operating System configuration.
|
|
* `type` - (Optional) The type (defaults to `other`).
|
|
* `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 to `false`)
|
|
* `serial_device` - (Optional) A serial device (multiple blocks supported).
|
|
* `device` - (Optional) The device (defaults to `socket`).
|
|
* `/dev/*` - A host serial device.
|
|
* `socket` - A unix socket.
|
|
* `started` - (Optional) Whether to start the virtual machine (defaults to `true`).
|
|
* `tablet_device` - (Optional) Whether to enable the USB tablet device (defaults to `true`).
|
|
* `template` - (Optional) Whether to create a template (defaults to `false`).
|
|
* `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 to `true`).
|
|
* `memory` - (Optional) The VGA memory in megabytes (defaults to `16`).
|
|
* `type` - (Optional) The VGA type (defaults to `std`).
|
|
* `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
|
|
when `agent.enabled` is `false`)
|
|
* `ipv6_addresses` - The IPv6 addresses per network interface published by the QEMU agent (empty list
|
|
when `agent.enabled` is `false`)
|
|
* `mac_addresses` - The MAC addresses published by the QEMU agent with fallback to the network device configuration, if
|
|
the agent is disabled
|
|
* `network_interface_names` - The network interface names published by the QEMU agent (empty list when `agent.enabled`
|
|
is `false`)
|
|
|
|
## 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.
|