Files
terraform/modules/vm/main.tf

85 lines
1.7 KiB
HCL

terraform {
required_providers {
proxmox = {
source = "bpg/proxmox"
version = "0.42.0"
}
}
}
resource "proxmox_virtual_environment_file" "cloud_user_config" {
content_type = "snippets"
datastore_id = "local"
node_name = var.node_name
source_raw {
data = var.cloudinit_config
file_name = "${var.hostname}.${var.domain}-user.yaml"
}
}
resource "proxmox_virtual_environment_file" "cloud_meta_config" {
content_type = "snippets"
datastore_id = "local"
node_name = var.node_name
source_raw {
data = templatefile("${path.module}/cloud-init/meta_data",
{
instance_id = sha1(var.hostname)
local_hostname = var.hostname
}
)
file_name = "${var.hostname}.${var.domain}-meta_data.yaml"
}
}
resource "proxmox_virtual_environment_vm" "vm" {
name = var.name
vm_id = var.vm_id
node_name = var.node_name
clone {
vm_id = var.template_id
}
cpu {
cores = var.cores
}
memory {
dedicated = var.memory
}
disk {
interface = "scsi0"
iothread = true
datastore_id = "local-lvm"
size = var.disk_size
discard = "ignore"
}
agent {
enabled = true
}
network_device {
bridge = "vmbr0"
}
initialization {
ip_config {
ipv4 {
address = "${var.vm_ip_address}/24"
gateway = "192.168.1.1"
}
}
datastore_id = "local-lvm"
interface = "ide2"
user_data_file_id = proxmox_virtual_environment_file.cloud_user_config.id
meta_data_file_id = proxmox_virtual_environment_file.cloud_meta_config.id
}
}