Skip to content

Instantly share code, notes, and snippets.

@Satak
Last active January 30, 2023 20:20
Show Gist options
  • Save Satak/f613431114329e82016238f200bf125e to your computer and use it in GitHub Desktop.
Save Satak/f613431114329e82016238f200bf125e to your computer and use it in GitHub Desktop.
workspace-1:
environments:
dev: {}
test:
variables:
ws-1-top-var-1:
value: ws 1 test var value
prod:
variables:
WS-1-PROD-VAR:
value: WS 1 PROD VAR VALUE
variables:
# environment: {}
ws-1-top-var-1:
value: ws 1 top level var
workspace-2:
variables:
ws-2-top-var-1:
value: ws 2 top level var 1 value AAAAAAAAAAAA
ws-2-top-var-2:
value: ws 2 top level var 2 value BBBBBBBBBBBB
workspace-3:
environments:
prod:
variables:
WS-3-PROD-VAR:
value: WS 3 PROD VAR VALUE
variables:
WS-3-TOP-VAR:
value: WS 3 top value
WS-3-PROD-VAR:
value: THIS SHOULD NOT BE FOUND SINCE IT IS DEFINED AT ENV LEVEL
locals {
workspace_data = yamldecode(file("./config.yaml"))
workspace_vars = { for v in flatten(
[for ws_name, ws_value in local.workspace_data :
[for env_name, env_value in try(ws_value.environments, { "" : {} }) :
[for var_name, var_value in merge(try(ws_value.variables, {}), try(env_value.variables, {})) :
{
ws_name : ws_name
# ws_value : ws_value
env_name : env_name
# env_value : env_value
var_name : var_name
var_value : var_value.value
}
]
]
]
) : join("-", compact([v.ws_name, v.env_name, v.var_name])) => v }
}
output "workspace_vars" {
value = local.workspace_vars
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment