115 lines
2.4 KiB
Terraform
115 lines
2.4 KiB
Terraform
data "proxmox_virtual_environment_vms" "template" {
|
|
node_name = var.target_node
|
|
tags = ["template", var.template_tag]
|
|
}
|
|
|
|
|
|
resource "proxmox_virtual_environment_file" "cloud_user_config" {
|
|
content_type = "snippets"
|
|
datastore_id = "local"
|
|
node_name = var.target_node
|
|
|
|
source_raw {
|
|
data = file("cloud-init/user_data")
|
|
|
|
file_name = "${var.vm_hostname}.${var.domain}-ci-user.yml"
|
|
}
|
|
}
|
|
|
|
resource "proxmox_virtual_environment_file" "cloud_meta_config" {
|
|
content_type = "snippets"
|
|
datastore_id = "local"
|
|
node_name = var.target_node
|
|
|
|
source_raw {
|
|
data = templatefile("D:\Users\thedj\git\Terraform-Proxmox\cloud-init\meta_data",
|
|
{
|
|
instance_id = sha1(var.vm_hostname)
|
|
local_hostname = var.vm_hostname
|
|
}
|
|
)
|
|
|
|
file_name = "${var.vm_hostname}.${var.domain}-ci-meta_data.yml"
|
|
}
|
|
}
|
|
|
|
resource "proxmox_virtual_environment_vm" "vm" {
|
|
name = "${var.vm_hostname}.${var.domain}"
|
|
node_name = var.target_node
|
|
|
|
on_boot = var.onboot
|
|
|
|
|
|
agent {
|
|
enabled = true
|
|
}
|
|
|
|
tags = var.vm_tags
|
|
|
|
cpu {
|
|
type = "x86-64-v2-AES"
|
|
cores = var.cores
|
|
sockets = var.sockets
|
|
flags = []
|
|
}
|
|
|
|
memory {
|
|
dedicated = var.memory
|
|
}
|
|
|
|
network_device {
|
|
bridge = "vmbr0"
|
|
model = "virtio"
|
|
}
|
|
|
|
# Ignore changes to the network
|
|
## MAC address is generated on every apply, causing
|
|
## TF to think this needs to be rebuilt on every apply
|
|
lifecycle {
|
|
ignore_changes = [
|
|
network_device,
|
|
]
|
|
}
|
|
|
|
boot_order = ["scsi0"]
|
|
scsi_hardware = "virtio-scsi-single"
|
|
|
|
disk {
|
|
interface = "scsi0"
|
|
iothread = true
|
|
datastore_id = "${var.disk.storage}"
|
|
size = var.disk.size
|
|
discard = "ignore"
|
|
}
|
|
|
|
dynamic "disk" {
|
|
for_each = var.additionnal_disks
|
|
content {
|
|
interface = "scsi${1 + disk.key}"
|
|
iothread = true
|
|
datastore_id = "${disk.value.storage}"
|
|
size = disk.value.size
|
|
discard = "ignore"
|
|
file_format = "raw"
|
|
}
|
|
}
|
|
|
|
clone {
|
|
vm_id = data.proxmox_virtual_environment_vms.template.vms[0].vm_id
|
|
}
|
|
|
|
initialization {
|
|
# ip_config {
|
|
# ipv4 {
|
|
# address = "dhcp"
|
|
# }
|
|
# }
|
|
|
|
datastore_id = "local"
|
|
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
|
|
}
|
|
|
|
|
|
} |