From f5412c313849cf78718eff14068b212e097ce48c Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Mon, 27 Feb 2023 14:13:58 +0100 Subject: [PATCH 1/9] fix(nebula): improve resource templates --- modules/nebula/main.tf | 9 ++++++--- modules/virtualMachine/locals.tf | 1 + modules/virtualMachine/main.tf | 1 - 3 files changed, 7 insertions(+), 4 deletions(-) diff --git a/modules/nebula/main.tf b/modules/nebula/main.tf index 188c81a..6c01048 100644 --- a/modules/nebula/main.tf +++ b/modules/nebula/main.tf @@ -12,7 +12,7 @@ variable "image_format" { } variable "dev_prefix" { - default = "vd" + default = "sd" } variable "permissions" { @@ -47,7 +47,7 @@ resource "opennebula_image" "system" { permissions = var.permissions } -// data image +/* data image not needed now resource "opennebula_image" "data" { for_each = var.vms @@ -60,7 +60,7 @@ resource "opennebula_image" "data" { format = var.image_format dev_prefix = var.dev_prefix permissions = var.permissions -} +}*/ resource "opennebula_template" "vm_template" { for_each = var.vms @@ -84,9 +84,12 @@ resource "opennebula_template" "vm_template" { disk { image_id = opennebula_image.system[each.key].id } + + /* Not needed now disk { image_id = opennebula_image.data[each.key].id } + */ os { arch = "x86_64" diff --git a/modules/virtualMachine/locals.tf b/modules/virtualMachine/locals.tf index d10ce7a..1bd45eb 100644 --- a/modules/virtualMachine/locals.tf +++ b/modules/virtualMachine/locals.tf @@ -3,4 +3,5 @@ locals { system_image_name = "system.${local.fqdn}" system_image_source = var.system_image_source data_image_name = "data.${local.fqdn}" + group = "${var.group}" } diff --git a/modules/virtualMachine/main.tf b/modules/virtualMachine/main.tf index c69065b..68fc2db 100644 --- a/modules/virtualMachine/main.tf +++ b/modules/virtualMachine/main.tf @@ -1,4 +1,3 @@ - resource "opennebula_group" "main" { name = var.group } From b214694cecb83b065837b6f377bd04fbcd5a1e97 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Mon, 27 Feb 2023 14:16:49 +0100 Subject: [PATCH 2/9] fix(nebula): correct image usage in template --- modules/nebula/main.tf | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/nebula/main.tf b/modules/nebula/main.tf index bd8ae19..d998cf4 100644 --- a/modules/nebula/main.tf +++ b/modules/nebula/main.tf @@ -108,8 +108,12 @@ resource "opennebula_template" "vm_template" { } } permissions = var.permissions + depends_on = [ opennebula_image.system ] + + /* Not needed now depends_on = [ opennebula_image.system, opennebula_image.data ] + */ } resource "opennebula_virtual_machine" "vm" { From d02ec11cb9fec59c52d4eeb39d73954139f77ec1 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Mon, 27 Feb 2023 14:20:52 +0100 Subject: [PATCH 3/9] fix(nebula): correct sched_ds_requirements usage --- modules/nebula/main.tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/nebula/main.tf b/modules/nebula/main.tf index d998cf4..352afec 100644 --- a/modules/nebula/main.tf +++ b/modules/nebula/main.tf @@ -90,7 +90,8 @@ resource "opennebula_template" "vm_template" { } */ - sched_ds_requirements = ( each.value.sysdatastore != "" ? each.value.sysdatastore : var.one_sys_datastore ) + //sched_ds_requirements = ( each.value.sysdatastore != "" ? "ID=\"${each.value.sysdatastore}\"" : "ID=\"${var.one_sys_datastore}\"" ) + sched_ds_requirements = ( each.value.sysdatastore != "" ? "ID=\"${each.value.sysdatastore}\"" : "" ) os { arch = "x86_64" From 85bb5d597dc5a134744f5833edb7ff077eac8733 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Thu, 2 Mar 2023 10:12:45 +0100 Subject: [PATCH 4/9] fix(nebula): try to add mac and IP support --- modules/nebula/main.tf | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/modules/nebula/main.tf b/modules/nebula/main.tf index 352afec..ff3ce36 100644 --- a/modules/nebula/main.tf +++ b/modules/nebula/main.tf @@ -105,7 +105,8 @@ resource "opennebula_template" "vm_template" { content { network_id = nic.value.network_id model = "virtio" - mac = nic.value.mac + mac = ( nic.value.mac != "" ? nic.value.mac : "" ) + ip = ( nic.value.ip != "" ? nic.value.ip : "" ) } } permissions = var.permissions From 75babdbff8275c426c000d230a2425729200cdbf Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Thu, 2 Mar 2023 10:26:50 +0100 Subject: [PATCH 5/9] fix(nebula): fix unclear variable name --- modules/nebula/main.tf | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/nebula/main.tf b/modules/nebula/main.tf index ff3ce36..b1ae167 100644 --- a/modules/nebula/main.tf +++ b/modules/nebula/main.tf @@ -24,7 +24,7 @@ variable "graphics" { } -variable "one_prod_ds" { +variable "one_image_ds" { default = "101" } @@ -39,7 +39,7 @@ resource "opennebula_image" "system" { name = "system-${each.key}.${each.value.domain}" description = "System disk for ${each.key}" - datastore_id = var.one_prod_ds + datastore_id = var.one_image_ds path = "https://vulcain.cadoles.com/empty_20G" persistent = each.value.system_image_persistent format = var.image_format @@ -53,7 +53,7 @@ resource "opennebula_image" "data" { name = "data-${each.key}.${each.value.domain}" path = "https://vulcain.cadoles.com/empty_40G" - datastore_id = var.one_prod_ds + datastore_id = var.one_image_ds description = "data disk for ${each.key}" persistent = each.value.data_image_persistent format = var.image_format From 18365fdf80cba1a5a24fc5d47e5cb2775ddeaada Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Thu, 2 Mar 2023 16:10:47 +0100 Subject: [PATCH 6/9] feat(nebula): adding multiple data disk support for Virtual Machines --- modules/nebula/main.tf | 34 ++++++++++++++++++++++++---------- 1 file changed, 24 insertions(+), 10 deletions(-) diff --git a/modules/nebula/main.tf b/modules/nebula/main.tf index b1ae167..88ea2be 100644 --- a/modules/nebula/main.tf +++ b/modules/nebula/main.tf @@ -32,7 +32,18 @@ variable "one_sys_datastore" { default = "100" } - +locals { + data_disks = flatten([ + for vm_key, vm in var.vms : [ + for disk in vm.data_disks : { + name = "${vm_key}.${vm.domain}-data-${disk.name}" + size = disk.size + persist = disk.persistent + } + ] + ]) +} + // system image resource "opennebula_image" "system" { for_each = var.vms @@ -47,19 +58,22 @@ resource "opennebula_image" "system" { permissions = var.permissions } -/* data image not needed now -resource "opennebula_image" "data" { - for_each = var.vms - name = "data-${each.key}.${each.value.domain}" - path = "https://vulcain.cadoles.com/empty_40G" - datastore_id = var.one_image_ds - description = "data disk for ${each.key}" - persistent = each.value.data_image_persistent +// data image not needed now +resource "opennebula_image" "data" { + for_each = { + for ds in local.data_disks : "${ds.vm_key}.${ds.name}" => ds + } + + name = each.value.name + path = "https://vulcain.cadoles.com/empty_${each.value.size}" + datastore_id = var.one_image_ds + description = "Data disk of ${each.value.size} for ${each.value.vm_key}" + persistent = each.value.persist format = var.image_format dev_prefix = var.dev_prefix permissions = var.permissions -}*/ +} resource "opennebula_template" "vm_template" { for_each = var.vms From 0acf9bfc87995462cd7c3461d9cac8f0f46cafb6 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Thu, 2 Mar 2023 16:14:55 +0100 Subject: [PATCH 7/9] fix(nebula): properwq data disk image --- modules/nebula/main.tf | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/nebula/main.tf b/modules/nebula/main.tf index 88ea2be..2010daa 100644 --- a/modules/nebula/main.tf +++ b/modules/nebula/main.tf @@ -36,7 +36,8 @@ locals { data_disks = flatten([ for vm_key, vm in var.vms : [ for disk in vm.data_disks : { - name = "${vm_key}.${vm.domain}-data-${disk.name}" + vm_key = "${vm_key}.${vm.domain}" + name = disk.name size = disk.size persist = disk.persistent } @@ -65,7 +66,7 @@ resource "opennebula_image" "data" { for ds in local.data_disks : "${ds.vm_key}.${ds.name}" => ds } - name = each.value.name + name = "${each.value.vm_key}-data-${disk.name}" path = "https://vulcain.cadoles.com/empty_${each.value.size}" datastore_id = var.one_image_ds description = "Data disk of ${each.value.size} for ${each.value.vm_key}" From a8c3955121484fb5ffd1a71471f9e38a6d2d5530 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Thu, 2 Mar 2023 16:16:02 +0100 Subject: [PATCH 8/9] fix(nebula): correct bad variable usage --- modules/nebula/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/nebula/main.tf b/modules/nebula/main.tf index 2010daa..ad7f8f4 100644 --- a/modules/nebula/main.tf +++ b/modules/nebula/main.tf @@ -66,7 +66,7 @@ resource "opennebula_image" "data" { for ds in local.data_disks : "${ds.vm_key}.${ds.name}" => ds } - name = "${each.value.vm_key}-data-${disk.name}" + name = "${each.value.vm_key}-data-${each.value.name}" path = "https://vulcain.cadoles.com/empty_${each.value.size}" datastore_id = var.one_image_ds description = "Data disk of ${each.value.size} for ${each.value.vm_key}" From 77eec91bf12df3afe67e940942017fd5554152d2 Mon Sep 17 00:00:00 2001 From: Philippe Caseiro Date: Thu, 2 Mar 2023 17:13:08 +0100 Subject: [PATCH 9/9] fix(nebula): actually use the data disks in the templates --- modules/nebula/main.tf | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/nebula/main.tf b/modules/nebula/main.tf index ad7f8f4..d53b045 100644 --- a/modules/nebula/main.tf +++ b/modules/nebula/main.tf @@ -99,11 +99,15 @@ resource "opennebula_template" "vm_template" { image_id = opennebula_image.system[each.key].id } - /* Not needed now - disk { - image_id = opennebula_image.data[each.key].id + dynamic "disk" { + for_each = { + for ds in local.data_disks : "${ds.vm_key}.${ds.name}" => ds if "${each.key}.${each.value.domain}" == ds.vm_key + } + iterator = current_disk + content { + image_id = opennebula_image.data[current_disk.key].id + } } - */ //sched_ds_requirements = ( each.value.sysdatastore != "" ? "ID=\"${each.value.sysdatastore}\"" : "ID=\"${var.one_sys_datastore}\"" ) sched_ds_requirements = ( each.value.sysdatastore != "" ? "ID=\"${each.value.sysdatastore}\"" : "" )