0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-06-30 18:42:58 +00:00
Terraform / OpenTofu Provider for Proxmox VE
Go to file
2020-01-19 03:40:10 +01:00
.github Update community templates 2019-12-30 20:56:45 +01:00
example Initial support for VM cloning 2020-01-19 03:40:10 +01:00
proxmox Initial support for VM cloning 2020-01-19 03:40:10 +01:00
proxmoxtf Initial support for VM cloning 2020-01-19 03:40:10 +01:00
.gitignore Continued work on VM resource 2019-12-27 02:48:27 +01:00
.travis.yml Additional test cases 2019-12-14 15:45:07 +01:00
CHANGELOG.md Initial support for VM cloning 2020-01-19 03:40:10 +01:00
CODE_OF_CONDUCT.md Create CODE_OF_CONDUCT.md 2019-12-30 19:02:10 +01:00
CONTRIBUTING.md Update CONTRIBUTING.md 2019-12-30 20:54:06 +01:00
go.mod Continue work on container resource 2020-01-02 11:45:46 +01:00
go.sum First release 2019-12-30 06:55:54 +01:00
LICENSE Initial work 2019-12-07 19:58:29 +01:00
main.go Refactoring 2019-12-15 16:45:40 +01:00
Makefile Update Makefile 2019-12-16 02:18:23 +01:00
README.md Initial support for VM cloning 2020-01-19 03:40:10 +01:00

Build Status

Terraform Provider for Proxmox

A Terraform Provider which adds support for Proxmox solutions.

Requirements

  • Terraform 0.11+
  • Go 1.13 (to build the provider plugin)

Table of contents

Building the Provider

Clone repository to: $GOPATH/src/github.com/danitso/terraform-provider-proxmox

$ mkdir -p $GOPATH/src/github.com/danitso; cd $GOPATH/src/github.com/danitso
$ git clone git@github.com:danitso/terraform-provider-proxmox

Enter the provider directory, initialize and build the provider

$ cd $GOPATH/src/github.com/danitso/terraform-provider-proxmox
$ make init
$ make build

Using the Provider

If you're building the provider, follow the instructions to install it as a plugin. After placing it into your plugins directory, run terraform init to initialize it.

Configuration

Arguments

  • virtual_environment - (Optional) This is the configuration block for the Proxmox Virtual Environment
    • endpoint - (Required) The endpoint for the Proxmox Virtual Environment API
    • insecure - (Optional) Whether to skip the TLS verification step (defaults to false)
    • password - (Required) The password for the Proxmox Virtual Environment API
    • username - (Required) The username for the Proxmox Virtual Environment API

Environment variables

You can set up the provider by passing environment variables instead of specifying arguments.

  • PROXMOX_VE_ENDPOINT or PM_VE_ENDPOINT - The endpoint for the Proxmox Virtual Environment API
  • PROXMOX_VE_INSECURE or PM_VE_INSECURE - Whether to skip the TLS verification step
  • PROXMOX_VE_PASSWORD or PM_VE_PASSWORD - The password for the Proxmox Virtual Environment API
  • PROXMOX_VE_USERNAME or PM_VE_USERNAME - The username for the Proxmox Virtual Environment API
provider "proxmox" {
  virtual_environment {}
}
Usage
$ export PROXMOX_VE_ENDPOINT="https://hostname:8006"
$ export PROXMOX_VE_INSECURE="true"
$ export PROXMOX_VE_PASSWORD="a-strong-password"
$ export PROXMOX_VE_USERNAME="username@realm"
$ terraform plan

You can omit PROXMOX_VE_INSECURE, if the Proxmox Virtual Environment API is exposing a certificate trusted by your operating system.

Data Sources

Virtual Environment

Datastores (proxmox_virtual_environment_datastores)
Arguments
  • node_name - (Required) A node name
Attributes
  • active - Whether the datastore is active
  • content_types - The allowed content types
  • datastore_ids - The datastore ids
  • enabled - Whether the datastore is enabled
  • shared - Whether the datastore is shared
  • space_available - The available space in bytes
  • space_total - The total space in bytes
  • space_used - The used space in bytes
  • types - The storage types
