85 lines
1.7 KiB
HCL
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
|
|
}
|
|
} |