mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-06-30 02:31:10 +00:00
feat(docs): add initial mini-howtos for VM (#730)
* chore(docs): minor fixes and linting Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> * chore(docs): add VM mini-howtos with examples Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> * address peer-review feedback Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> * vscode settings Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com> --------- Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
parent
9016641c34
commit
e2717a9a9e
4
.markdownlint.json
Normal file
4
.markdownlint.json
Normal file
@ -0,0 +1,4 @@
|
||||
{
|
||||
"MD013": false,
|
||||
"MD025": false
|
||||
}
|
13
.vscode/launch.json
vendored
Normal file
13
.vscode/launch.json
vendored
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"version": "0.2.0",
|
||||
"configurations": [
|
||||
{
|
||||
"name": "Debug provider",
|
||||
"type": "go",
|
||||
"request": "launch",
|
||||
"mode": "auto",
|
||||
"program": "./",
|
||||
"args": ["-debug"]
|
||||
}
|
||||
]
|
||||
}
|
9
.vscode/settings.json
vendored
9
.vscode/settings.json
vendored
@ -1,3 +1,8 @@
|
||||
{
|
||||
"git.alwaysSignOff": true
|
||||
}
|
||||
"git.alwaysSignOff": true,
|
||||
"cSpell.words": [
|
||||
"iothread",
|
||||
"qcow",
|
||||
"virtio"
|
||||
]
|
||||
}
|
||||
|
@ -50,7 +50,7 @@ Please use lowercase for the description and do not end it with a period.
|
||||
|
||||
For example:
|
||||
|
||||
```
|
||||
```commit
|
||||
feat(vm): add support for the `clone` operation
|
||||
```
|
||||
|
||||
@ -61,7 +61,7 @@ it [here](https://developercertificate.org).
|
||||
Accepting is accomplished by signing off on your commits, you can do this by
|
||||
adding a `Signed-off-by` line to your commit message, like here:
|
||||
|
||||
```
|
||||
```commit
|
||||
feat(vm): add support for the `clone` operation
|
||||
|
||||
Signed-off-by: Random Developer <random@developer.example.org>
|
||||
@ -69,7 +69,7 @@ Signed-off-by: Random Developer <random@developer.example.org>
|
||||
|
||||
Git has a built-in flag to append this line automatically:
|
||||
|
||||
```
|
||||
```shell
|
||||
> git commit -s -m 'feat(vm): add a cool new feature'
|
||||
```
|
||||
|
||||
@ -89,7 +89,7 @@ well.
|
||||
## Releasing
|
||||
|
||||
We use automated release management orchestrated
|
||||
by https://github.com/googleapis/release-please GitHub Action. The action
|
||||
by [release-please](https://github.com/googleapis/release-please) GitHub Action. The action
|
||||
creates a new release PR with the changelog and bumps the version based on the
|
||||
commit messages. The release PR is merged by the maintainers.
|
||||
|
||||
|
@ -21,14 +21,14 @@ data "proxmox_virtual_environment_vms" "ubuntu_vms" {
|
||||
|
||||
## Argument Reference
|
||||
|
||||
- `node_name` - (Optional) The node name.
|
||||
- `node_name` - (Optional) The node name.
|
||||
- `tags` - (Optional) A list of tags to filter the VMs. The VM must have all
|
||||
the tags to be included in the result.
|
||||
|
||||
## Attribute Reference
|
||||
|
||||
- `vms` - The VMs list.
|
||||
- `name` - The virtual machine name.
|
||||
- `node_name` - The node name.
|
||||
- `tags` - A list of tags of the VM.
|
||||
- `vm_id` - The VM identifier.
|
||||
- `name` - The virtual machine name.
|
||||
- `node_name` - The node name.
|
||||
- `tags` - A list of tags of the VM.
|
||||
- `vm_id` - The VM identifier.
|
||||
|
@ -155,18 +155,9 @@ provider "proxmox" {
|
||||
}
|
||||
```
|
||||
|
||||
> Note1: The `username` field in the `ssh` block is required when using API
|
||||
> Token authentication. This is because the provider needs to know which user to
|
||||
> use for the SSH connection.
|
||||
-> **Note:** The `username` field in the `ssh` block is required when using API Token authentication. This is because the provider needs to know which user to use for the SSH connection.
|
||||
|
||||
> Note2: Not all Proxmox API operations are supported via API Token. You may see
|
||||
> errors like
|
||||
`error creating container: received an HTTP 403 response - Reason: Permission check
|
||||
failed (changing feature flags for privileged container is only allowed for root@pam)`
|
||||
> or
|
||||
`error creating VM: received an HTTP 500 response - Reason: only root can set 'arch' config`
|
||||
> when using API Token authentication, even when `Administrator` role or
|
||||
> the `root@pam` user is used with the token.
|
||||
-> **Note:** Not all Proxmox API operations are supported via API Token. You may see errors like `error creating container: received an HTTP 403 response - Reason: Permission check failed (changing feature flags for privileged container is only allowed for root@pam)` or `error creating VM: received an HTTP 500 response - Reason: only root can set 'arch' config` when using API Token authentication, even when `Administrator` role or the `root@pam` user is used with the token.
|
||||
|
||||
### Temporary directory
|
||||
|
||||
@ -203,21 +194,21 @@ Proxmox `provider` block:
|
||||
example, `root@pam!for-terraform-provider=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx`.
|
||||
- `ssh` - (Optional) The SSH connection configuration to a Proxmox node. This is
|
||||
a block, whose fields are documented below.
|
||||
- `username` - (Optional) The username to use for the SSH connection.
|
||||
- `username` - (Optional) The username to use for the SSH connection.
|
||||
Defaults to the username used for the Proxmox API connection. Can also be
|
||||
sourced from `PROXMOX_VE_SSH_USERNAME`. Required when using API Token.
|
||||
- `password` - (Optional) The password to use for the SSH connection.
|
||||
- `password` - (Optional) The password to use for the SSH connection.
|
||||
Defaults to the password used for the Proxmox API connection. Can also be
|
||||
sourced from `PROXMOX_VE_SSH_PASSWORD`.
|
||||
- `agent` - (Optional) Whether to use the SSH agent for the SSH
|
||||
- `agent` - (Optional) Whether to use the SSH agent for the SSH
|
||||
authentication. Defaults to `false`. Can also be sourced
|
||||
from `PROXMOX_VE_SSH_AGENT`.
|
||||
- `agent_socket` - (Optional) The path to the SSH agent socket.
|
||||
- `agent_socket` - (Optional) The path to the SSH agent socket.
|
||||
Defaults to the value of the `SSH_AUTH_SOCK` environment variable. Can
|
||||
also be sourced from `PROXMOX_VE_SSH_AUTH_SOCK`.
|
||||
- `node` - (Optional) The node configuration for the SSH connection. Can be
|
||||
- `node` - (Optional) The node configuration for the SSH connection. Can be
|
||||
specified multiple times to provide configuration fo multiple nodes.
|
||||
- `name` - (Required) The name of the node.
|
||||
- `address` - (Required) The IP address of the node.
|
||||
- `port` - (Optional) SSH port of the node. Defaults to 22.
|
||||
- `tmp_dir` - (Optional) Use custom temporary directory. (can also be sourced from `PROXMOX_VE_TMPDIR`)
|
||||
- `name` - (Required) The name of the node.
|
||||
- `address` - (Required) The IP address of the node.
|
||||
- `port` - (Optional) SSH port of the node. Defaults to 22.
|
||||
- `tmp_dir` - (Optional) Use custom temporary directory. (can also be sourced from `PROXMOX_VE_TMPDIR`)
|
||||
|
@ -35,10 +35,10 @@ resource "proxmox_virtual_environment_cluster_firewall" "example" {
|
||||
- `input_policy` - (Optional) The default input policy (`ACCEPT`, `DROP`, `REJECT`).
|
||||
- `output_policy` - (Optional) The default output policy (`ACCEPT`, `DROP`, `REJECT`).
|
||||
- `log_ratelimit` - (Optional) The log rate limit.
|
||||
- `enabled` - (Optional) Enable or disable the log rate limit.
|
||||
- `burst` - (Optional) Initial burst of packages which will always get
|
||||
- `enabled` - (Optional) Enable or disable the log rate limit.
|
||||
- `burst` - (Optional) Initial burst of packages which will always get
|
||||
logged before the rate is applied (defaults to `5`).
|
||||
- `rate` - (Optional) Frequency with which the burst bucket gets refilled (defaults to `1/second`).
|
||||
- `rate` - (Optional) Frequency with which the burst bucket gets refilled (defaults to `1/second`).
|
||||
|
||||
## Attribute Reference
|
||||
|
||||
@ -53,5 +53,5 @@ Be careful not to use this resource multiple times for the same node.
|
||||
Instances can be imported without an ID, but you still need to pass one, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_cluster_firewall.example example
|
||||
terraform import proxmox_virtual_environment_cluster_firewall.example example
|
||||
```
|
||||
|
@ -47,35 +47,35 @@ resource "proxmox_virtual_environment_cluster_firewall_security_group" "webserve
|
||||
- `name` - (Required) Security group name.
|
||||
- `comment` - (Optional) Security group comment.
|
||||
- `rule` - (Optional) Firewall rule block (multiple blocks supported).
|
||||
- `action` - (Required) Rule action (`ACCEPT`, `DROP`, `REJECT`).
|
||||
- `type` - (Required) Rule type (`in`, `out`).
|
||||
- `comment` - (Optional) Rule comment.
|
||||
- `dest` - (Optional) Restrict packet destination address. This can refer to
|
||||
- `action` - (Required) Rule action (`ACCEPT`, `DROP`, `REJECT`).
|
||||
- `type` - (Required) Rule type (`in`, `out`).
|
||||
- `comment` - (Optional) Rule comment.
|
||||
- `dest` - (Optional) Restrict packet destination address. This can refer to
|
||||
a single IP address, an IP set ('+ipsetname') or an IP alias definition.
|
||||
You can also specify an address range like `20.34.101.207-201.3.9.99`, or
|
||||
a list of IP addresses and networks (entries are separated by comma).
|
||||
Please do not mix IPv4 and IPv6 addresses inside such lists.
|
||||
- `dport` - (Optional) Restrict TCP/UDP destination port. You can use
|
||||
- `dport` - (Optional) Restrict TCP/UDP destination port. You can use
|
||||
service names or simple numbers (0-65535), as defined in '/etc/services'.
|
||||
Port ranges can be specified with '\d+:\d+', for example `80:85`, and
|
||||
you can use comma separated list to match several ports or ranges.
|
||||
- `enable` - (Optional) Enable this rule. Defaults to `true`.
|
||||
- `iface` - (Optional) Network interface name. You have to use network
|
||||
- `enable` - (Optional) Enable this rule. Defaults to `true`.
|
||||
- `iface` - (Optional) Network interface name. You have to use network
|
||||
configuration key names for VMs and containers ('net\d+'). Host related
|
||||
rules can use arbitrary strings.
|
||||
- `log` - (Optional) Log level for this rule (`emerg`, `alert`, `crit`,
|
||||
- `log` - (Optional) Log level for this rule (`emerg`, `alert`, `crit`,
|
||||
`err`, `warning`, `notice`, `info`, `debug`, `nolog`).
|
||||
- `macro`- (Optional) Macro name. Use predefined standard macro
|
||||
from https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions
|
||||
- `proto` - (Optional) Restrict packet protocol. You can use protocol names
|
||||
- `macro`- (Optional) Macro name. Use predefined standard macro
|
||||
from <https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions>
|
||||
- `proto` - (Optional) Restrict packet protocol. You can use protocol names
|
||||
as defined in '/etc/protocols'.
|
||||
- `source` - (Optional) Restrict packet source address. This can refer
|
||||
- `source` - (Optional) Restrict packet source address. This can refer
|
||||
to a single IP address, an IP set ('+ipsetname') or an IP alias
|
||||
definition. You can also specify an address range like
|
||||
`20.34.101.207-201.3.9.99`, or a list of IP addresses and networks (
|
||||
entries are separated by comma). Please do not mix IPv4 and IPv6 addresses
|
||||
inside such lists.
|
||||
- `sport` - (Optional) Restrict TCP/UDP source port. You can use
|
||||
- `sport` - (Optional) Restrict TCP/UDP source port. You can use
|
||||
service names or simple numbers (0-65535), as defined in '/etc/services'.
|
||||
Port ranges can be specified with '\d+:\d+', for example `80:85`, and
|
||||
you can use comma separated list to match several ports or ranges.
|
||||
@ -83,7 +83,7 @@ resource "proxmox_virtual_environment_cluster_firewall_security_group" "webserve
|
||||
## Attribute Reference
|
||||
|
||||
- `rule`
|
||||
- `pos` - Position of the rule in the list.
|
||||
- `pos` - Position of the rule in the list.
|
||||
|
||||
There are no attribute references available for this resource.
|
||||
|
||||
@ -92,5 +92,5 @@ There are no attribute references available for this resource.
|
||||
Instances can be imported using the `name`, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_cluster_firewall_security_group.webserver webserver
|
||||
terraform import proxmox_virtual_environment_cluster_firewall_security_group.webserver webserver
|
||||
```
|
||||
|
@ -92,100 +92,100 @@ output "ubuntu_container_public_key" {
|
||||
## Argument Reference
|
||||
|
||||
- `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
|
||||
- `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).
|
||||
- `vm_id` - (Required) The identifier for the source container.
|
||||
- `vm_id` - (Required) The identifier for the source container.
|
||||
- `console` - (Optional) The console configuration.
|
||||
- `enabled` - (Optional) Whether to enable the console device (defaults
|
||||
- `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`).
|
||||
- `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`).
|
||||
- `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) The disk configuration.
|
||||
- `datastore_id` - (Optional) The identifier for the datastore to create the
|
||||
- `datastore_id` - (Optional) The identifier for the datastore to create the
|
||||
disk in (defaults to `local`).
|
||||
-`size` - (Optional) The size of the root filesystem in gigabytes (
|
||||
defaults to `4`). Requires `datastore_id` to be set.
|
||||
- `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
|
||||
- `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
|
||||
- `ipv4` - (Optional) The IPv4 configuration.
|
||||
- `address` - (Optional) The IPv4 address (use `dhcp` for
|
||||
autodiscovery).
|
||||
- `gateway` - (Optional) The IPv4 gateway (must be omitted
|
||||
- `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
|
||||
- `ipv6` - (Optional) The IPv4 configuration.
|
||||
- `address` - (Optional) The IPv6 address (use `dhcp` for
|
||||
autodiscovery).
|
||||
- `gateway` - (Optional) The IPv6 gateway (must be omitted
|
||||
- `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.
|
||||
- `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
|
||||
- `dedicated` - (Optional) The dedicated memory in megabytes (defaults
|
||||
to `512`).
|
||||
- `swap` - (Optional) The swap size in megabytes (defaults to `0`).
|
||||
- `swap` - (Optional) The swap size in megabytes (defaults to `0`).
|
||||
- `mount_point`
|
||||
- `acl` (Optional) Explicitly enable or disable ACL support.
|
||||
- `backup` (Optional) Whether to include the mount point in backups (only
|
||||
- `acl` (Optional) Explicitly enable or disable ACL support.
|
||||
- `backup` (Optional) Whether to include the mount point in backups (only
|
||||
used for volume mount points).
|
||||
- `mount_options` (Optional) List of extra mount options.
|
||||
- `path` (Required) Path to the mount point as seen from inside the
|
||||
- `mount_options` (Optional) List of extra mount options.
|
||||
- `path` (Required) Path to the mount point as seen from inside the
|
||||
container.
|
||||
- `quota` (Optional) Enable user quotas inside the container (not supported
|
||||
- `quota` (Optional) Enable user quotas inside the container (not supported
|
||||
with ZFS subvolumes).
|
||||
- `read_only` (Optional) Read-only mount point.
|
||||
- `replicate` (Optional) Will include this volume to a storage replica job.
|
||||
- `shared` (Optional) Mark this non-volume mount point as available on all
|
||||
- `read_only` (Optional) Read-only mount point.
|
||||
- `replicate` (Optional) Will include this volume to a storage replica job.
|
||||
- `shared` (Optional) Mark this non-volume mount point as available on all
|
||||
nodes.
|
||||
- `size` (Optional) Volume size (only for ZFS storage backed mount points).
|
||||
- `size` (Optional) Volume size (only for ZFS storage backed mount points).
|
||||
Can be specified with a unit suffix (e.g. `10G`).
|
||||
- `volume` (Required) Volume, device or directory to mount into the
|
||||
- `volume` (Required) Volume, device or directory to mount into the
|
||||
container.
|
||||
- `network_interface` - (Optional) A network interface (multiple blocks
|
||||
supported).
|
||||
- `bridge` - (Optional) The name of the network bridge (defaults
|
||||
- `bridge` - (Optional) The name of the network bridge (defaults
|
||||
to `vmbr0`).
|
||||
- `enabled` - (Optional) Whether to enable the network device (defaults
|
||||
- `enabled` - (Optional) Whether to enable the network device (defaults
|
||||
to `true`).
|
||||
- `firewall` - (Optional) Whether this interface's firewall rules should be
|
||||
- `firewall` - (Optional) Whether this interface's firewall rules should be
|
||||
used (defaults to `false`).
|
||||
- `mac_address` - (Optional) The MAC address.
|
||||
- `mtu` - (Optional) Maximum transfer unit of the interface. Cannot be
|
||||
- `mac_address` - (Optional) The MAC address.
|
||||
- `mtu` - (Optional) Maximum transfer unit of the interface. Cannot be
|
||||
larger than the bridge's MTU.
|
||||
- `name` - (Required) The network interface name.
|
||||
- `rate_limit` - (Optional) The rate limit in megabytes per second.
|
||||
- `vlan_id` - (Optional) The VLAN identifier.
|
||||
- `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 identifier for 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.
|
||||
- `template_file_id` - (Required) The identifier for 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 identifier for a pool to assign the container to.
|
||||
- `started` - (Optional) Whether to start the container (defaults to `true`).
|
||||
- `start_on_boot` - (Optional) Automatically start container when the host system boots (defaults to `true`).
|
||||
@ -199,11 +199,11 @@ output "ubuntu_container_public_key" {
|
||||
the host (defaults to `false`).
|
||||
- `vm_id` - (Optional) The container identifier
|
||||
- `features` - (Optional) The container features
|
||||
- `nesting` - (Optional) Whether the container is nested (defaults
|
||||
- `nesting` - (Optional) Whether the container is nested (defaults
|
||||
to `false`)
|
||||
- `fuse` - (Optional) Whether the container supports FUSE mounts (defaults
|
||||
- `fuse` - (Optional) Whether the container supports FUSE mounts (defaults
|
||||
to `false`)
|
||||
- `keyctl` - (Optional) Whether the container supports `keyctl()` system
|
||||
- `keyctl` - (Optional) Whether the container supports `keyctl()` system
|
||||
call (defaults to `false`)
|
||||
|
||||
## Attribute Reference
|
||||
@ -215,5 +215,5 @@ There are no additional attributes available for this resource.
|
||||
Instances can be imported using the `node_name` and the `vm_id`, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_container.ubuntu_container first-node/1234
|
||||
terraform import proxmox_virtual_environment_container.ubuntu_container first-node/1234
|
||||
```
|
||||
|
@ -48,5 +48,5 @@ Be careful not to use this resource multiple times for the same node.
|
||||
Instances can be imported using the `node_name`, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_dns.first_node first-node
|
||||
terraform import proxmox_virtual_environment_dns.first_node first-node
|
||||
```
|
||||
|
@ -94,15 +94,14 @@ resource "proxmox_virtual_environment_file" "ubuntu_container_template" {
|
||||
}
|
||||
```
|
||||
|
||||
|
||||
## Argument Reference
|
||||
|
||||
- `content_type` - (Optional) The content type. If not specified, the content type will be inferred from the file
|
||||
extension. Valid values are:
|
||||
- `dump` (allowed extensions: `.vzdump`)
|
||||
- `iso` (allowed extensions: `.iso`, `.img`)
|
||||
- `snippets` (allowed extensions: any)
|
||||
- `vztmpl` (allowed extensions: `.tar.gz`, `.tar.xz`, `tar.zst`)
|
||||
- `dump` (allowed extensions: `.vzdump`)
|
||||
- `iso` (allowed extensions: `.iso`, `.img`)
|
||||
- `snippets` (allowed extensions: any)
|
||||
- `vztmpl` (allowed extensions: `.tar.gz`, `.tar.xz`, `tar.zst`)
|
||||
- `datastore_id` - (Required) The datastore id.
|
||||
- `node_name` - (Required) The node name.
|
||||
- `overwrite` - (Optional) Whether to overwrite an existing file (defaults to
|
||||
@ -110,17 +109,17 @@ resource "proxmox_virtual_environment_file" "ubuntu_container_template" {
|
||||
- `source_file` - (Optional) The source file (conflicts with `source_raw`), could be a
|
||||
local file or a URL. If the source file is a URL, the file will be downloaded
|
||||
and stored locally before uploading it to Proxmox VE.
|
||||
- `checksum` - (Optional) The SHA256 checksum of the source file.
|
||||
- `file_name` - (Optional) The file name to use instead of the source file
|
||||
name. Useful when the source file does not have a valid file extension, for example
|
||||
- `checksum` - (Optional) The SHA256 checksum of the source file.
|
||||
- `file_name` - (Optional) The file name to use instead of the source file
|
||||
name. Useful when the source file does not have a valid file extension, for example
|
||||
when the source file is a URL referencing a `.qcow2` image.
|
||||
- `insecure` - (Optional) Whether to skip the TLS verification step for
|
||||
- `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.
|
||||
- `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.
|
||||
- `data` - (Required) The raw data.
|
||||
- `file_name` - (Required) The file name.
|
||||
- `resize` - (Optional) The number of bytes to resize the file to.
|
||||
- `timeout_upload` - (Optional) Timeout for uploading ISO/VSTMPL files in
|
||||
seconds (defaults to 1800).
|
||||
|
||||
@ -158,5 +157,5 @@ node_name:datastore_id/content_type/file_name
|
||||
Example:
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_file.cloud_config pve/local:snippets/example.cloud-config.yaml
|
||||
terraform import proxmox_virtual_environment_file.cloud_config pve/local:snippets/example.cloud-config.yaml
|
||||
```
|
||||
|
@ -50,9 +50,9 @@ resource "proxmox_virtual_environment_firewall_ipset" "ipset" {
|
||||
- `name` - (Required) IPSet name.
|
||||
- `comment` - (Optional) IPSet comment.
|
||||
- `cidr` - (Optional) IP/CIDR block (multiple blocks supported).
|
||||
- `name` - Network/IP specification in CIDR format.
|
||||
- `comment` - (Optional) Arbitrary string annotation.
|
||||
- `nomatch` - (Optional) Entries marked as `nomatch` are skipped as if those
|
||||
- `name` - Network/IP specification in CIDR format.
|
||||
- `comment` - (Optional) Arbitrary string annotation.
|
||||
- `nomatch` - (Optional) Entries marked as `nomatch` are skipped as if those
|
||||
were not added to the set.
|
||||
|
||||
## Attribute Reference
|
||||
|
@ -41,7 +41,7 @@ resource "proxmox_virtual_environment_firewall_options" "example" {
|
||||
- `dhcp` - (Optional)Enable DHCP.
|
||||
- `enabled` - (Optional) Enable or disable the firewall.
|
||||
- `ipfilter` - (Optional) Enable default IP filters. This is equivalent to
|
||||
adding an empty ipfilter-net<id> ipset for every interface. Such ipsets
|
||||
adding an empty `ipfilter-net<id>` ipset for every interface. Such ipsets
|
||||
implicitly contain sane default restrictions such as restricting IPv6 link
|
||||
local addresses to the one derived from the interface's MAC address. For
|
||||
containers the configured IP addresses will be implicitly added.
|
||||
|
@ -62,51 +62,51 @@ resource "proxmox_virtual_environment_firewall_rules" "inbound" {
|
||||
rules.
|
||||
- `rule` - (Optional) Firewall rule block (multiple blocks supported).
|
||||
The provider supports two types of the `rule` blocks:
|
||||
- a rule definition block, which includes the following arguments:
|
||||
- `action` - (Required) Rule action (`ACCEPT`, `DROP`, `REJECT`).
|
||||
- `type` - (Required) Rule type (`in`, `out`).
|
||||
- `comment` - (Optional) Rule comment.
|
||||
- `dest` - (Optional) Restrict packet destination address. This can
|
||||
- a rule definition block, which includes the following arguments:
|
||||
- `action` - (Required) Rule action (`ACCEPT`, `DROP`, `REJECT`).
|
||||
- `type` - (Required) Rule type (`in`, `out`).
|
||||
- `comment` - (Optional) Rule comment.
|
||||
- `dest` - (Optional) Restrict packet destination address. This can
|
||||
refer to a single IP address, an IP set ('+ipsetname') or an IP alias
|
||||
definition. You can also specify an address range
|
||||
like `20.34.101.207-201.3.9.99`, or a list of IP addresses and
|
||||
networks (entries are separated by comma). Please do not mix IPv4 and
|
||||
IPv6 addresses inside such lists.
|
||||
- `dport` - (Optional) Restrict TCP/UDP destination port. You can use
|
||||
- `dport` - (Optional) Restrict TCP/UDP destination port. You can use
|
||||
service names or simple numbers (0-65535), as defined
|
||||
in `/etc/services`. Port ranges can be specified with '\d+:\d+', for
|
||||
example `80:85`, and you can use comma separated list to match several
|
||||
ports or ranges.
|
||||
- `enabled` - (Optional) Enable this rule. Defaults to `true`.
|
||||
- `iface` - (Optional) Network interface name. You have to use network
|
||||
- `enabled` - (Optional) Enable this rule. Defaults to `true`.
|
||||
- `iface` - (Optional) Network interface name. You have to use network
|
||||
configuration key names for VMs and containers ('net\d+'). Host
|
||||
related rules can use arbitrary strings.
|
||||
- `log` - (Optional) Log level for this rule (`emerg`, `alert`, `crit`,
|
||||
- `log` - (Optional) Log level for this rule (`emerg`, `alert`, `crit`,
|
||||
`err`, `warning`, `notice`, `info`, `debug`, `nolog`).
|
||||
- `macro`- (Optional) Macro name. Use predefined standard macro
|
||||
from https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions
|
||||
- `proto` - (Optional) Restrict packet protocol. You can use protocol
|
||||
- `macro`- (Optional) Macro name. Use predefined standard macro
|
||||
from <https://pve.proxmox.com/pve-docs/pve-admin-guide.html#_firewall_macro_definitions>
|
||||
- `proto` - (Optional) Restrict packet protocol. You can use protocol
|
||||
names as defined in '/etc/protocols'.
|
||||
- `source` - (Optional) Restrict packet source address. This can refer
|
||||
- `source` - (Optional) Restrict packet source address. This can refer
|
||||
to a single IP address, an IP set ('+ipsetname') or an IP alias
|
||||
definition. You can also specify an address range
|
||||
like `20.34.101.207-201.3.9.99`, or a list of IP addresses and
|
||||
networks (entries are separated by comma). Please do not mix IPv4 and
|
||||
IPv6 addresses inside such lists.
|
||||
- `sport` - (Optional) Restrict TCP/UDP source port. You can use
|
||||
- `sport` - (Optional) Restrict TCP/UDP source port. You can use
|
||||
service names or simple numbers (0-65535), as defined
|
||||
in `/etc/services`. Port ranges can be specified with '\d+:\d+', for
|
||||
example `80:85`, and you can use comma separated list to match several
|
||||
ports or ranges.
|
||||
- a security group insertion block, which includes the following arguments:
|
||||
- `comment` - (Optional) Rule comment.
|
||||
- `enabled` - (Optional) Enable this rule. Defaults to `true`.
|
||||
- `iface` - (Optional) Network interface name. You have to use network
|
||||
- a security group insertion block, which includes the following arguments:
|
||||
- `comment` - (Optional) Rule comment.
|
||||
- `enabled` - (Optional) Enable this rule. Defaults to `true`.
|
||||
- `iface` - (Optional) Network interface name. You have to use network
|
||||
configuration key names for VMs and containers ('net\d+'). Host
|
||||
related rules can use arbitrary strings.
|
||||
- `security_group` - (Required) Security group name.
|
||||
- `security_group` - (Required) Security group name.
|
||||
|
||||
## Attribute Reference
|
||||
|
||||
- `rule`
|
||||
- `pos` - Position of the rule in the list.
|
||||
- `pos` - Position of the rule in the list.
|
||||
|
@ -23,9 +23,9 @@ resource "proxmox_virtual_environment_group" "operations_team" {
|
||||
## Argument Reference
|
||||
|
||||
- `acl` - (Optional) The access control list (multiple blocks supported).
|
||||
- `path` - The path.
|
||||
- `propagate` - Whether to propagate to child paths.
|
||||
- `role_id` - The role identifier.
|
||||
- `path` - The path.
|
||||
- `propagate` - Whether to propagate to child paths.
|
||||
- `role_id` - The role identifier.
|
||||
- `comment` - (Optional) The group comment.
|
||||
- `group_id` - (Required) The group identifier.
|
||||
|
||||
@ -38,5 +38,5 @@ resource "proxmox_virtual_environment_group" "operations_team" {
|
||||
Instances can be imported using the `group_id`, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_group.operations_team operations-team
|
||||
terraform import proxmox_virtual_environment_group.operations_team operations-team
|
||||
```
|
||||
|
@ -32,8 +32,8 @@ resource "proxmox_virtual_environment_hosts" "first_node_host_entries" {
|
||||
|
||||
- `node_name` - (Required) A node name.
|
||||
- `entry` - (Required) A host entry (multiple blocks supported).
|
||||
- `address` - (Required) The IP address.
|
||||
- `hostnames` - (Required) The hostnames.
|
||||
- `address` - (Required) The IP address.
|
||||
- `hostnames` - (Required) The hostnames.
|
||||
|
||||
## Attribute Reference
|
||||
|
||||
@ -52,5 +52,5 @@ Be careful not to use this resource multiple times for the same node.
|
||||
Instances can be imported using the `node_name`, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_hosts.first_node_host_entries first-node
|
||||
terraform import proxmox_virtual_environment_hosts.first_node_host_entries first-node
|
||||
```
|
||||
|
@ -54,7 +54,7 @@ resource "proxmox_virtual_environment_network_linux_bridge" "vmbr99" {
|
||||
|
||||
### Read-Only
|
||||
|
||||
- `id` (String) A unique identifier with format '<node name>:<iface>'
|
||||
- `id` (String) A unique identifier with format `<node name>:<iface>`
|
||||
|
||||
## Import
|
||||
|
||||
|
@ -55,7 +55,7 @@ resource "proxmox_virtual_environment_network_linux_vlan" "vlan98" {
|
||||
|
||||
### Read-Only
|
||||
|
||||
- `id` (String) A unique identifier with format '<node name>:<iface>'.
|
||||
- `id` (String) A unique identifier with format `<node name>:<iface>`.
|
||||
|
||||
## Import
|
||||
|
||||
|
@ -28,16 +28,16 @@ resource "proxmox_virtual_environment_pool" "operations_pool" {
|
||||
## Attribute Reference
|
||||
|
||||
- `members` - The pool members.
|
||||
- `datastore_id` - The datastore identifier.
|
||||
- `id` - The member identifier.
|
||||
- `node_name` - The node name.
|
||||
- `type` - The member type.
|
||||
- `vm_id` - The virtual machine identifier.
|
||||
- `datastore_id` - The datastore identifier.
|
||||
- `id` - The member identifier.
|
||||
- `node_name` - The node name.
|
||||
- `type` - The member type.
|
||||
- `vm_id` - The virtual machine identifier.
|
||||
|
||||
## Import
|
||||
|
||||
Instances can be imported using the `pool_id`, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_pool.operations_pool operations-pool
|
||||
terraform import proxmox_virtual_environment_pool.operations_pool operations-pool
|
||||
```
|
||||
|
@ -37,5 +37,5 @@ There are no additional attributes available for this resource.
|
||||
Instances can be imported using the `role_id`, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_role.operations_monitoring operations-monitoring
|
||||
terraform import proxmox_virtual_environment_role.operations_monitoring operations-monitoring
|
||||
```
|
||||
|
@ -35,5 +35,5 @@ resource "proxmox_virtual_environment_time" "first_node_time" {
|
||||
Instances can be imported using the `node_name`, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_dns.first_node first-node
|
||||
terraform import proxmox_virtual_environment_dns.first_node first-node
|
||||
```
|
||||
|
@ -38,9 +38,9 @@ resource "proxmox_virtual_environment_role" "operations_monitoring" {
|
||||
## Argument Reference
|
||||
|
||||
- `acl` - (Optional) The access control list (multiple blocks supported).
|
||||
- `path` - The path.
|
||||
- `propagate` - Whether to propagate to child paths.
|
||||
- `role_id` - The role identifier.
|
||||
- `path` - The path.
|
||||
- `propagate` - Whether to propagate to child paths.
|
||||
- `role_id` - The role identifier.
|
||||
- `comment` - (Optional) The user comment.
|
||||
- `email` - (Optional) The user's email address.
|
||||
- `enabled` - (Optional) Whether the user account is enabled.
|
||||
@ -61,5 +61,5 @@ There are no additional attributes available for this resource.
|
||||
Instances can be imported using the `user_id`, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_user.operations_automation operations-automation@pve
|
||||
terraform import proxmox_virtual_environment_user.operations_automation operations-automation@pve
|
||||
```
|
||||
|
@ -108,355 +108,355 @@ 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
|
||||
- `enabled` - (Optional) Whether to enable the QEMU agent (defaults
|
||||
to `false`).
|
||||
- `timeout` - (Optional) The maximum amount of time to wait for data from
|
||||
- `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
|
||||
- `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).
|
||||
- `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
|
||||
- `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.
|
||||
- `ovmf` - OVMF (UEFI).
|
||||
- `seabios` - SeaBIOS.
|
||||
- `boot_order` - (Optional) Specify a list of devices to boot from in the order
|
||||
they appear in the list (defaults to `[]`).
|
||||
- `cdrom` - (Optional) The CDROM configuration.
|
||||
- `enabled` - (Optional) Whether to enable the CDROM drive (defaults
|
||||
- `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
|
||||
- `file_id` - (Optional) A file ID for an ISO file (defaults to `cdrom` as
|
||||
in the physical drive).
|
||||
- `interface` - (Optional) A hardware interface to connect CDROM drive to,
|
||||
- `interface` - (Optional) A hardware interface to connect CDROM drive to,
|
||||
must be `ideN` (defaults to `ide3`). Note that `q35` machine type only
|
||||
supports `ide0` and `ide2`.
|
||||
- `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
|
||||
- `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.
|
||||
- `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.
|
||||
- `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
|
||||
- `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-ssbd`/`-amd-ssbd` - Improves Spectre mitigation performance with
|
||||
AMD CPUs, best used with "virt-ssbd".
|
||||
- `+hv-evmcs`/`-hv-evmcs` - Improve performance for nested
|
||||
- `+hv-evmcs`/`-hv-evmcs` - Improve performance for nested
|
||||
virtualization (only supported on Intel CPUs).
|
||||
- `+hv-tlbflush`/`-hv-tlbflush` - Improve performance in overcommitted
|
||||
- `+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
|
||||
- `+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
|
||||
- `+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
|
||||
- `+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
|
||||
- `+spec-ctrl`/`-spec-ctrl` - Allows improved Spectre mitigation with
|
||||
Intel CPUs.
|
||||
- `+ssbd`/`-ssbd` - Protection for "Speculative Store Bypass" for Intel
|
||||
- `+ssbd`/`-ssbd` - Protection for "Speculative Store Bypass" for Intel
|
||||
models.
|
||||
- `+virt-ssbd`/`-virt-ssbd` - Basis for "Speculative Store Bypass"
|
||||
- `+virt-ssbd`/`-virt-ssbd` - Basis for "Speculative Store Bypass"
|
||||
protection for AMD models.
|
||||
- `hotplugged` - (Optional) The number of hotplugged vCPUs (defaults
|
||||
- `hotplugged` - (Optional) The number of hotplugged vCPUs (defaults
|
||||
to `0`).
|
||||
- `numa` - (Boolean) Enable/disable NUMA. (default to `false`)
|
||||
- `sockets` - (Optional) The number of CPU sockets (defaults to `1`).
|
||||
- `type` - (Optional) The emulated CPU type, it's recommended to
|
||||
- `numa` - (Boolean) Enable/disable NUMA. (default to `false`)
|
||||
- `sockets` - (Optional) The number of CPU sockets (defaults to `1`).
|
||||
- `type` - (Optional) The emulated CPU type, it's recommended to
|
||||
use `x86-64-v2-AES` (defaults to `qemu64`).
|
||||
- `486` - Intel 486.
|
||||
- `Broadwell`/`Broadwell-IBRS`/`Broadwell-noTSX`/`Broadwell-noTSX-IBRS` -
|
||||
- `486` - Intel 486.
|
||||
- `Broadwell`/`Broadwell-IBRS`/`Broadwell-noTSX`/`Broadwell-noTSX-IBRS` -
|
||||
Intel Core Processor (Broadwell, 2014).
|
||||
- `Cascadelake-Server`/`Cascadelake-Server-noTSX`/`Cascadelake-Server-v2`/`Cascadelake-Server-v4`/`Cascadelake-Server-v5` -
|
||||
- `Cascadelake-Server`/`Cascadelake-Server-noTSX`/`Cascadelake-Server-v2`/`Cascadelake-Server-v4`/`Cascadelake-Server-v5` -
|
||||
Intel Xeon 32xx/42xx/52xx/62xx/82xx/92xx (2019).
|
||||
- `Conroe` - Intel Celeron_4x0 (Conroe/Merom Class Core 2, 2006).
|
||||
- `Cooperlake`/`Cooperlake-v2`
|
||||
- `EPYC`/`EPYC-IBPB`/`EPYC-Milan`/`EPYC-Rome`/`EPYC-Rome-v2`/`EPYC-v3` -
|
||||
- `Conroe` - Intel Celeron_4x0 (Conroe/Merom Class Core 2, 2006).
|
||||
- `Cooperlake`/`Cooperlake-v2`
|
||||
- `EPYC`/`EPYC-IBPB`/`EPYC-Milan`/`EPYC-Rome`/`EPYC-Rome-v2`/`EPYC-v3` -
|
||||
AMD EPYC Processor (2017).
|
||||
- `Haswell`/`Haswell-IBRS`/`Haswell-noTSX`/`Haswell-noTSX-IBRS` - Intel
|
||||
- `Haswell`/`Haswell-IBRS`/`Haswell-noTSX`/`Haswell-noTSX-IBRS` - Intel
|
||||
Core Processor (Haswell, 2013).
|
||||
- `Icelake-Client`/`Icelake-Client-noTSX`
|
||||
- `Icelake-Server`/`Icelake-Server-noTSX`/`Icelake-Server-v3`/`Icelake-Server-v4`/`Icelake-Server-v5`/`Icelake-Server-v6`
|
||||
- `IvyBridge`/`IvyBridge-IBRS` - Intel Xeon E3-12xx v2 (Ivy Bridge,
|
||||
- `Icelake-Client`/`Icelake-Client-noTSX`
|
||||
- `Icelake-Server`/`Icelake-Server-noTSX`/`Icelake-Server-v3`/`Icelake-Server-v4`/`Icelake-Server-v5`/`Icelake-Server-v6`
|
||||
- `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,
|
||||
- `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,
|
||||
- `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).
|
||||
- `SapphireRapids`
|
||||
- `Skylake-Client`/`Skylake-Client-IBRS`/`Skylake-Client-noTSX-IBRS`/`Skylake-Client-v4` -
|
||||
- `SapphireRapids`
|
||||
- `Skylake-Client`/`Skylake-Client-IBRS`/`Skylake-Client-noTSX-IBRS`/`Skylake-Client-v4` -
|
||||
Intel Core Processor (Skylake, 2015).
|
||||
- `Skylake-Server`/`Skylake-Server-IBRS`/`Skylake-Server-noTSX-IBRS`/`Skylake-Server-v4`/`Skylake-Server-v5` -
|
||||
- `Skylake-Server`/`Skylake-Server-IBRS`/`Skylake-Server-noTSX-IBRS`/`Skylake-Server-v4`/`Skylake-Server-v5` -
|
||||
Intel Xeon Processor (Skylake, 2016).
|
||||
- `Westmere`/`Westmere-IBRS` - Intel Westmere E56xx/L56xx/X56xx (
|
||||
- `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
|
||||
- `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).
|
||||
- `x86-64-v2`/`x86-64-v2-AES`/`x86-64-v3`/`x86-64-v4`
|
||||
See https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels
|
||||
- `custom-<model>` - Custom CPU model. All `custom-<model>` values
|
||||
- `x86-64-v2`/`x86-64-v2-AES`/`x86-64-v3`/`x86-64-v4`
|
||||
See <https://en.wikipedia.org/wiki/X86-64#Microarchitecture_levels>
|
||||
- `custom-<model>` - Custom CPU model. All `custom-<model>` values
|
||||
should be defined in `/etc/pve/virtual-guest/cpu-models.conf` file.
|
||||
- `units` - (Optional) The CPU units (defaults to `1024`).
|
||||
- `units` - (Optional) The CPU units (defaults to `1024`).
|
||||
- `description` - (Optional) The description.
|
||||
- `disk` - (Optional) A disk (multiple blocks supported).
|
||||
- `cache` - (Optional) The cache type (defaults to `none`).
|
||||
- `none` - No cache.
|
||||
- `directsync` - Write to the host cache and wait for completion.
|
||||
- `writethrough` - Write to the host cache, but write through to
|
||||
- `cache` - (Optional) The cache type (defaults to `none`).
|
||||
- `none` - No cache.
|
||||
- `directsync` - Write to the host cache and wait for completion.
|
||||
- `writethrough` - Write to the host cache, but write through to
|
||||
the guest.
|
||||
- `writeback` - Write to the host cache, but write back to the
|
||||
- `writeback` - Write to the host cache, but write back to the
|
||||
guest when possible.
|
||||
- `unsafe` - Write directly to the disk bypassing the host cache.
|
||||
- `datastore_id` - (Optional) The identifier for the datastore to create
|
||||
- `unsafe` - Write directly to the disk bypassing the host cache.
|
||||
- `datastore_id` - (Optional) The identifier for the datastore to create
|
||||
the disk in (defaults to `local-lvm`).
|
||||
- `path_in_datastore` - (Optional) The in-datastore path to the disk image.
|
||||
- `path_in_datastore` - (Optional) The in-datastore path to the disk image.
|
||||
***Experimental.***Use to attach another VM's disks,
|
||||
or (as root only) host's filesystem paths (`datastore_id` empty string).
|
||||
See "*Example: Attached disks*".
|
||||
- `discard` - (Optional) Whether to pass discard/trim requests to the
|
||||
- `discard` - (Optional) Whether to pass discard/trim requests to the
|
||||
underlying storage. Supported values are `on`/`ignore` (defaults
|
||||
to `ignore`).
|
||||
- `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 -
|
||||
- `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`,
|
||||
- `interface` - (Required) The disk interface for Proxmox, currently `scsi`,
|
||||
`sata` and `virtio` interfaces are supported. Append the disk index at
|
||||
the end, for example, `virtio0` for the first virtio disk, `virtio1` for
|
||||
the second, etc.
|
||||
- `iothread` - (Optional) Whether to use iothreads for this disk (defaults
|
||||
- `iothread` - (Optional) Whether to use iothreads for this disk (defaults
|
||||
to `false`).
|
||||
- `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
|
||||
- `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
|
||||
- `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 (
|
||||
- `ssd` - (Optional) Whether to use an SSD emulation option for this disk (
|
||||
defaults to `false`). Note that SSD emulation is not supported on VirtIO
|
||||
Block drives.
|
||||
- `efi_disk` - (Optional) The efi disk device (required if `bios` is set
|
||||
to `ovmf`)
|
||||
- `datastore_id` (Optional) The identifier for the datastore to create
|
||||
- `datastore_id` (Optional) The identifier for the datastore to create
|
||||
the disk in (defaults to `local-lvm`).
|
||||
- `file_format` (Optional) The file format.
|
||||
- `type` (Optional) Size and type of the OVMF EFI disk. `4m` is newer and
|
||||
- `file_format` (Optional) The file format.
|
||||
- `type` (Optional) Size and type of the OVMF EFI disk. `4m` is newer and
|
||||
recommended, and required for Secure Boot. For backwards compatibility
|
||||
use `2m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults
|
||||
to `2m`).
|
||||
- `pre_enrolled_keys` (Optional) Use am EFI vars template with
|
||||
- `pre_enrolled_keys` (Optional) Use am EFI vars template with
|
||||
distribution-specific and Microsoft Standard keys enrolled, if used with
|
||||
EFI type=`4m`. Ignored for VMs with cpu.architecture=`aarch64` (defaults
|
||||
to `false`).
|
||||
- `hostpci` - (Optional) A host PCI device mapping (multiple blocks supported).
|
||||
- `device` - (Required) The PCI device name for Proxmox, in form
|
||||
- `device` - (Required) The PCI device name for Proxmox, in form
|
||||
of `hostpciX` where `X` is a sequential number from 0 to 3.
|
||||
- `id` - (Optional) The PCI device ID. This parameter is not compatible
|
||||
- `id` - (Optional) The PCI device ID. This parameter is not compatible
|
||||
with `api_token` and requires the root `username` and `password`
|
||||
configured in the proxmox provider. Use either this or `mapping`.
|
||||
- `mapping` - (Optional) The resource mapping name of the device, for
|
||||
- `mapping` - (Optional) The resource mapping name of the device, for
|
||||
example gpu. Use either this or `id`.
|
||||
- `mdev` - (Optional) The mediated device ID to use.
|
||||
- `pcie` - (Optional) Tells Proxmox to use a PCIe or PCI port. Some
|
||||
- `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
|
||||
- `rombar` - (Optional) Makes the firmware ROM visible for the VM (defaults
|
||||
to `true`).
|
||||
- `rom_file` - (Optional) A path to a ROM file for the device to use. This
|
||||
- `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.
|
||||
- `xvga` - (Optional) Marks the PCI(e) device as the primary GPU of the VM.
|
||||
With this enabled the `vga` configuration argument will be ignored.
|
||||
- `usb` - (Optional) A host USB device mapping (multiple blocks supported).
|
||||
- `host` - (Optional) The USB device ID. Use either this or `mapping`.
|
||||
- `mapping` - (Optional) The resource mapping name of the device, for
|
||||
- `host` - (Optional) The USB device ID. Use either this or `mapping`.
|
||||
- `mapping` - (Optional) The resource mapping name of the device, for
|
||||
example usbdevice. Use either this or `id`.
|
||||
- `usb3` - (Optional) Makes the USB device a USB3 device for the VM (defaults
|
||||
- `usb3` - (Optional) Makes the USB device a USB3 device for the VM (defaults
|
||||
to `false`).
|
||||
- `initialization` - (Optional) The cloud-init configuration.
|
||||
- `datastore_id` - (Optional) The identifier for the datastore to create the
|
||||
- `datastore_id` - (Optional) The identifier for the datastore to create the
|
||||
cloud-init disk in (defaults to `local-lvm`).
|
||||
- `interface` - (Optional) The hardware interface to connect the cloud-init
|
||||
- `interface` - (Optional) The hardware interface to connect the cloud-init
|
||||
image to. Must be one of `ide0..3`, `sata0..5`, `scsi0..30`. Will be
|
||||
detected if the setting is missing but a cloud-init image is present,
|
||||
otherwise defaults to `ide2`.
|
||||
- `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
|
||||
- `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 in CIDR notation
|
||||
- `ipv4` - (Optional) The IPv4 configuration.
|
||||
- `address` - (Optional) The IPv4 address in CIDR notation
|
||||
(e.g. 192.168.2.2/24). Alternatively, set this to `dhcp` for
|
||||
autodiscovery.
|
||||
- `gateway` - (Optional) The IPv4 gateway (must be omitted
|
||||
- `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 in CIDR notation
|
||||
- `ipv6` - (Optional) The IPv4 configuration.
|
||||
- `address` - (Optional) The IPv6 address in CIDR notation
|
||||
(e.g. fd1c:000:0000::0000:000:7334/64). Alternatively, set this
|
||||
to `dhcp` for autodiscovery.
|
||||
- `gateway` - (Optional) The IPv6 gateway (must be omitted
|
||||
- `gateway` - (Optional) The IPv6 gateway (must be omitted
|
||||
when `dhcp` is used as the address).
|
||||
- `user_account` - (Optional) The user account configuration (conflicts
|
||||
- `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.
|
||||
- `network_data_file_id` - (Optional) The identifier for a file containing
|
||||
- `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
|
||||
with `ip_config`).
|
||||
- `user_data_file_id` - (Optional) The identifier for a file containing
|
||||
- `user_data_file_id` - (Optional) The identifier for a file containing
|
||||
custom user data (conflicts with `user_account`).
|
||||
- `vendor_data_file_id` - (Optional) The identifier for a file containing
|
||||
- `vendor_data_file_id` - (Optional) The identifier for a file containing
|
||||
all vendor data passed to the VM via cloud-init.
|
||||
- `meta_data_file_id` - (Optional) The identifier for a file containing
|
||||
- `meta_data_file_id` - (Optional) The identifier for a file containing
|
||||
all meta data passed to the VM via cloud-init.
|
||||
- `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.
|
||||
- `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 to `pc`).
|
||||
- `pc` - Standard PC (i440FX + PIIX, 1996).
|
||||
- `q35` - Standard PC (Q35 + ICH9, 2009).
|
||||
- `pc` - Standard PC (i440FX + PIIX, 1996).
|
||||
- `q35` - Standard PC (Q35 + ICH9, 2009).
|
||||
- `memory` - (Optional) The memory configuration.
|
||||
- `dedicated` - (Optional) The dedicated memory in megabytes (defaults
|
||||
- `dedicated` - (Optional) The dedicated memory in megabytes (defaults
|
||||
to `512`).
|
||||
- `floating` - (Optional) The floating memory in megabytes (defaults
|
||||
- `floating` - (Optional) The floating memory in megabytes (defaults
|
||||
to `0`).
|
||||
- `shared` - (Optional) The shared memory in megabytes (defaults to `0`).
|
||||
- `shared` - (Optional) The shared memory in megabytes (defaults to `0`).
|
||||
- `migrate` - (Optional) Migrate the VM on node change instead of re-creating
|
||||
it (defaults to `false`).
|
||||
- `name` - (Optional) The virtual machine name.
|
||||
- `network_device` - (Optional) A network device (multiple blocks supported).
|
||||
- `bridge` - (Optional) The name of the network bridge (defaults
|
||||
- `bridge` - (Optional) The name of the network bridge (defaults
|
||||
to `vmbr0`).
|
||||
- `enabled` - (Optional) Whether to enable the network device (defaults
|
||||
- `enabled` - (Optional) Whether to enable the network device (defaults
|
||||
to `true`).
|
||||
- `firewall` - (Optional) Whether this interface's firewall rules should be
|
||||
- `firewall` - (Optional) Whether this interface's firewall rules should be
|
||||
used (defaults to `false`).
|
||||
- `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.
|
||||
- `mtu` - (Optional) Force MTU, for VirtIO only. Set to 1 to use the bridge
|
||||
- `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.
|
||||
- `mtu` - (Optional) Force MTU, for VirtIO only. Set to 1 to use the bridge
|
||||
MTU. Cannot be larger than the bridge MTU.
|
||||
- `queues` - (Optional) The number of queues for VirtIO (1..64).
|
||||
- `rate_limit` - (Optional) The rate limit in megabytes per second.
|
||||
- `vlan_id` - (Optional) The VLAN identifier.
|
||||
- `queues` - (Optional) The number of queues for VirtIO (1..64).
|
||||
- `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 `true`)
|
||||
- `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.
|
||||
- `win11` - Windows 11
|
||||
- `wvista` - Windows Vista.
|
||||
- `wxp` - Windows XP.
|
||||
- `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.
|
||||
- `win11` - Windows 11
|
||||
- `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.
|
||||
- `device` - (Optional) The device (defaults to `socket`).
|
||||
- `/dev/*` - A host serial device.
|
||||
- `socket` - A unix socket.
|
||||
- `scsi_hardware` - (Optional) The SCSI hardware type (defaults
|
||||
to `virtio-scsi-pci`).
|
||||
- `lsi` - LSI Logic SAS1068E.
|
||||
- `lsi53c810` - LSI Logic 53C810.
|
||||
- `virtio-scsi-pci` - VirtIO SCSI.
|
||||
- `virtio-scsi-single` - VirtIO SCSI (single queue).
|
||||
- `megasas` - LSI Logic MegaRAID SAS.
|
||||
- `pvscsi` - VMware Paravirtual SCSI.
|
||||
- `lsi` - LSI Logic SAS1068E.
|
||||
- `lsi53c810` - LSI Logic 53C810.
|
||||
- `virtio-scsi-pci` - VirtIO SCSI.
|
||||
- `virtio-scsi-single` - VirtIO SCSI (single queue).
|
||||
- `megasas` - LSI Logic MegaRAID SAS.
|
||||
- `pvscsi` - VMware Paravirtual SCSI.
|
||||
- `smbios` - (Optional) The SMBIOS (type1) settings for the VM.
|
||||
- `family`- (Optional) The family string.
|
||||
- `manufacturer` - (Optional) The manufacturer.
|
||||
- `product` - (Optional) The product ID.
|
||||
- `serial` - (Optional) The serial number.
|
||||
- `sku` - (Optional) The SKU number.
|
||||
- `uuid` - (Optional) The UUID (defaults to randomly generated UUID).
|
||||
- `version` - (Optional) The version.
|
||||
- `family`- (Optional) The family string.
|
||||
- `manufacturer` - (Optional) The manufacturer.
|
||||
- `product` - (Optional) The product ID.
|
||||
- `serial` - (Optional) The serial number.
|
||||
- `sku` - (Optional) The SKU number.
|
||||
- `uuid` - (Optional) The UUID (defaults to randomly generated UUID).
|
||||
- `version` - (Optional) The version.
|
||||
- `started` - (Optional) Whether to start the virtual machine (defaults
|
||||
to `true`).
|
||||
- `startup` - (Optional) Defines startup and shutdown behavior of the VM.
|
||||
- `order` - (Required) A non-negative number defining the general startup
|
||||
- `order` - (Required) A non-negative number defining the general startup
|
||||
order.
|
||||
- `up` - (Optional) A non-negative number defining the delay in seconds
|
||||
- `up` - (Optional) A non-negative number defining the delay in seconds
|
||||
before the next VM is started.
|
||||
- `down` - (Optional) A non-negative number defining the delay in seconds
|
||||
- `down` - (Optional) A non-negative number defining the delay in seconds
|
||||
before the next VM is shut down.
|
||||
- `tablet_device` - (Optional) Whether to enable the USB tablet device (defaults
|
||||
to `true`).
|
||||
@ -483,22 +483,22 @@ output "ubuntu_vm_public_key" {
|
||||
- `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
|
||||
- `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.
|
||||
- `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.
|
||||
- `hook_script_file_id` - (Optional) The identifier for a file containing a hook script (needs to be executable).
|
||||
|
||||
@ -645,5 +645,5 @@ resource "proxmox_virtual_environment_vm" "data_user_vm" {
|
||||
Instances can be imported using the `node_name` and the `vm_id`, e.g.,
|
||||
|
||||
```bash
|
||||
$ terraform import proxmox_virtual_environment_vm.ubuntu_vm first-node/4321
|
||||
terraform import proxmox_virtual_environment_vm.ubuntu_vm first-node/4321
|
||||
```
|
||||
|
@ -172,7 +172,7 @@ func (r *linuxBridgeResource) Schema(
|
||||
Description: "Manages a Linux Bridge network interface in a Proxmox VE node.",
|
||||
Attributes: map[string]schema.Attribute{
|
||||
// Base attributes
|
||||
"id": structure.IDAttribute("A unique identifier with format '<node name>:<iface>'"),
|
||||
"id": structure.IDAttribute("A unique identifier with format `<node name>:<iface>`"),
|
||||
"node_name": schema.StringAttribute{
|
||||
Description: "The name of the node.",
|
||||
Required: true,
|
||||
|
@ -146,7 +146,7 @@ func (r *linuxVLANResource) Schema(
|
||||
Description: "Manages a Linux VLAN network interface in a Proxmox VE node.",
|
||||
Attributes: map[string]schema.Attribute{
|
||||
// Base attributes
|
||||
"id": structure.IDAttribute("A unique identifier with format '<node name>:<iface>'."),
|
||||
"id": structure.IDAttribute("A unique identifier with format `<node name>:<iface>`."),
|
||||
"node_name": schema.StringAttribute{
|
||||
Description: "The name of the node.",
|
||||
Required: true,
|
||||
|
8
howtos/README.md
Normal file
8
howtos/README.md
Normal file
@ -0,0 +1,8 @@
|
||||
# HOW-TOs
|
||||
|
||||
A collection of HOW-TOs for common tasks.
|
||||
|
||||
## Virtual Machines
|
||||
|
||||
- [Create a VM from a Cloud Image](howtos/cloud-image/README.md)
|
||||
- [Configure a VM with Cloud-Init](howtos/cloud-init/README.md)
|
93
howtos/cloud-image/README.md
Normal file
93
howtos/cloud-image/README.md
Normal file
@ -0,0 +1,93 @@
|
||||
# HOW-TO Create a VM from a Cloud Image
|
||||
|
||||
> [!NOTE]
|
||||
> Examples below use the following defaults:
|
||||
>
|
||||
> - a single Proxmox node named `pve`
|
||||
> - local storages named `local` and `local-lvm`
|
||||
|
||||
## Download a public cloud image from URL
|
||||
|
||||
Proxmox does not natively support QCOW2 images, but provider can do the conversion for you.
|
||||
|
||||
Example of how to create a CentOS 8 VM from a "generic cloud" `qcow2` image. CentOS 8 images are available at [cloud.centos.org](https://cloud.centos.org/centos/8-stream/x86_64/images/):
|
||||
|
||||
```terraform
|
||||
resource "proxmox_virtual_environment_vm" "centos_vm" {
|
||||
name = "test-centos"
|
||||
node_name = "pve"
|
||||
|
||||
initialization {
|
||||
user_account {
|
||||
# do not use this in production, configure your own ssh key instead!
|
||||
username = "user"
|
||||
password = "password"
|
||||
}
|
||||
}
|
||||
|
||||
disk {
|
||||
datastore_id = "local-lvm"
|
||||
file_id = proxmox_virtual_environment_file.centos_cloud_image.id
|
||||
interface = "virtio0"
|
||||
iothread = true
|
||||
discard = "on"
|
||||
size = 20
|
||||
}
|
||||
}
|
||||
|
||||
resource "proxmox_virtual_environment_file" "centos_cloud_image" {
|
||||
content_type = "iso"
|
||||
datastore_id = "local"
|
||||
node_name = "pve"
|
||||
|
||||
source_file {
|
||||
# you may download this image locally on your workstation and then use the local path instead of the remote URL
|
||||
path = "https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-20231113.0.x86_64.qcow2"
|
||||
file_name = "centos8.img"
|
||||
|
||||
# you may also use the SHA256 checksum of the image to verify its integrity
|
||||
checksum = "b9ba602de681e493b020825db0ee30602a46ef92"
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
Ubuntu cloud images are available at [cloud-images.ubuntu.com](https://cloud-images.ubuntu.com/). Ubuntu cloud images are in `qcow2` format as well, but stored with `.img` extension, so they can be directly uploaded to Proxmox without renaming.
|
||||
|
||||
Just update the `source_file` block in the example above to use the Ubuntu image URL:
|
||||
|
||||
```terraform
|
||||
source_file {
|
||||
path = "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
|
||||
...
|
||||
}
|
||||
```
|
||||
|
||||
For [large images](https://registry.terraform.io/providers/bpg/proxmox/latest/docs/resources/virtual_environment_file#important-notes), you may want to use a dedicated temporary directory [configured](https://registry.terraform.io/providers/bpg/proxmox/latest/docs#tmp_dir) for provider via `tmp_dir` attribute, instead of system's default temporary directory. This is especially useful if you are deploying from a container with limited disk space.
|
||||
|
||||
## Create a VM from an exiting image on Proxmox
|
||||
|
||||
If you already have a cloud image on Proxmox, you can use it to create a VM:
|
||||
|
||||
```terraform
|
||||
resource "proxmox_virtual_environment_vm" "debian_vm" {
|
||||
name = "test-debian"
|
||||
node_name = "pve"
|
||||
|
||||
initialization {
|
||||
user_account {
|
||||
# do not use this in production, configure your own ssh key instead!
|
||||
username = "user"
|
||||
password = "password"
|
||||
}
|
||||
}
|
||||
|
||||
disk {
|
||||
datastore_id = "local-lvm"
|
||||
file_id = "local:iso/debian-12-genericcloud-amd64.img"
|
||||
interface = "virtio0"
|
||||
iothread = true
|
||||
discard = "on"
|
||||
size = 20
|
||||
}
|
||||
}
|
||||
```
|
33
howtos/cloud-image/centos-qcow2/main.tf
Normal file
33
howtos/cloud-image/centos-qcow2/main.tf
Normal file
@ -0,0 +1,33 @@
|
||||
resource "proxmox_virtual_environment_vm" "centos_vm" {
|
||||
name = "test-centos"
|
||||
node_name = "pve"
|
||||
|
||||
initialization {
|
||||
user_account {
|
||||
# do not use this in production, configure your own ssh key instead!
|
||||
username = "user"
|
||||
password = "password"
|
||||
}
|
||||
}
|
||||
|
||||
disk {
|
||||
datastore_id = "local-lvm"
|
||||
file_id = proxmox_virtual_environment_file.centos_cloud_image.id
|
||||
interface = "virtio0"
|
||||
iothread = true
|
||||
discard = "on"
|
||||
size = 20
|
||||
}
|
||||
}
|
||||
|
||||
resource "proxmox_virtual_environment_file" "centos_cloud_image" {
|
||||
content_type = "iso"
|
||||
datastore_id = "local"
|
||||
node_name = "pve"
|
||||
|
||||
source_file {
|
||||
# you may download this image locally on your workstation and then use the local path instead of the remote URL
|
||||
path = "https://cloud.centos.org/centos/8-stream/x86_64/images/CentOS-Stream-GenericCloud-8-20231113.0.x86_64.qcow2"
|
||||
file_name = "centos8.img"
|
||||
}
|
||||
}
|
17
howtos/cloud-image/centos-qcow2/provider.tf
Normal file
17
howtos/cloud-image/centos-qcow2/provider.tf
Normal file
@ -0,0 +1,17 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "bpg/proxmox"
|
||||
version = "0.38.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "proxmox" {
|
||||
endpoint = var.virtual_environment_endpoint
|
||||
api_token = var.virtual_environment_token
|
||||
ssh {
|
||||
agent = true
|
||||
username = "root"
|
||||
}
|
||||
}
|
9
howtos/cloud-image/centos-qcow2/variables.tf
Normal file
9
howtos/cloud-image/centos-qcow2/variables.tf
Normal file
@ -0,0 +1,9 @@
|
||||
variable "virtual_environment_endpoint" {
|
||||
type = string
|
||||
description = "The endpoint for the Proxmox Virtual Environment API (example: https://host:port)"
|
||||
}
|
||||
|
||||
variable "virtual_environment_token" {
|
||||
type = string
|
||||
description = "The token for the Proxmox Virtual Environment API"
|
||||
}
|
22
howtos/cloud-image/debian-from-storage/main.tf
Normal file
22
howtos/cloud-image/debian-from-storage/main.tf
Normal file
@ -0,0 +1,22 @@
|
||||
resource "proxmox_virtual_environment_vm" "debian_vm" {
|
||||
name = "test-debian"
|
||||
node_name = "pve"
|
||||
|
||||
initialization {
|
||||
user_account {
|
||||
# do not use this in production, configure your own ssh key instead!
|
||||
username = "user"
|
||||
password = "password"
|
||||
}
|
||||
}
|
||||
|
||||
disk {
|
||||
datastore_id = "local-lvm"
|
||||
file_id = "local:iso/debian-12-genericcloud-amd64.img"
|
||||
interface = "virtio0"
|
||||
iothread = true
|
||||
discard = "on"
|
||||
size = 20
|
||||
}
|
||||
}
|
||||
|
17
howtos/cloud-image/debian-from-storage/provider.tf
Normal file
17
howtos/cloud-image/debian-from-storage/provider.tf
Normal file
@ -0,0 +1,17 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "bpg/proxmox"
|
||||
version = "0.38.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "proxmox" {
|
||||
endpoint = var.virtual_environment_endpoint
|
||||
api_token = var.virtual_environment_token
|
||||
ssh {
|
||||
agent = true
|
||||
username = "root"
|
||||
}
|
||||
}
|
9
howtos/cloud-image/debian-from-storage/variables.tf
Normal file
9
howtos/cloud-image/debian-from-storage/variables.tf
Normal file
@ -0,0 +1,9 @@
|
||||
variable "virtual_environment_endpoint" {
|
||||
type = string
|
||||
description = "The endpoint for the Proxmox Virtual Environment API (example: https://host:port)"
|
||||
}
|
||||
|
||||
variable "virtual_environment_token" {
|
||||
type = string
|
||||
description = "The token for the Proxmox Virtual Environment API"
|
||||
}
|
32
howtos/cloud-image/ubuntu-img/main.tf
Normal file
32
howtos/cloud-image/ubuntu-img/main.tf
Normal file
@ -0,0 +1,32 @@
|
||||
resource "proxmox_virtual_environment_vm" "ubuntu_vm" {
|
||||
name = "test-ubuntu"
|
||||
node_name = "pve"
|
||||
|
||||
initialization {
|
||||
user_account {
|
||||
# do not use this in production, configure your own ssh key instead!
|
||||
username = "user"
|
||||
password = "password"
|
||||
}
|
||||
}
|
||||
|
||||
disk {
|
||||
datastore_id = "local-lvm"
|
||||
file_id = proxmox_virtual_environment_file.ubuntu_cloud_image.id
|
||||
interface = "virtio0"
|
||||
iothread = true
|
||||
discard = "on"
|
||||
size = 20
|
||||
}
|
||||
}
|
||||
|
||||
resource "proxmox_virtual_environment_file" "ubuntu_cloud_image" {
|
||||
content_type = "iso"
|
||||
datastore_id = "local"
|
||||
node_name = "pve"
|
||||
|
||||
source_file {
|
||||
# you may download this image locally on your workstation and then use the local path instead of the remote URL
|
||||
path = "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
|
||||
}
|
||||
}
|
17
howtos/cloud-image/ubuntu-img/provider.tf
Normal file
17
howtos/cloud-image/ubuntu-img/provider.tf
Normal file
@ -0,0 +1,17 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "bpg/proxmox"
|
||||
version = "0.38.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "proxmox" {
|
||||
endpoint = var.virtual_environment_endpoint
|
||||
api_token = var.virtual_environment_token
|
||||
ssh {
|
||||
agent = true
|
||||
username = "root"
|
||||
}
|
||||
}
|
9
howtos/cloud-image/ubuntu-img/variables.tf
Normal file
9
howtos/cloud-image/ubuntu-img/variables.tf
Normal file
@ -0,0 +1,9 @@
|
||||
variable "virtual_environment_endpoint" {
|
||||
type = string
|
||||
description = "The endpoint for the Proxmox Virtual Environment API (example: https://host:port)"
|
||||
}
|
||||
|
||||
variable "virtual_environment_token" {
|
||||
type = string
|
||||
description = "The token for the Proxmox Virtual Environment API"
|
||||
}
|
6
howtos/cloud-init/README.md
Normal file
6
howtos/cloud-init/README.md
Normal file
@ -0,0 +1,6 @@
|
||||
# HOW-TO Configure a VM with Cloud-Init
|
||||
|
||||
## Native Proxmox Cloud-Init support
|
||||
|
||||
TODO
|
||||
|
32
howtos/cloud-init/native/main.tf
Normal file
32
howtos/cloud-init/native/main.tf
Normal file
@ -0,0 +1,32 @@
|
||||
resource "proxmox_virtual_environment_vm" "centos_vm" {
|
||||
name = "test-ubuntu"
|
||||
node_name = "pve"
|
||||
|
||||
initialization {
|
||||
user_account {
|
||||
keys = [trimspace(tls_private_key.ubuntu_vm_key.public_key_openssh)]
|
||||
|
||||
# do not use this in production, cofigure your own ssh key instead!
|
||||
username = "ubuntu"
|
||||
}
|
||||
}
|
||||
|
||||
disk {
|
||||
datastore_id = "local-lvm"
|
||||
file_id = proxmox_virtual_environment_file.ubuntu_cloud_image.id
|
||||
interface = "virtio0"
|
||||
iothread = true
|
||||
discard = "on"
|
||||
size = 20
|
||||
}
|
||||
}
|
||||
|
||||
resource "proxmox_virtual_environment_file" "ubuntu_cloud_image" {
|
||||
content_type = "iso"
|
||||
datastore_id = "local"
|
||||
node_name = "pve"
|
||||
|
||||
source_file {
|
||||
path = "https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
|
||||
}
|
||||
}
|
17
howtos/cloud-init/native/provider.tf
Normal file
17
howtos/cloud-init/native/provider.tf
Normal file
@ -0,0 +1,17 @@
|
||||
terraform {
|
||||
required_providers {
|
||||
proxmox = {
|
||||
source = "bpg/proxmox"
|
||||
version = "0.38.1"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
provider "proxmox" {
|
||||
endpoint = var.virtual_environment_endpoint
|
||||
api_token = var.virtual_environment_token
|
||||
ssh {
|
||||
agent = true
|
||||
username = "root"
|
||||
}
|
||||
}
|
9
howtos/cloud-init/native/variables.tf
Normal file
9
howtos/cloud-init/native/variables.tf
Normal file
@ -0,0 +1,9 @@
|
||||
variable "virtual_environment_endpoint" {
|
||||
type = string
|
||||
description = "The endpoint for the Proxmox Virtual Environment API (example: https://host:port)"
|
||||
}
|
||||
|
||||
variable "virtual_environment_token" {
|
||||
type = string
|
||||
description = "The token for the Proxmox Virtual Environment API"
|
||||
}
|
Loading…
Reference in New Issue
Block a user