DNS (proxmox_virtual_environment_dns)
Arguments
  • node_name - (Required) A node name
Attributes
  • domain - The DNS search domain
  • servers - The DNS servers
Group (proxmox_virtual_environment_group)
Arguments
  • group_id - (Required) The group id
Attributes
  • acl - The access control list
    • path - The path
    • propagate - Whether to propagate to child paths
    • role_id - The role id
  • comment - The group comment
  • members - The group members as a list with username@realm entries
Groups (proxmox_virtual_environment_groups)
Arguments

This data source doesn't accept arguments.

Attributes
  • comments - The group comments
  • group_ids - The group ids
Hosts (proxmox_virtual_environment_hosts)
Arguments
  • node_name - (Required) A node name
Attributes
  • addresses - The IP addresses
  • digest - The SHA1 digest
  • entries - The host entries (conversion of addresses and hostnames into objects)
  • hostnames - The hostnames associated with each of the IP addresses
Nodes (proxmox_virtual_environment_nodes)
Arguments

This data source doesn't accept arguments.

Attributes
  • cpu_count - The CPU count for each node
  • cpu_utilization - The CPU utilization on each node
  • memory_available - The memory available on each node
  • memory_used - The memory used on each node
  • names - The node names
  • online - Whether a node is online
  • ssl_fingerprints - The SSL fingerprint for each node
  • support_levels - The support level for each node
  • uptime - The uptime in seconds for each node
Pool (proxmox_virtual_environment_pool)
Arguments
  • pool_id - (Required) The pool id
Attributes
  • comment - The pool comment
  • members - The pool members
    • datastore_id - The datastore id
    • id - The member id
    • node_name - The node name
    • type - The member type
    • vm_id - The virtual machine id
Pools (proxmox_virtual_environment_pools)
Arguments

This data source doesn't accept arguments.

Attributes
  • pool_ids - The pool ids
Role (proxmox_virtual_environment_role)
Arguments
  • role_id - (Required) The role id
Attributes
  • privileges - The role privileges
Roles (proxmox_virtual_environment_roles)
Arguments

This data source doesn't accept arguments.

Attributes
  • privileges - The role privileges
  • role_ids - The role ids
  • special - Whether the role is special (built-in)
User (proxmox_virtual_environment_user)
Arguments
  • user_id - (Required) The user id.
Attributes
  • acl - The access control list
    • path - The path
    • propagate - Whether to propagate to child paths
    • role_id - The role id
  • comment - The user comment
  • email - The user's email address
  • enabled - Whether the user account is enabled
  • expiration_date - The user account's expiration date (RFC 3339)
  • first_name - The user's first name
  • groups - The user's groups
  • keys - The user's keys
  • last_name - The user's last name
Users (proxmox_virtual_environment_users)
Arguments

This data source doesn't accept arguments.

Attributes
  • comments - The user comments
  • emails - The users' email addresses
  • enabled - Whether a user account is enabled
  • expiration_dates - The user accounts' expiration dates (RFC 3339)
  • first_names - The users' first names
  • groups - The users' groups
  • keys - The users' keys
  • last_names - The users' last names
  • user_ids - The user ids
Version (proxmox_virtual_environment_version)
Arguments

This data source doesn't accept arguments.

Attributes
  • keyboard_layout - The keyboard layout
  • release - The release number
  • repository_id - The repository id
  • version - The version string

Resources

Virtual Environment

Certificate (proxmox_virtual_environment_certificate)
Arguments
  • certificate - (Required) The PEM encoded certificate
  • certificate_chain - (Optional) The PEM encoded certificate chain
  • node_name - (Required) A node name
  • private_key - (Required) The PEM encoded private key
Attributes
  • expiration_date - The expiration date (RFC 3339)
  • file_name - The file name
  • issuer - The issuer
  • public_key_size - The public key size
  • public_key_type - The public key type
  • ssl_fingerprint - The SSL fingerprint
  • start_date - The start date (RFC 3339)
  • subject - The subject
  • subject_alternative_names - The subject alternative names
