0
0
mirror of https://github.com/bpg/terraform-provider-proxmox.git synced 2025-06-30 10:33:46 +00:00
terraform-provider-proxmox/example/resource_virtual_environment_container.tf
Sven Greb 9b34c485ab
feat(lxc): Implement support for container's "protection flag" (#1512)
* feat(lxc): Implement support for container's "protection flag"

The Proxmox VE types already has the `protection` API parameter [1],
but it is not exposed to the provider users.
This pull request implements the missing logic to make it available in
order to allow to protect containers against deletion/update operations,
including the container's disks.

[1]: https://github.com/bpg/terraform-provider-proxmox/blob/v0.63.0/proxmox/nodes/containers/containers_types.go#L59

Relates GH-1126

Signed-off-by: Sven Greb <development@svengreb.de>

* Update example/resource_virtual_environment_container.tf

Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>

---------

Signed-off-by: Sven Greb <development@svengreb.de>
Signed-off-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
Co-authored-by: Pavel Boldyrev <627562+bpg@users.noreply.github.com>
2024-09-08 11:08:13 -04:00

96 lines
2.4 KiB
HCL

resource "proxmox_virtual_environment_container" "example_template" {
description = "Managed by Terraform"
start_on_boot = "true"
disk {
datastore_id = element(data.proxmox_virtual_environment_datastores.example.datastore_ids, index(data.proxmox_virtual_environment_datastores.example.datastore_ids, "local-lvm"))
size = 4
}
mount_point {
// volume mount
volume = element(data.proxmox_virtual_environment_datastores.example.datastore_ids, index(data.proxmox_virtual_environment_datastores.example.datastore_ids, "local-lvm"))
size = "4G"
path = "mnt/local"
}
initialization {
dns {
servers = ["1.1.1.1", "8.8.8.8"]
}
hostname = "terraform-provider-proxmox-example-lxc-template"
ip_config {
ipv4 {
address = "dhcp"
}
}
user_account {
keys = [trimspace(tls_private_key.example.public_key_openssh)]
password = "example"
}
}
network_interface {
name = "veth0"
mtu = 1450
}
node_name = data.proxmox_virtual_environment_nodes.example.names[0]
operating_system {
template_file_id = proxmox_virtual_environment_download_file.release_20240725_ubuntu_24_noble_lxc_img.id
type = "ubuntu"
}
pool_id = proxmox_virtual_environment_pool.example.id
template = true
// use auto-generated vm_id
tags = [
"container",
"example",
"terraform",
]
startup {
order = "3"
up_delay = "60"
down_delay = "60"
}
}
resource "proxmox_virtual_environment_container" "example" {
disk {
datastore_id = element(data.proxmox_virtual_environment_datastores.example.datastore_ids, index(data.proxmox_virtual_environment_datastores.example.datastore_ids, "local-lvm"))
}
clone {
vm_id = proxmox_virtual_environment_container.example_template.id
}
initialization {
hostname = "terraform-provider-proxmox-example-lxc"
}
mount_point {
// bind mount, requires root@pam
volume = "/mnt/bindmounts/shared"
path = "/shared"
}
node_name = data.proxmox_virtual_environment_nodes.example.names[0]
pool_id = proxmox_virtual_environment_pool.example.id
# Set the protection flag to prevent the deletion/update operations for the container and its disks.
# protection = true
vm_id = 2043
}
output "resource_proxmox_virtual_environment_container_example_id" {
value = proxmox_virtual_environment_container.example.id
}