From c011c9a3c9be051b4e2e0521d95f2fbfd588db02 Mon Sep 17 00:00:00 2001 From: ITQ Date: Wed, 6 Aug 2025 03:09:18 +0300 Subject: [PATCH] feat: added instance terraform module --- terraform/modules/instance/main.tf | 35 +++++++++++++++++++++++++ terraform/modules/instance/provider.tf | 7 +++++ terraform/modules/instance/variables.tf | 9 +++++++ 3 files changed, 51 insertions(+) create mode 100644 terraform/modules/instance/main.tf create mode 100644 terraform/modules/instance/provider.tf create mode 100644 terraform/modules/instance/variables.tf diff --git a/terraform/modules/instance/main.tf b/terraform/modules/instance/main.tf new file mode 100644 index 0000000..0625f4b --- /dev/null +++ b/terraform/modules/instance/main.tf @@ -0,0 +1,35 @@ +resource "libvirt_volume" "image" { + name = "${var.name}_image" + base_volume_id = var.volume_base_id +} + +resource "libvirt_cloudinit_disk" "init" { + name = "${var.name}_cloudinit" + user_data = var.user_data + network_config = var.network_config +} + +resource "libvirt_domain" "this" { + name = var.name + vcpu = var.vcpu + memory = var.memory + + cpu { mode = "host-passthrough" } + + disk { volume_id = libvirt_volume.image.id } + cloudinit = libvirt_cloudinit_disk.init.id + + network_interface { + network_id = var.network_id + wait_for_lease = false + } + + arch = "x86_64" + type = "kvm" + machine = "q35" + + running = true + autostart = false + + xml { xslt = file("${path.root}/configs/libvirt/patch.xsl") } +} diff --git a/terraform/modules/instance/provider.tf b/terraform/modules/instance/provider.tf new file mode 100644 index 0000000..0509a13 --- /dev/null +++ b/terraform/modules/instance/provider.tf @@ -0,0 +1,7 @@ +terraform { + required_providers { + libvirt = { + source = "dmacvicar/libvirt" + } + } +} diff --git a/terraform/modules/instance/variables.tf b/terraform/modules/instance/variables.tf new file mode 100644 index 0000000..1f6e670 --- /dev/null +++ b/terraform/modules/instance/variables.tf @@ -0,0 +1,9 @@ +variable "name" {} +variable "network_id" {} +variable "ipv4" {} +variable "ipv6" {} +variable "volume_base_id" {} +variable "user_data" {} +variable "network_config" {} +variable "vcpu" {} +variable "memory" {}