1
1
locals {
2
2
secrets_acl_objects_list = flatten ([for param in var . secret_scope : [
3
- for permission in param . acl : {
3
+ for permission in param . scope_acl : {
4
4
scope = param . scope_name , principal = permission . principal , permission = permission . permission
5
5
}] if param . scope_acl != null
6
6
])
@@ -12,6 +12,25 @@ locals {
12
12
secret_key = secret.key,
13
13
secret_value = secret.string_value,
14
14
}]]) : " ${ object . scope_name } :${ object . secret_key } " => object }
15
+
16
+ secret_scopes_combined = merge (
17
+ {
18
+ for param in var . secret_scope : param . scope_name => {
19
+ scope_name = param.scope_name
20
+ secrets = param.secrets != null ? param.secrets : []
21
+ key_vault_id = null
22
+ dns_name = null
23
+ } if param. scope_name != null
24
+ },
25
+ var. cloud_name == " azure" ? {
26
+ for kv in var . key_vault_secret_scope : kv . name => {
27
+ scope_name = kv.name
28
+ secrets = []
29
+ key_vault_id = kv.key_vault_id
30
+ dns_name = kv.dns_name
31
+ } if kv. name != null
32
+ } : {}
33
+ )
15
34
}
16
35
17
36
# Secret Scope with SP secrets for mounting Azure Data Lake Storage
@@ -39,16 +58,12 @@ resource "databricks_secret" "main" {
39
58
40
59
# Custom additional Databricks Secret Scope
41
60
resource "databricks_secret_scope" "this" {
42
- for_each = {
43
- for param in var . secret_scope : (param. scope_name ) => param
44
- if param . scope_name != null
45
- }
61
+ for_each = local. secret_scopes_combined
46
62
47
- name = each. key
63
+ name = each. value . scope_name
48
64
49
- # Key Vault metadata block only for Azure
50
65
dynamic "keyvault_metadata" {
51
- for_each = var . cloud_name == " azure " ? [for kv in var . key_vault_secret_scope : kv ] : []
66
+ for_each = each . value . key_vault_id != null ? [each . value ] : []
52
67
content {
53
68
resource_id = keyvault_metadata. value . key_vault_id
54
69
dns_name = keyvault_metadata. value . dns_name
@@ -69,7 +84,7 @@ resource "databricks_secret" "this" {
69
84
70
85
resource "databricks_secret_acl" "this" {
71
86
for_each = var. cloud_name == " azure" && length (local. secrets_acl_objects_list ) > 0 ? {
72
- for_each = { for entry in local . secrets_acl_objects_list : " ${ entry . scope } .${ entry . principal } .${ entry . permission } " => entry }
87
+ for entry in local . secrets_acl_objects_list : " ${ entry . scope } .${ entry . principal } .${ entry . permission } " => entry
73
88
} : {}
74
89
75
90
scope = databricks_secret_scope. this [each . value . scope ]. name
0 commit comments