Container (proxmox_virtual_environment_container)
Arguments
  • console - (Optional) The console configuration
    • enabled - (Optional) Whether to enable the console device (defaults to true)
    • mode - (Optional) The console mode (defaults to tty)
      • console - Console
      • shell - Shell
      • tty - TTY
    • tty_count - (Optional) The number of available TTY (defaults to 2)
  • cpu - (Optional) The CPU configuration
    • architecture - (Optional) The CPU architecture (defaults to amd64)
      • amd64 - x86 (64 bit)
      • arm64 - ARM (64-bit)
      • armhf - ARM (32 bit)
      • i386 - x86 (32 bit)
    • cores - (Optional) The number of CPU cores (defaults to 1)
    • units - (Optional) The CPU units (defaults to 1024)
  • description - (Optional) The description
  • disk - (Optional) A disk
    • datastore_id - (Optional) The ID of the datastore to create the disk in (defaults to local-lvm)
  • initialization - (Optional) The initialization configuration
    • dns - (Optional) The DNS configuration
      • domain - (Optional) The DNS search domain
      • server - (Optional) The DNS server
    • hostname - (Optional) The hostname
    • 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
      • keys - (Optional) The SSH keys for the root account
      • password - (Optional) The password for the root account
  • memory - (Optional) The memory configuration
    • dedicated - (Optional) The dedicated memory in megabytes (defaults to 512)
    • swap - (Optional) The swap size in megabytes (defaults to 0)
  • network_interface - (Optional) A network interface (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
    • name - (Required) The network interface name
    • 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 container to
  • operating_system - (Required) The Operating System configuration
    • template_file_id - (Required) The ID of an OS template file
    • type - (Optional) The type (defaults to unmanaged)
      • alpine - Alpine
      • archlinux - Arch Linux
      • centos - CentOS
      • debian - Debian
      • fedora - Fedora
      • gentoo - Gentoo
      • opensuse - openSUSE
      • ubuntu - Ubuntu
      • unmanaged - Unmanaged
  • pool_id - (Optional) The ID of a pool to assign the container to
  • started - (Optional) Whether to start the container (defaults to true)
  • vm_id - (Optional) The ID
Attributes

This resource doesn't expose any additional attributes.

DNS (proxmox_virtual_environment_dns)
Arguments
  • domain - (Required) The DNS search domain
  • node_name - (Required) A node name
  • servers - (Optional) The DNS servers
Attributes

This resource doesn't expose any additional attributes.

Notes

Be careful not to use this resource multiple times for the same node.

File (proxmox_virtual_environment_file)
Arguments
  • content_type - (Optional) The content type
    • backup
    • iso
    • snippets
    • vztmpl
  • datastore_id - (Required) The datastore id
  • node_name - (Required) The node name
  • source_file - (Optional) The source file (conflicts with source_raw)
    • checksum - (Optional) The SHA256 checksum of the source file
    • file_name - (Optional) The file name to use instead of the source file name
    • insecure - (Optional) Whether to skip the TLS verification step for HTTPS sources (defaults to false)
    • path - (Required) A path to a local file or a URL
  • source_raw - (Optional) The raw source (conflicts with source_file)
    • data - (Required) The raw data
    • file_name - (Required) The file name
    • resize - (Optional) The number of bytes to resize the file to
Attributes
  • file_modification_date - The file modification date (RFC 3339)
  • file_name - The file name
  • file_size - The file size in bytes
  • file_tag - The file tag
Notes

The Proxmox VE API endpoint for file uploads does not support chunked transfer encoding, which means that we must first store the source file as a temporary file locally before uploading it.

You must ensure that you have at least Size-in-MB * 2 + 1 MB of storage space available (twice the size plus overhead because a multipart payload needs to be created as another temporary file).

Group (proxmox_virtual_environment_group)
Arguments
  • acl - (Optional) The access control list (multiple blocks supported)
    • path - The path
    • propagate - Whether to propagate to child paths
    • role_id - The role id
  • comment - (Optional) The group comment
  • group_id - (Required) The group id
Attributes
  • members - The group members as a list with username@realm entries
Hosts (proxmox_virtual_environment_hosts)
Arguments
  • node_name - (Required) A node name
  • entry - (Required) A host entry (multiple blocks supported)
    • address - (Required) The IP address
    • hostnames - (Required) The hostnames
Attributes
  • addresses - The IP addresses
  • digest - The SHA1 digest
  • entries - The host entries (conversion of addresses and hostnames into objects)
  • hostnames - The hostnames associated with each of the IP addresses
Pool (proxmox_virtual_environment_pool)
Arguments
  • comment - (Optional) The pool comment
  • pool_id - (Required) The pool id
Attributes
  • members - The pool members
    • datastore_id - The datastore id
    • id - The member id
    • node_name - The node name
    • type - The member type
    • vm_id - The virtual machine id
Role (proxmox_virtual_environment_role)
Arguments
  • privileges - (Required) The role privileges
  • role_id - (Required) The role id
Attributes

This resource doesn't expose any additional attributes.

User (proxmox_virtual_environment_user)
Arguments
  • acl - (Optional) The access control list (multiple blocks supported)
    • path - The path
    • propagate - Whether to propagate to child paths
    • role_id - The role id
  • comment - (Optional) The user comment
  • email - (Optional) The user's email address
  • enabled - (Optional) Whether the user account is enabled
  • expiration_date - (Optional) The user account's expiration date (RFC 3339)
  • first_name - (Optional) The user's first name
  • groups - (Optional) The user's groups
  • keys - (Optional) The user's keys
  • last_name - (Optional) The user's last name
  • password - (Required) The user's password
  • user_id - (Required) The user id
Attributes

This resource doesn't expose any additional attributes.

Virtual Machine (proxmox_virtual_environment_vm)
Arguments
  • 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)
    • 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 ID of the target datastore
    • node_name - (Optional) The name of the source node (leave blank, if equal to the node_name argument)
    • vm_id - (Required) The ID of 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 ID of 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)
    • 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
  • initialization - (Optional) The cloud-init configuration (conflicts with cdrom)
    • 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 ID of 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 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
  • 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 ID of a pool to assign the virtual machine to
  • 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)
  • 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
