Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions src/automation_runbooks.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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
}
}
},
{
Expand Down
35 changes: 25 additions & 10 deletions src/modules/automation_runbook/_locals.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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(
Expand All @@ -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)
}
Expand Down
2 changes: 1 addition & 1 deletion src/modules/automation_runbook/main.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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)]
Expand Down
8 changes: 8 additions & 0 deletions src/modules/virtual_machines/_outputs.tf
Original file line number Diff line number Diff line change
Expand Up @@ -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
} : {}
}
Loading