mirror of
https://github.com/bpg/terraform-provider-proxmox.git
synced 2025-07-05 05:24:01 +00:00
misc: update documentation
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
This commit is contained in:
parent
ce47411f99
commit
b6af836386
5
.github/ISSUE_TEMPLATE/bug_report.md
vendored
5
.github/ISSUE_TEMPLATE/bug_report.md
vendored
@ -37,7 +37,8 @@ If applicable, add screenshots to help explain your problem.
|
|||||||
Add any other context about the problem here.
|
Add any other context about the problem here.
|
||||||
|
|
||||||
- Single or clustered Proxmox:
|
- Single or clustered Proxmox:
|
||||||
|
- Proxmox version:
|
||||||
- Provider version (ideally it should be the latest version):
|
- Provider version (ideally it should be the latest version):
|
||||||
- Terraform version:
|
- Terraform/OpenTofu version:
|
||||||
- OS (where you run Terraform from):
|
- OS (where you run Terraform/OpenTofu from):
|
||||||
- Debug logs (`TF_LOG=DEBUG terraform apply`):
|
- Debug logs (`TF_LOG=DEBUG terraform apply`):
|
||||||
|
@ -78,7 +78,7 @@ testing changes to the provider before submitting a PR.
|
|||||||
|
|
||||||
- Create a $HOME/.terraformrc (POSIX) or %APPDATA%/terraform.rc (Windows) file with the following contents:
|
- Create a $HOME/.terraformrc (POSIX) or %APPDATA%/terraform.rc (Windows) file with the following contents:
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
provider_installation {
|
provider_installation {
|
||||||
|
|
||||||
dev_overrides {
|
dev_overrides {
|
||||||
|
@ -142,3 +142,10 @@ See [CONTRIBUTORS.md](CONTRIBUTORS.md) for a list of contributors to this projec
|
|||||||
- [Ben Bouillet](https://github.com/benbouillet)
|
- [Ben Bouillet](https://github.com/benbouillet)
|
||||||
|
|
||||||
Thanks again for your support, it is much appreciated! 🙏
|
Thanks again for your support, it is much appreciated! 🙏
|
||||||
|
|
||||||
|
|
||||||
|
## Acknowledgements
|
||||||
|
|
||||||
|
This project has been developed with **GoLand** IDE under the [JetBrains Open Source license](https://www.jetbrains.com/community/opensource/#support), generously provided by JetBrains s.r.o.
|
||||||
|
|
||||||
|
<img src="https://resources.jetbrains.com/storage/products/company/brand/logos/GoLand_icon.png" alt="GoLand logo" width="80">
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about all the datastores available to a specific node.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_datastores" "first_node" {
|
data "proxmox_virtual_environment_datastores" "first_node" {
|
||||||
node_name = "first-node"
|
node_name = "first-node"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ Retrieves the DNS configuration for a specific node.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_dns" "first_node" {
|
data "proxmox_virtual_environment_dns" "first_node" {
|
||||||
node_name = "first-node"
|
node_name = "first-node"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about a specific user group.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_group" "operations_team" {
|
data "proxmox_virtual_environment_group" "operations_team" {
|
||||||
group_id = "operations-team"
|
group_id = "operations-team"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ Retrieves basic information about all available user groups.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_groups" "available_groups" {}
|
data "proxmox_virtual_environment_groups" "available_groups" {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Retrieves all the host entries from a specific node.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_hosts" "first_node_host_entries" {
|
data "proxmox_virtual_environment_hosts" "first_node_host_entries" {
|
||||||
node_name = "first-node"
|
node_name = "first-node"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about node.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_node" "node" {}
|
data "proxmox_virtual_environment_node" "node" {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about all available nodes.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_nodes" "available_nodes" {}
|
data "proxmox_virtual_environment_nodes" "available_nodes" {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about a specific resource pool.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_pool" "operations_pool" {
|
data "proxmox_virtual_environment_pool" "operations_pool" {
|
||||||
pool_id = "operations"
|
pool_id = "operations"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ Retrieves the identifiers for all the available resource pools.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_pools" "available_pools" {}
|
data "proxmox_virtual_environment_pools" "available_pools" {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about a specific role.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_role" "operations_role" {
|
data "proxmox_virtual_environment_role" "operations_role" {
|
||||||
role_id = "operations"
|
role_id = "operations"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about all the available roles.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_roles" "available_roles" {}
|
data "proxmox_virtual_environment_roles" "available_roles" {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Retrieves the current time for a specific node.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_time" "first_node_time" {
|
data "proxmox_virtual_environment_time" "first_node_time" {
|
||||||
node_name = "first-node"
|
node_name = "first-node"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about a specific user.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_user" "operations_user" {
|
data "proxmox_virtual_environment_user" "operations_user" {
|
||||||
user_id = "operation@pam"
|
user_id = "operation@pam"
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about all the available users.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_users" "available_users" {}
|
data "proxmox_virtual_environment_users" "available_users" {}
|
||||||
```
|
```
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about a specific VM.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_vm" "test_vm" {
|
data "proxmox_virtual_environment_vm" "test_vm" {
|
||||||
node_name = "test"
|
node_name = "test"
|
||||||
vm_id = 100
|
vm_id = 100
|
||||||
|
@ -11,7 +11,7 @@ Retrieves information about all VMs in the Proxmox cluster.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
data "proxmox_virtual_environment_vms" "ubuntu_vms" {
|
data "proxmox_virtual_environment_vms" "ubuntu_vms" {
|
||||||
tags = ["ubuntu"]
|
tags = ["ubuntu"]
|
||||||
}
|
}
|
||||||
|
@ -12,7 +12,7 @@ Use the navigation to the left to read about the available resources.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
endpoint = "https://10.0.0.2:8006/"
|
endpoint = "https://10.0.0.2:8006/"
|
||||||
# TODO: use terraform variable or remove the line, and use PROXMOX_VE_USERNAME environment variable
|
# TODO: use terraform variable or remove the line, and use PROXMOX_VE_USERNAME environment variable
|
||||||
@ -41,7 +41,7 @@ Static credentials can be provided to the `proxmox` block through either a `api_
|
|||||||
|
|
||||||
Static credentials can be provided by adding a `username` and `password`, or `api_token` in-line in the Proxmox provider block:
|
Static credentials can be provided by adding a `username` and `password`, or `api_token` in-line in the Proxmox provider block:
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
endpoint = "https://10.0.0.2:8006/"
|
endpoint = "https://10.0.0.2:8006/"
|
||||||
username = "username@realm"
|
username = "username@realm"
|
||||||
@ -51,7 +51,7 @@ provider "proxmox" {
|
|||||||
|
|
||||||
A better approach is to extract these values into Terraform variables, and reference the variables instead:
|
A better approach is to extract these values into Terraform variables, and reference the variables instead:
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
endpoint = var.virtual_environment_endpoint
|
endpoint = var.virtual_environment_endpoint
|
||||||
username = var.virtual_environment_username
|
username = var.virtual_environment_username
|
||||||
@ -67,7 +67,7 @@ See the [Terraform documentation](https://www.terraform.io/docs/configuration/va
|
|||||||
Instead of using static arguments, credentials can be handled through the use of environment variables.
|
Instead of using static arguments, credentials can be handled through the use of environment variables.
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
endpoint = "https://10.0.0.2:8006/"
|
endpoint = "https://10.0.0.2:8006/"
|
||||||
}
|
}
|
||||||
@ -91,7 +91,7 @@ For example, to import VM disks, or to uploading certain type of resources, such
|
|||||||
|
|
||||||
The SSH connection configuration is provided via the optional `ssh` block in the `provider` block:
|
The SSH connection configuration is provided via the optional `ssh` block in the `provider` block:
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
endpoint = "https://10.0.0.2:8006/"
|
endpoint = "https://10.0.0.2:8006/"
|
||||||
username = "username@realm"
|
username = "username@realm"
|
||||||
@ -124,7 +124,7 @@ you can use the `private_key` argument in the `ssh` block (or alternatively `PRO
|
|||||||
The private key mut not be encrypted, and must be in PEM format.
|
The private key mut not be encrypted, and must be in PEM format.
|
||||||
|
|
||||||
You can provide the private key from a file:
|
You can provide the private key from a file:
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
// ...
|
// ...
|
||||||
ssh {
|
ssh {
|
||||||
@ -135,20 +135,20 @@ provider "proxmox" {
|
|||||||
```
|
```
|
||||||
|
|
||||||
Alternatively, although not recommended due to the increased risk of exposing an unprotected key, heredoc syntax can be used to supply the private key as a string.
|
Alternatively, although not recommended due to the increased risk of exposing an unprotected key, heredoc syntax can be used to supply the private key as a string.
|
||||||
Note that the content of the private key must not be indented:
|
Note that the content of the private key is injected using `<<-` format to ignore indentation:
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
ssh {
|
ssh {
|
||||||
agent = false
|
agent = false
|
||||||
private_key = <<EOF
|
private_key = <<-EOF
|
||||||
-----BEGIN OPENSSH PRIVATE KEY-----
|
-----BEGIN OPENSSH PRIVATE KEY-----
|
||||||
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
|
b3BlbnNzaC1rZXktdjEAAAAABG5vbmUAAAAEbm9uZQAAAAAAAAABAAAAMwAAAAtzc2gtZW
|
||||||
<SKIPPED>
|
<SKIPPED>
|
||||||
DMUWUEaH7yMCKl7uCZ9xAAAAAAECAwQF
|
DMUWUEaH7yMCKl7uCZ9xAAAAAAECAwQF
|
||||||
-----END OPENSSH PRIVATE KEY-----
|
-----END OPENSSH PRIVATE KEY-----
|
||||||
EOF
|
EOF
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
@ -158,7 +158,7 @@ EOF
|
|||||||
By default, the provider will use the same username for the SSH connection as the one used for the Proxmox API connection (when using PAM authentication).
|
By default, the provider will use the same username for the SSH connection as the one used for the Proxmox API connection (when using PAM authentication).
|
||||||
This can be overridden by specifying the `username` argument in the `ssh` block (or alternatively a username in the `PROXMOX_VE_SSH_USERNAME` environment variable):
|
This can be overridden by specifying the `username` argument in the `ssh` block (or alternatively a username in the `PROXMOX_VE_SSH_USERNAME` environment variable):
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
// ...
|
// ...
|
||||||
|
|
||||||
@ -234,7 +234,7 @@ In some cases this may not be the desired behavior, for example, when the node h
|
|||||||
To override the node IP address used for SSH connection, you can use the optional `node` blocks in the `ssh` block, and specify the desired IP address (or FQDN) for each node.
|
To override the node IP address used for SSH connection, you can use the optional `node` blocks in the `ssh` block, and specify the desired IP address (or FQDN) for each node.
|
||||||
For example:
|
For example:
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
// ...
|
// ...
|
||||||
ssh {
|
ssh {
|
||||||
@ -257,7 +257,7 @@ The provider supports SSH connection to the target node via a SOCKS5 proxy.
|
|||||||
|
|
||||||
To enable the SOCKS5 proxy, you need to configure the `ssh` block in the `provider` block, and specify the `socks5_server` argument:
|
To enable the SOCKS5 proxy, you need to configure the `ssh` block in the `provider` block, and specify the `socks5_server` argument:
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
// ...
|
// ...
|
||||||
ssh {
|
ssh {
|
||||||
@ -309,7 +309,7 @@ Refer to the upstream docs as needed for additional details concerning [PVE User
|
|||||||
|
|
||||||
Generating the token will output a table containing the token's ID and secret which are meant to be concatenated into a single string for use with either the `api_token` field of the `provider` block (fine for testing but should be avoided) or sourced from the `PROXMOX_VE_API_TOKEN` environment variable.
|
Generating the token will output a table containing the token's ID and secret which are meant to be concatenated into a single string for use with either the `api_token` field of the `provider` block (fine for testing but should be avoided) or sourced from the `PROXMOX_VE_API_TOKEN` environment variable.
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
provider "proxmox" {
|
provider "proxmox" {
|
||||||
endpoint = var.virtual_environment_endpoint
|
endpoint = var.virtual_environment_endpoint
|
||||||
api_token = "terraform@pve!provider=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
api_token = "terraform@pve!provider=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
|
||||||
|
@ -11,7 +11,7 @@ Manages the custom SSL/TLS certificate for a specific node.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_certificate" "example" {
|
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"
|
node_name = "first-node"
|
||||||
|
@ -11,7 +11,7 @@ Manages firewall options on the cluster level.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_cluster_firewall" "example" {
|
resource "proxmox_virtual_environment_cluster_firewall" "example" {
|
||||||
enabled = false
|
enabled = false
|
||||||
|
|
||||||
|
@ -13,7 +13,7 @@ with rules to open the http and https ports.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_cluster_firewall_security_group" "webserver" {
|
resource "proxmox_virtual_environment_cluster_firewall_security_group" "webserver" {
|
||||||
name = "webserver"
|
name = "webserver"
|
||||||
comment = "Managed by Terraform"
|
comment = "Managed by Terraform"
|
||||||
|
@ -11,7 +11,7 @@ Manages a container.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_container" "ubuntu_container" {
|
resource "proxmox_virtual_environment_container" "ubuntu_container" {
|
||||||
description = "Managed by Terraform"
|
description = "Managed by Terraform"
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Manages the DNS configuration for a specific node.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_dns" "first_node_dns_configuration" {
|
resource "proxmox_virtual_environment_dns" "first_node_dns_configuration" {
|
||||||
domain = data.proxmox_virtual_environment_dns.first_node_dns_configuration.domain
|
domain = data.proxmox_virtual_environment_dns.first_node_dns_configuration.domain
|
||||||
node_name = data.proxmox_virtual_environment_dns.first_node_dns_configuration.node_name
|
node_name = data.proxmox_virtual_environment_dns.first_node_dns_configuration.node_name
|
||||||
|
@ -15,7 +15,7 @@ Manages a file.
|
|||||||
|
|
||||||
-> The resource with this content type uses SSH access to the node. You might need to configure the [`ssh` option in the `provider` section](../index.md#node-ip-address-used-for-ssh-connection).
|
-> The resource with this content type uses SSH access to the node. You might need to configure the [`ssh` option in the `provider` section](../index.md#node-ip-address-used-for-ssh-connection).
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_file" "backup" {
|
resource "proxmox_virtual_environment_file" "backup" {
|
||||||
content_type = "dump"
|
content_type = "dump"
|
||||||
datastore_id = "local"
|
datastore_id = "local"
|
||||||
@ -31,7 +31,7 @@ resource "proxmox_virtual_environment_file" "backup" {
|
|||||||
|
|
||||||
-> Consider using `proxmox_virtual_environment_download_file` resource instead. Using this resource for images is less efficient (requires to transfer uploaded image to node) though still supported.
|
-> Consider using `proxmox_virtual_environment_download_file` resource instead. Using this resource for images is less efficient (requires to transfer uploaded image to node) though still supported.
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_file" "ubuntu_container_template" {
|
resource "proxmox_virtual_environment_file" "ubuntu_container_template" {
|
||||||
content_type = "iso"
|
content_type = "iso"
|
||||||
datastore_id = "local"
|
datastore_id = "local"
|
||||||
@ -49,7 +49,7 @@ resource "proxmox_virtual_environment_file" "ubuntu_container_template" {
|
|||||||
|
|
||||||
-> The resource with this content type uses SSH access to the node. You might need to configure the [`ssh` option in the `provider` section](../index.md#node-ip-address-used-for-ssh-connection).
|
-> The resource with this content type uses SSH access to the node. You might need to configure the [`ssh` option in the `provider` section](../index.md#node-ip-address-used-for-ssh-connection).
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_file" "cloud_config" {
|
resource "proxmox_virtual_environment_file" "cloud_config" {
|
||||||
content_type = "snippets"
|
content_type = "snippets"
|
||||||
datastore_id = "local"
|
datastore_id = "local"
|
||||||
@ -84,7 +84,7 @@ EOF
|
|||||||
|
|
||||||
-> Consider using `proxmox_virtual_environment_download_file` resource instead. Using this resource for container images is less efficient (requires to transfer uploaded image to node) though still supported.
|
-> Consider using `proxmox_virtual_environment_download_file` resource instead. Using this resource for container images is less efficient (requires to transfer uploaded image to node) though still supported.
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_file" "ubuntu_container_template" {
|
resource "proxmox_virtual_environment_file" "ubuntu_container_template" {
|
||||||
content_type = "vztmpl"
|
content_type = "vztmpl"
|
||||||
datastore_id = "local"
|
datastore_id = "local"
|
||||||
|
@ -13,7 +13,7 @@ created on the cluster level, on VM / Container level.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_firewall_alias" "local_network" {
|
resource "proxmox_virtual_environment_firewall_alias" "local_network" {
|
||||||
depends_on = [proxmox_virtual_environment_vm.example]
|
depends_on = [proxmox_virtual_environment_vm.example]
|
||||||
|
|
||||||
|
@ -12,7 +12,7 @@ created on the cluster level, on VM / Container level.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_firewall_ipset" "ipset" {
|
resource "proxmox_virtual_environment_firewall_ipset" "ipset" {
|
||||||
depends_on = [proxmox_virtual_environment_vm.example]
|
depends_on = [proxmox_virtual_environment_vm.example]
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Manages firewall options on VM / Container level.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_firewall_options" "example" {
|
resource "proxmox_virtual_environment_firewall_options" "example" {
|
||||||
depends_on = [proxmox_virtual_environment_vm.example]
|
depends_on = [proxmox_virtual_environment_vm.example]
|
||||||
|
|
||||||
|
@ -14,7 +14,7 @@ level, on VM / Container level.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_firewall_rules" "inbound" {
|
resource "proxmox_virtual_environment_firewall_rules" "inbound" {
|
||||||
depends_on = [
|
depends_on = [
|
||||||
proxmox_virtual_environment_vm.example,
|
proxmox_virtual_environment_vm.example,
|
||||||
|
@ -11,7 +11,7 @@ Manages a user group.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_group" "operations_team" {
|
resource "proxmox_virtual_environment_group" "operations_team" {
|
||||||
comment = "Managed by Terraform"
|
comment = "Managed by Terraform"
|
||||||
group_id = "operations-team"
|
group_id = "operations-team"
|
||||||
|
@ -11,7 +11,7 @@ Manages the host entries on a specific node.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_hosts" "first_node_host_entries" {
|
resource "proxmox_virtual_environment_hosts" "first_node_host_entries" {
|
||||||
node_name = "first-node"
|
node_name = "first-node"
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Manages a resource pool.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_pool" "operations_pool" {
|
resource "proxmox_virtual_environment_pool" "operations_pool" {
|
||||||
comment = "Managed by Terraform"
|
comment = "Managed by Terraform"
|
||||||
pool_id = "operations-pool"
|
pool_id = "operations-pool"
|
||||||
|
@ -11,7 +11,7 @@ Manages a role.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_role" "operations_monitoring" {
|
resource "proxmox_virtual_environment_role" "operations_monitoring" {
|
||||||
role_id = "operations-monitoring"
|
role_id = "operations-monitoring"
|
||||||
|
|
||||||
|
@ -11,7 +11,7 @@ Manages the time for a specific node.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_time" "first_node_time" {
|
resource "proxmox_virtual_environment_time" "first_node_time" {
|
||||||
node_name = "first-node"
|
node_name = "first-node"
|
||||||
time_zone = "UTC"
|
time_zone = "UTC"
|
||||||
|
@ -11,7 +11,7 @@ Manages a user.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_user" "operations_automation" {
|
resource "proxmox_virtual_environment_user" "operations_automation" {
|
||||||
acl {
|
acl {
|
||||||
path = "/vms/1234"
|
path = "/vms/1234"
|
||||||
|
@ -13,7 +13,7 @@ Manages a virtual machine.
|
|||||||
|
|
||||||
## Example Usage
|
## Example Usage
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_vm" "ubuntu_vm" {
|
resource "proxmox_virtual_environment_vm" "ubuntu_vm" {
|
||||||
name = "terraform-provider-proxmox-ubuntu-vm"
|
name = "terraform-provider-proxmox-ubuntu-vm"
|
||||||
description = "Managed by Terraform"
|
description = "Managed by Terraform"
|
||||||
@ -634,7 +634,7 @@ attaching one disk to multiple VM will cause errors or even data corruption.
|
|||||||
Do *not* move or resize `data_vm` disks.
|
Do *not* move or resize `data_vm` disks.
|
||||||
(Resource `data_user_vm` should reject attempts to move or resize non-owned disks.)
|
(Resource `data_user_vm` should reject attempts to move or resize non-owned disks.)
|
||||||
|
|
||||||
```terraform
|
```hcl
|
||||||
resource "proxmox_virtual_environment_vm" "data_vm" {
|
resource "proxmox_virtual_environment_vm" "data_vm" {
|
||||||
node_name = "first-node"
|
node_name = "first-node"
|
||||||
started = false
|
started = false
|
||||||
|
@ -12,11 +12,10 @@ description: |-
|
|||||||
!> **DO NOT USE**
|
!> **DO NOT USE**
|
||||||
This is an experimental implementation of a Proxmox VM resource using Plugin Framework.<br><br>It is a Proof of Concept, highly experimental and **will** change in future. It does not support all features of the Proxmox API for VMs and **MUST NOT** be used in production.
|
This is an experimental implementation of a Proxmox VM resource using Plugin Framework.<br><br>It is a Proof of Concept, highly experimental and **will** change in future. It does not support all features of the Proxmox API for VMs and **MUST NOT** be used in production.
|
||||||
|
|
||||||
-> Note: Many attributes are marked as **optional** _and_ **computed** in the schema,
|
-> Many attributes are marked as **optional** _and_ **computed** in the schema,
|
||||||
hence you may seem added to the plan with "(known after apply)" status, even if they are not set in the configuration.
|
hence you may seem added to the plan with "(known after apply)" status, even if they are not set in the configuration.
|
||||||
This is done to support the `clone` operation, when a VM is created from an existing one,
|
This is done to support the `clone` operation, when a VM is created from an existing one,
|
||||||
and attributes of the original VM are copied to the new one.
|
and attributes of the original VM are copied to the new one.<br><br>
|
||||||
|
|
||||||
Computed attributes allow the provider to set those attributes without user input.
|
Computed attributes allow the provider to set those attributes without user input.
|
||||||
The attributes are marked as optional to allow the user to set (or overwrite) them if needed.
|
The attributes are marked as optional to allow the user to set (or overwrite) them if needed.
|
||||||
In order to remove the computed attribute from the plan, you can set it to an empty value (e.g. `""` for string, `[]` for collection).
|
In order to remove the computed attribute from the plan, you can set it to an empty value (e.g. `""` for string, `[]` for collection).
|
||||||
|
@ -190,14 +190,14 @@ func TestAccResourceVMInitialization(t *testing.T) {
|
|||||||
datastore_id = "local"
|
datastore_id = "local"
|
||||||
node_name = "{{.NodeName}}"
|
node_name = "{{.NodeName}}"
|
||||||
source_raw {
|
source_raw {
|
||||||
data = <<EOF
|
data = <<-EOF
|
||||||
#cloud-config
|
#cloud-config
|
||||||
runcmd:
|
runcmd:
|
||||||
- apt update
|
- apt update
|
||||||
- apt install -y qemu-guest-agent
|
- apt install -y qemu-guest-agent
|
||||||
- systemctl enable qemu-guest-agent
|
- systemctl enable qemu-guest-agent
|
||||||
- systemctl start qemu-guest-agent
|
- systemctl start qemu-guest-agent
|
||||||
EOF
|
EOF
|
||||||
file_name = "cloud-config.yaml"
|
file_name = "cloud-config.yaml"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -260,8 +260,7 @@ EOF
|
|||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
}}},
|
}}},
|
||||||
{"native cloud-init: do not upgrade packages", []resource.TestStep{
|
{"native cloud-init: do not upgrade packages", []resource.TestStep{{
|
||||||
{
|
|
||||||
Config: te.renderConfig(`
|
Config: te.renderConfig(`
|
||||||
resource "proxmox_virtual_environment_vm" "test_vm_cloudinit3" {
|
resource "proxmox_virtual_environment_vm" "test_vm_cloudinit3" {
|
||||||
node_name = "{{.NodeName}}"
|
node_name = "{{.NodeName}}"
|
||||||
@ -275,8 +274,53 @@ EOF
|
|||||||
"initialization.0.upgrade": "false",
|
"initialization.0.upgrade": "false",
|
||||||
}),
|
}),
|
||||||
),
|
),
|
||||||
},
|
}}},
|
||||||
}},
|
{"cloud-init: clone", []resource.TestStep{{
|
||||||
|
Config: te.renderConfig(`
|
||||||
|
resource "proxmox_virtual_environment_vm" "test_vm_cloudinit_template" {
|
||||||
|
node_name = "{{.NodeName}}"
|
||||||
|
name = "test-vm-cloudinit-template"
|
||||||
|
started = false
|
||||||
|
template = "true"
|
||||||
|
initialization {
|
||||||
|
upgrade = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resource "proxmox_virtual_environment_file" "cloud_config" {
|
||||||
|
content_type = "snippets"
|
||||||
|
datastore_id = "local"
|
||||||
|
node_name = "{{.NodeName}}"
|
||||||
|
source_raw {
|
||||||
|
data = <<-EOF
|
||||||
|
#cloud-config
|
||||||
|
runcmd:
|
||||||
|
- apt update
|
||||||
|
- apt install -y qemu-guest-agent
|
||||||
|
- systemctl enable qemu-guest-agent
|
||||||
|
- systemctl start qemu-guest-agent
|
||||||
|
EOF
|
||||||
|
file_name = "cloud-config.yaml"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
resource "proxmox_virtual_environment_vm" "test_vm_cloudinit" {
|
||||||
|
node_name = "{{.NodeName}}"
|
||||||
|
name = "test-vm-cloudinit"
|
||||||
|
started = false
|
||||||
|
description = "Example to cause ciupgrade issue"
|
||||||
|
clone {
|
||||||
|
vm_id = proxmox_virtual_environment_vm.test_vm_cloudinit_template.id
|
||||||
|
}
|
||||||
|
|
||||||
|
initialization {
|
||||||
|
user_data_file_id = proxmox_virtual_environment_file.cloud_config.id
|
||||||
|
}
|
||||||
|
}`),
|
||||||
|
Check: resource.ComposeTestCheckFunc(
|
||||||
|
testResourceAttributes("proxmox_virtual_environment_vm.test_vm_cloudinit", map[string]string{
|
||||||
|
"initialization.0.upgrade": "true",
|
||||||
|
}),
|
||||||
|
),
|
||||||
|
}}},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
|
@ -12,11 +12,10 @@ description: |-
|
|||||||
!> **DO NOT USE**
|
!> **DO NOT USE**
|
||||||
{{ .Description | trimspace }}
|
{{ .Description | trimspace }}
|
||||||
|
|
||||||
-> Note: Many attributes are marked as **optional** _and_ **computed** in the schema,
|
-> Many attributes are marked as **optional** _and_ **computed** in the schema,
|
||||||
hence you may seem added to the plan with "(known after apply)" status, even if they are not set in the configuration.
|
hence you may seem added to the plan with "(known after apply)" status, even if they are not set in the configuration.
|
||||||
This is done to support the `clone` operation, when a VM is created from an existing one,
|
This is done to support the `clone` operation, when a VM is created from an existing one,
|
||||||
and attributes of the original VM are copied to the new one.
|
and attributes of the original VM are copied to the new one.<br><br>
|
||||||
|
|
||||||
Computed attributes allow the provider to set those attributes without user input.
|
Computed attributes allow the provider to set those attributes without user input.
|
||||||
The attributes are marked as optional to allow the user to set (or overwrite) them if needed.
|
The attributes are marked as optional to allow the user to set (or overwrite) them if needed.
|
||||||
In order to remove the computed attribute from the plan, you can set it to an empty value (e.g. `""` for string, `[]` for collection).
|
In order to remove the computed attribute from the plan, you can set it to an empty value (e.g. `""` for string, `[]` for collection).
|
||||||
|
Loading…
Reference in New Issue
Block a user