Attributes
  • 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)
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.

Developing the Provider

If you wish to work on the provider, you'll first need Go installed on your machine (version 1.13+ is required). You'll also need to correctly setup a GOPATH, as well as adding $GOPATH/bin to your $PATH.

To compile the provider, run make build. This will build the provider and put the provider binary in the $GOPATH/bin directory.

$ make build
...
$ $GOPATH/bin/terraform-provider-proxmox
...

If you wish to contribute to the provider, please see CONTRIBUTING.md.

Testing the Provider

In order to test the provider, you can simply run make test.

$ make test

Tests are limited to regression tests, ensuring backwards compability.

Known issues

Disk images cannot be imported by non-PAM accounts

Due to limitations in the Proxmox VE API, certain actions need to be performed using SSH. This requires the use of a PAM account (standard Linux account).

Disk images from VMware cannot be uploaded or imported

Proxmox VE is not currently supporting VMware disk images directly. However, you can still use them as disk images by using this workaround:

resource "proxmox_virtual_environment_file" "vmdk_disk_image" {
  content_type = "iso"
  datastore_id = "datastore-id"
  node_name    = "node-name"

  source_file {
    # We must override the file extension to bypass the validation code in the Proxmox VE API.
    file_name = "vmdk-file-name.img"
    path      = "path-to-vmdk-file"
  }
}

resource "proxmox_virtual_environment_vm" "example" {
  ...

  disk {
    datastore_id = "datastore-id"
    # We must tell the provider that the file format is vmdk instead of qcow2.
    file_format  = "vmdk"
    file_id      = "${proxmox_virtual_environment_file.vmdk_disk_image.id}"
  }

  ...
}

Snippets cannot be uploaded by non-PAM accounts

Due to limitations in the Proxmox VE API, certain files need to be uploaded using SFTP. This requires the use of a PAM account (standard Linux account).