0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-06-30 02:31:10 +00:00

Update docs (#57)

* more docs update

* add some badges

* cleanup .MDs

* update .lock

* add cloud-config to the example doc
This commit is contained in:
Pavel Boldyrev 2022-05-23 23:43:12 -04:00 committed by GitHub
parent 2311f1e7a2
commit 86719256dc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
33 changed files with 122 additions and 73 deletions

View File

@ -1,5 +1,8 @@
[![Go Report Card](https://goreportcard.com/badge/github.com/bpg/terraform-provider-proxmox)](https://goreportcard.com/report/github.com/bpg/terraform-provider-proxmox)
[![GoDoc](https://godoc.org/github.com/bpg/terraform-provider-proxmox?status.svg)](http://godoc.org/github.com/bpg/terraform-provider-proxmox)
![GitHub release (latest by date)](https://img.shields.io/github/v/release/bpg/terraform-provider-proxmox)
![GitHub Release Date](https://img.shields.io/github/release-date/bpg/terraform-provider-proxmox)
[![GitHub stars](https://img.shields.io/github/stars/bpg/terraform-provider-proxmox)](https://github.com/bpg/terraform-provider-proxmox/stargazers)
# Terraform Provider for Proxmox
A Terraform Provider which adds support for Proxmox solutions.

View File

@ -1,7 +1,7 @@
GEM
remote: https://rubygems.org/
specs:
activesupport (6.0.4.6)
activesupport (6.0.4.7)
concurrent-ruby (~> 1.0, >= 1.0.2)
i18n (>= 0.7, < 2)
minitest (~> 5.1)
@ -283,7 +283,6 @@ GEM
unf (0.1.4)
unf_ext
unf_ext (0.0.8)
unf_ext (0.0.8-x64-mingw32)
unicode-display_width (1.8.0)
webrick (1.7.0)
zeitwerk (2.5.4)
@ -304,4 +303,4 @@ DEPENDENCIES
webrick (~> 1.7)
BUNDLED WITH
2.2.11
2.3.14

View File

@ -11,6 +11,6 @@ plugins:
remote_theme: pmarsceill/just-the-docs
# Theme settings.
footer_content: 'Copyright &copy; 2019-2021 <a href="https://danitso.com/" target="_blank">Danitso</a> - Distributed under the <a href="https://github.com/danitso/terraform-provider-proxmox/blob/master/LICENSE" target="_blank">Mozilla Public License 2.0</a><br>Copyright &copy; 2021 <a href="https://github.com/bpg/" target="_blank">Pavel Boldyrev</a> - Distributed under the <a href="https://github.com/bpg/terraform-provider-proxmox/blob/main/LICENSE" target="_blank">Mozilla Public License 2.0</a>'
footer_content: 'Copyright &copy; 2019-2021 <a href="https://danitso.com/" target="_blank">Danitso</a> - Distributed under the <a href="https://github.com/danitso/terraform-provider-proxmox/blob/master/LICENSE" target="_blank">Mozilla Public License 2.0</a><br>Copyright &copy; 2021-2022 <a href="https://github.com/bpg/" target="_blank">Pavel Boldyrev</a> - Distributed under the <a href="https://github.com/bpg/terraform-provider-proxmox/blob/main/LICENSE" target="_blank">Mozilla Public License 2.0</a>'
heading_anchors: true
search_enabled: false

View File

@ -13,7 +13,7 @@ Retrieves information about a specific alias.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_cluster_alias" "local_network" {
name = "local_network"
}

View File

@ -13,7 +13,7 @@ Retrieves the identifiers for all the available aliases.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_cluster_aliases" "available_aliases" {}
```

View File

@ -13,7 +13,7 @@ Retrieves information about all the datastores available to a specific node.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_datastores" "first_node" {
node_name = "first-node"
}

View File

@ -13,7 +13,7 @@ Retrieves the DNS configuration for a specific node.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_dns" "first_node" {
node_name = "first-node"
}

View File

@ -13,7 +13,7 @@ Retrieves information about a specific user group.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_group" "operations_team" {
group_id = "operations-team"
}

View File

@ -13,7 +13,7 @@ Retrieves basic information about all available user groups.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_groups" "available_groups" {}
```

View File

@ -13,7 +13,7 @@ Retrieves all the host entries from a specific node.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_hosts" "first_node_host_entries" {
node_name = "first-node"
}

View File

@ -13,7 +13,7 @@ Retrieves information about all available nodes.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_nodes" "available_nodes" {}
```

View File

@ -13,7 +13,7 @@ Retrieves information about a specific resource pool.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_pool" "operations_pool" {
pool_id = "operations"
}

View File

@ -13,7 +13,7 @@ Retrieves the identifiers for all the available resource pools.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_pools" "available_pools" {}
```

View File

@ -13,7 +13,7 @@ Retrieves information about a specific role.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_role" "operations_role" {
role_id = "operations"
}

View File

@ -13,7 +13,7 @@ Retrieves information about all the available roles.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_roles" "available_roles" {}
```

View File

@ -13,7 +13,7 @@ Retrieves the current time for a specific node.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_time" "first_node_time" {
node_name = "first-node"
}

View File

@ -13,7 +13,7 @@ Retrieves information about a specific user.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_user" "operations_user" {
user_id = "operation@pam"
}

View File

@ -13,7 +13,7 @@ Retrieves information about all the available users.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_users" "available_users" {}
```

View File

@ -13,7 +13,7 @@ Retrieves the version information from the API endpoint.
## Example Usage
```
```terraform
data "proxmox_virtual_environment_version" "current_version" {}
```

View File

@ -12,7 +12,7 @@ Use the navigation to the left to read about the available resources.
## Example Usage
```
```terraform
provider "proxmox" {
virtual_environment {
endpoint = "https://10.0.0.2"
@ -36,7 +36,7 @@ The Proxmox provider offers a flexible means of providing credentials for authen
Static credentials can be provided by adding a `username` and `password` in-line in the Proxmox provider block:
```
```terraform
provider "proxmox" {
virtual_environment {
username = "username@realm"

View File

@ -13,11 +13,11 @@ Manages the custom SSL/TLS certificate for a specific node.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_certificate" "example" {
certificate = "${tls_self_signed_cert.proxmox_virtual_environment_certificate.cert_pem}"
certificate = tls_self_signed_cert.proxmox_virtual_environment_certificate.cert_pem
node_name = "first-node"
private_key = "${tls_private_key.proxmox_virtual_environment_certificate.private_key_pem}"
private_key = tls_private_key.proxmox_virtual_environment_certificate.private_key_pem
}
resource "tls_private_key" "proxmox_virtual_environment_certificate" {
@ -26,8 +26,8 @@ resource "tls_private_key" "proxmox_virtual_environment_certificate" {
}
resource "tls_self_signed_cert" "proxmox_virtual_environment_certificate" {
key_algorithm = "${tls_private_key.proxmox_virtual_environment_certificate.algorithm}"
private_key_pem = "${tls_private_key.proxmox_virtual_environment_certificate.private_key_pem}"
key_algorithm = tls_private_key.proxmox_virtual_environment_certificate.algorithm
private_key_pem = tls_private_key.proxmox_virtual_environment_certificate.private_key_pem
subject {
common_name = "example.com"

View File

@ -14,7 +14,7 @@ We can create aliases to identify an IP address or a network.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_cluster_alias" "local_network" {
name = "local_network"
cidr = "192.168.0.0/23"

View File

@ -13,7 +13,7 @@ An IPSet allows us to group multiple IP addresses, IP subnets and aliases.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_cluster_ipset" "ipset" {
name = "local_network"
comment = "Managed by Terraform"

View File

@ -13,7 +13,7 @@ Manages a container.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_container" "ubuntu_container" {
description = "Managed by Terraform"
@ -30,8 +30,8 @@ resource "proxmox_virtual_environment_container" "ubuntu_container" {
}
user_account {
keys = ["${trimspace(tls_private_key.ubuntu_container_key.public_key_openssh)}"]
password = "${random_password.ubuntu_container_password.result}"
keys = [trimspace(tls_private_key.ubuntu_container_key.public_key_openssh)]
password = random_password.ubuntu_container_password.result
}
}
@ -40,7 +40,7 @@ resource "proxmox_virtual_environment_container" "ubuntu_container" {
}
operating_system {
template_file_id = "${proxmox_virtual_environment_file.ubuntu_container_template.id}"
template_file_id = proxmox_virtual_environment_file.ubuntu_container_template.id
type = "ubuntu"
}
}
@ -51,7 +51,7 @@ resource "proxmox_virtual_environment_file" "ubuntu_container_template" {
node_name = "first-node"
source_file {
path = "http://download.proxmox.com/images/system/ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz"
path = "http://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz"
}
}
@ -67,17 +67,17 @@ resource "tls_private_key" "ubuntu_container_key" {
}
output "ubuntu_container_password" {
value = "${random_password.ubuntu_container_password.result}"
value = random_password.ubuntu_container_password.result
sensitive = true
}
output "ubuntu_container_private_key" {
value = "${tls_private_key.ubuntu_container_key.private_key_pem}"
value = tls_private_key.ubuntu_container_key.private_key_pem
sensitive = true
}
output "ubuntu_container_public_key" {
value = "${tls_private_key.ubuntu_container_key.public_key_openssh}"
value = tls_private_key.ubuntu_container_key.public_key_openssh
}
```

View File

@ -13,10 +13,10 @@ Manages the DNS configuration for a specific node.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_dns" "first_node_dns_configuration" {
domain = "${data.proxmox_virtual_environment_dns.first_node_dns_configuration.domain}"
node_name = "${data.proxmox_virtual_environment_dns.first_node_dns_configuration.node_name}"
domain = data.proxmox_virtual_environment_dns.first_node_dns_configuration.domain
node_name = data.proxmox_virtual_environment_dns.first_node_dns_configuration.node_name
servers = [
"1.1.1.1",

View File

@ -13,14 +13,45 @@ Manages a file.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_file" "ubuntu_container_template" {
content_type = "vztmpl"
datastore_id = "local"
node_name = "first-node"
source_file {
path = "http://download.proxmox.com/images/system/ubuntu-18.04-standard_18.04.1-1_amd64.tar.gz"
path = "https://download.proxmox.com/images/system/ubuntu-20.04-standard_20.04-1_amd64.tar.gz"
}
}
```
```terraform
resource "proxmox_virtual_environment_file" "cloud_config" {
content_type = "snippets"
datastore_id = "local"
node_name = "pve"
source_raw {
data = <<EOF
#cloud-config
chpasswd:
list: |
ubuntu:example
expire: false
hostname: example-hostname
packages:
- qemu-guest-agent
users:
- default
- name: ubuntu
groups: sudo
shell: /bin/bash
ssh-authorized-keys:
- ${trimspace(tls_private_key.example.public_key_openssh)}
sudo: ALL=(ALL) NOPASSWD:ALL
EOF
file_name = "example.cloud-config.yaml"
}
}
```
@ -53,6 +84,8 @@ resource "proxmox_virtual_environment_file" "ubuntu_container_template" {
## Important 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.
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).
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).

View File

@ -13,7 +13,7 @@ Manages a user group.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_group" "operations_team" {
comment = "Managed by Terraform"
group_id = "operations-team"

View File

@ -13,7 +13,7 @@ Manages the host entries on a specific node.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_hosts" "first_node_host_entries" {
node_name = "first-node"

View File

@ -13,7 +13,7 @@ Manages a resource pool.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_pool" "operations_pool" {
comment = "Managed by Terraform"
pool_id = "operations-pool"

View File

@ -13,7 +13,7 @@ Manages a role.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_role" "operations_monitoring" {
role_id = "operations-monitoring"

View File

@ -13,7 +13,7 @@ Manages the time for a specific node.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_time" "first_node_time" {
node_name = "first-node"
time_zone = "UTC"

View File

@ -13,12 +13,12 @@ Manages a user.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_user" "operations_automation" {
acl {
path = "/vms/1234"
propagate = true
role_id = "${proxmox_virtual_environment_role.operations_monitoring.role_id}"
role_id = proxmox_virtual_environment_role.operations_monitoring.role_id
}
comment = "Managed by Terraform"

View File

@ -13,7 +13,7 @@ Manages a virtual machine.
## Example Usage
```
```terraform
resource "proxmox_virtual_environment_vm" "ubuntu_vm" {
name = "terraform-provider-proxmox-ubuntu-vm"
description = "Managed by Terraform"
@ -27,7 +27,7 @@ resource "proxmox_virtual_environment_vm" "ubuntu_vm" {
disk {
datastore_id = "local-lvm"
file_id = "${proxmox_virtual_environment_file.ubuntu_cloud_image.id}"
file_id = proxmox_virtual_environment_file.ubuntu_cloud_image.id
interface = "scsi0"
}
@ -39,15 +39,17 @@ resource "proxmox_virtual_environment_vm" "ubuntu_vm" {
}
user_account {
keys = ["${trimspace(tls_private_key.ubuntu_vm_key.public_key_openssh)}"]
password = "${random_password.ubuntu_vm_password.result}"
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}"
user_data_file_id = proxmox_virtual_environment_file.cloud_config.id
}
network_device {}
network_device {
bridge = "vmbr0"
}
operating_system {
type = "l26"
@ -62,7 +64,7 @@ resource "proxmox_virtual_environment_file" "ubuntu_cloud_image" {
node_name = "first-node"
source_file {
path = "https://cloud-images.ubuntu.com/bionic/current/bionic-server-cloudimg-amd64.img"
path = "http://cloud-images.ubuntu.com/focal/current/focal-server-cloudimg-amd64.img"
}
}
@ -78,17 +80,17 @@ resource "tls_private_key" "ubuntu_vm_key" {
}
output "ubuntu_vm_password" {
value = "${random_password.ubuntu_vm_password.result}"
value = random_password.ubuntu_vm_password.result
sensitive = true
}
output "ubuntu_vm_private_key" {
value = "${tls_private_key.ubuntu_vm_key.private_key_pem}"
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}"
value = tls_private_key.ubuntu_vm_key.public_key_openssh
}
```
@ -97,7 +99,8 @@ output "ubuntu_vm_public_key" {
* `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`).
* `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.
@ -119,7 +122,8 @@ output "ubuntu_vm_public_key" {
* `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.
* `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`).
@ -131,7 +135,8 @@ output "ubuntu_vm_public_key" {
* `+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).
* `+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.
@ -143,7 +148,8 @@ output "ubuntu_vm_public_key" {
* `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).
* `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).
@ -180,7 +186,8 @@ output "ubuntu_vm_public_key" {
* `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).
* `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.
@ -189,7 +196,8 @@ output "ubuntu_vm_public_key" {
* `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.
* `datastore_id` - (Optional) The identifier for the datastore to create the cloud-init disk in (defaults to `local-lvm`).
* `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.
@ -204,7 +212,8 @@ output "ubuntu_vm_public_key" {
* `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`).
* `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.
@ -298,11 +307,16 @@ output "ubuntu_vm_public_key" {
## 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`)
* `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.
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.