Pim Kunis
111bf68a0a
move docker swarm ansible to this repo move thecloud ansible to this repo support data disks in terraform
66 lines
1.3 KiB
HCL
66 lines
1.3 KiB
HCL
terraform {
|
|
required_providers {
|
|
libvirt = {
|
|
source = "dmacvicar/libvirt"
|
|
}
|
|
}
|
|
}
|
|
|
|
resource "libvirt_volume" "os" {
|
|
name = "${var.name}.qcow2"
|
|
pool = "disks"
|
|
size = 1024 * 1024 * 1024 * var.storage
|
|
base_volume_name = "debian-bookworm.qcow2"
|
|
base_volume_pool = "images"
|
|
|
|
lifecycle {
|
|
replace_triggered_by = [
|
|
libvirt_cloudinit_disk.main.id
|
|
]
|
|
}
|
|
}
|
|
|
|
resource "libvirt_cloudinit_disk" "main" {
|
|
name = "${var.name}.iso"
|
|
pool = "cloudinit"
|
|
user_data = templatefile("${path.module}/files/cloud_init.cfg.tftpl", {
|
|
hostname = var.name
|
|
data_disk = var.data_disk
|
|
})
|
|
network_config = templatefile("${path.module}/files/network_config.cfg.tftpl", {
|
|
static_ip = var.static_ip
|
|
})
|
|
}
|
|
|
|
resource "libvirt_domain" "main" {
|
|
name = var.name
|
|
memory = var.ram
|
|
vcpu = 4
|
|
autostart = true
|
|
|
|
disk {
|
|
volume_id = libvirt_volume.os.id
|
|
}
|
|
|
|
dynamic "disk" {
|
|
for_each = var.data_disk != null ? [1] : []
|
|
|
|
content {
|
|
volume_id = var.data_disk
|
|
}
|
|
}
|
|
|
|
network_interface {
|
|
bridge = "bridgedmz"
|
|
hostname = var.name
|
|
mac = var.mac
|
|
}
|
|
|
|
cloudinit = libvirt_cloudinit_disk.main.id
|
|
|
|
lifecycle {
|
|
replace_triggered_by = [
|
|
libvirt_cloudinit_disk.main.id
|
|
]
|
|
}
|
|
}
|