From 131aafc7b8f0eadd3210e99b260131f3149fb367 Mon Sep 17 00:00:00 2001 From: Borislav Raynov Date: Mon, 30 Mar 2026 15:52:58 +0300 Subject: [PATCH 1/3] Export virtual_machines_default in automation_runbooks module --- src/automation_runbooks.tf | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/automation_runbooks.tf b/src/automation_runbooks.tf index 973554ac..057039a6 100644 --- a/src/automation_runbooks.tf +++ b/src/automation_runbooks.tf @@ -25,6 +25,11 @@ module "automation_runbooks" { key => vm.windows_virtual_machines[0] if length(vm.windows_virtual_machines) > 0 } + virtual_machines_default = { + for key, vm in module.virtual_machines : + key => vm.virtual_machines_default[0] + if length(vm.virtual_machines_default) > 0 + } } }, { From fdc286dd0277aa8de793ba76e12dce711a1008e3 Mon Sep 17 00:00:00 2001 From: Borislav Raynov Date: Mon, 30 Mar 2026 16:06:34 +0300 Subject: [PATCH 2/3] Output virtual_machines_default from virtual_machines module --- src/modules/virtual_machines/_outputs.tf | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/src/modules/virtual_machines/_outputs.tf b/src/modules/virtual_machines/_outputs.tf index 8e321a78..ade0059f 100644 --- a/src/modules/virtual_machines/_outputs.tf +++ b/src/modules/virtual_machines/_outputs.tf @@ -13,3 +13,11 @@ output "linux_virtual_machines" { if length(vm) > 0 } : {} } + +output "virtual_machines_default" { + value = length(module.virtual_machines_default) > 0 ? { + for key, vm in module.virtual_machines_default : + key => vm + if length(vm) > 0 + } : {} +} From eefdc736d97ed70176e24654a89a8b4d72ec9a00 Mon Sep 17 00:00:00 2001 From: Borislav Raynov Date: Tue, 31 Mar 2026 16:16:17 +0300 Subject: [PATCH 3/3] Add multi job multi param schedules instantiations from runbook module --- src/modules/automation_runbook/_locals.tf | 35 ++++++++++++++++------- src/modules/automation_runbook/main.tf | 2 +- 2 files changed, 26 insertions(+), 11 deletions(-) diff --git a/src/modules/automation_runbook/_locals.tf b/src/modules/automation_runbook/_locals.tf index f725ec34..40b2c654 100644 --- a/src/modules/automation_runbook/_locals.tf +++ b/src/modules/automation_runbook/_locals.tf @@ -16,22 +16,40 @@ locals { try(var.settings.tags, {}) ) - # Resolve landing zone per job schedule + generated_job_schedules = merge( + [ + for schedule_key, schedule_list in try(var.settings.schedule_map, {}) : { + for schedule_ref in schedule_list : + "${schedule_key}-${schedule_ref}" => { + schedule_ref = schedule_ref + parameters = merge( + try(var.settings.default_job_parameters, {}), + { + for p_key, p_val in try(var.settings.dynamic_job_parameters, {}) : + p_key => replace(p_val, "{schedule_key}", schedule_key) + } + ) + } + } + ]... + ) + + merged_job_schedules = merge( + local.generated_job_schedules, + try(var.settings.job_schedules, {}) + ) + job_lzkeys = { - for js_key, js in try(var.settings.job_schedules, {}) : + for js_key, js in local.merged_job_schedules : js_key => try(js.parameters.lzkey, var.client_config.landingzone_key) } - # Resolve parameters job_schedule_parameters = { - for js_key, js in try(var.settings.job_schedules, {}) : - + for js_key, js in local.merged_job_schedules : js_key => merge( - # 1. Resolve all parameters (keep original keys) { for p_key, p_val in try(js.parameters, {}) : p_key => ( - # CASE 1: resolve reference if ends with _ref endswith(p_key, "_ref") && length(trimspace(p_val)) > 0 ? try( lookup( @@ -45,12 +63,9 @@ locals { )[split("/", p_val)[2]], null ) - # CASE 2: direct value : p_val ) }, - - # 2. Always set subscription_id { subscription_id = try(js.parameters.subscription_id, var.global_settings.subscription_id) } diff --git a/src/modules/automation_runbook/main.tf b/src/modules/automation_runbook/main.tf index cecf2304..44e7214a 100644 --- a/src/modules/automation_runbook/main.tf +++ b/src/modules/automation_runbook/main.tf @@ -63,7 +63,7 @@ resource "azurerm_automation_runbook" "main" { } dynamic "job_schedule" { - for_each = try(var.settings.job_schedules, {}) + for_each = local.merged_job_schedules content { schedule_name = try( var.resources[try(job_schedule.value.job_lz_key, var.client_config.landingzone_key)]