A Terraform Provider which adds support for Proxmox solutions.
This repository is a fork of https://github.com/danitso/terraform-provider-proxmox with several critical fixes to unblock VM deployment in Proxmox v7.0, and several other enhancements.
Proxmox version | Provider version |
---|---|
6.x | <= 0.4.4 |
7.x | >= 0.4.5 |
- Terraform 1.2+
- Go 1.19+ (to build the provider plugin)
- GoReleaser v1.15+ (to build the provider plugin)
-
Clone the repository to
$GOPATH/src/github.com/bpg/terraform-provider-proxmox
:mkdir -p "${GOPATH}/src/github.com/bpg" cd "${GOPATH}/src/github.com/bpg" git clone git@github.com:bpg/terraform-provider-proxmox
-
Enter the provider directory and build it:
cd "${GOPATH}/src/github.com/bpg/terraform-provider-proxmox" make build
You can find the latest release and its documentation in the Terraform Registry.
In order to test the provider, you can simply run make test
.
make test
Tests are limited to regression tests, ensuring backwards compatibility.
There are number of TF examples in the examples
directory, which can be used
to deploy a Container, VM, or other Proxmox resources on your test Proxmox cluster.
The following assumptions are made about the test Proxmox cluster:
- It has one node named
pve
- The node has local storages named
local
andlocal-lvm
Create examples/terraform.tfvars
with the following variables:
virtual_environment_username = "root@pam"
virtual_environment_password = "put-your-password-here"
virtual_environment_endpoint = "https://<your-cluster-endpoint>:8006/"
Then run make example
to deploy the example resources.
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).
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}"
}
//...
}
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).