Files
draft-opentofu/main_1.tf
2025-11-22 01:27:53 +01:00

92 lines
2.6 KiB
HCL

resource "proxmox_virtual_environment_download_file" "debian_1" {
content_type = "iso"
datastore_id = "local"
file_name = "debian-13-generic-amd64.img"
node_name = var.pve_node
url = var.debian_image_url
checksum = var.debian_image_checksum
checksum_algorithm = var.debian_image_checksum_algorithm
overwrite = true
overwrite_unmanaged = true
}
resource "proxmox_virtual_environment_file" "user_config_1" {
content_type = "snippets"
datastore_id = "local"
node_name = var.pve_node
source_raw {
data = file("cloud-init/user-config.yml")
file_name = "user-config.yml"
}
}
resource "proxmox_virtual_environment_file" "vendor_config_1" {
content_type = "snippets"
datastore_id = "local"
node_name = var.pve_node
source_raw {
data = file("cloud-init/vendor-config.yml")
file_name = "vendor-config.yml"
}
}
resource "proxmox_virtual_environment_vm" "debian_1" {
depends_on = [
proxmox_virtual_environment_file.user_config_1,
proxmox_virtual_environment_file.vendor_config_1
]
name = "debian-13"
description = "Debian 13 created with Terraform"
tags = ["terraform", "debian"]
node_name = var.pve_node
cpu {
cores = 2
}
memory {
dedicated = 2048
floating = 2048
}
disk {
datastore_id = "local-zfs"
file_id = proxmox_virtual_environment_download_file.debian_1.id
interface = "virtio0"
iothread = true
discard = "on"
ssd = true
# disk {
# datastore_id = var.node_datastore # Datastore to hold the disk
# interface = "scsi0" # Primary disk interface
# size = 4 # Disk size in GB
}
network_device {
bridge = "vmbr0"
model = "virtio"
}
operating_system {
type = "l26"
}
agent {
enabled = true
}
initialization {
datastore_id = var.node_datastore # Datastore to hold the disk
ip_config {
ipv4 {
address = "dhcp"
}
}
# Link cloud-init yml files
user_data_file_id = proxmox_virtual_environment_file.user_config_1.id
vendor_data_file_id = proxmox_virtual_environment_file.vendor_config_1.id
}
}
output "debian_1_ip_address" {
value = proxmox_virtual_environment_vm.debian_1.ipv4_addresses
}