Skip to content

Commit 9859ab0

Browse files
author
dmytro_velychko3
committed
feat: refactoring
1 parent 0027f1b commit 9859ab0

File tree

1 file changed

+54
-0
lines changed

1 file changed

+54
-0
lines changed

secrets.tf

Lines changed: 54 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,12 @@ locals {
33
(var.sp_client_id_secret_name) = { value = data.azurerm_key_vault_secret.sp_client_id.value }
44
(var.sp_key_secret_name) = { value = data.azurerm_key_vault_secret.sp_key.value }
55
}
6+
7+
secrets_objects_list = flatten([for param in var.secret_scope : [
8+
for secret in param.secrets : {
9+
scope_name = param.scope_name, key = secret.key, string_value = secret.string_value
10+
}] if param.secrets != null
11+
])
612
}
713

814
# Secret Scope with SP secrets for mounting Azure Data Lake Storage
@@ -18,3 +24,51 @@ resource "databricks_secret" "main" {
1824
string_value = each.value["value"]
1925
scope = databricks_secret_scope.main.id
2026
}
27+
28+
# Custom additional Databricks Secret Scope
29+
resource "databricks_secret_scope" "this" {
30+
for_each = {
31+
for param in var.secret_scope : (param.scope_name) => param
32+
if param.scope_name != null
33+
}
34+
35+
name = each.key
36+
initial_manage_principal = "users"
37+
}
38+
39+
resource "databricks_secret" "this" {
40+
for_each = { for entry in local.secrets_objects_list : "${entry.scope_name}.${entry.key}" => entry }
41+
42+
key = each.value.key
43+
string_value = each.value.string_value
44+
scope = databricks_secret_scope.this[each.value.scope_name].id
45+
}
46+
47+
# At the nearest future, Azure will allow acquiring AAD tokens by service principals,
48+
# thus providing an ability to create Azure backed Key Vault with Terraform
49+
# https://github.com/databricks/terraform-provider-databricks/pull/1965
50+
51+
## Azure Key Vault-backed Scope
52+
#resource "azurerm_key_vault_access_policy" "databricks" {
53+
# count = var.key_vault_secret_scope.key_vault_id != null ? 1 : 0
54+
55+
# key_vault_id = var.key_vault_secret_scope.key_vault_id
56+
# object_id = "9b38785a-6e08-4087-a0c4-20634343f21f" # Global 'AzureDatabricks' SP object id
57+
# tenant_id = data.azurerm_key_vault_secret.tenant_id.value
58+
#
59+
# secret_permissions = [
60+
# "Get",
61+
# "List",
62+
# ]
63+
#}
64+
#
65+
#resource "databricks_secret_scope" "external" {
66+
# count = var.key_vault_secret_scope.key_vault_id != null ? 1 : 0
67+
#
68+
# name = "external"
69+
# keyvault_metadata {
70+
# resource_id = var.key_vault_secret_scope.key_vault_id
71+
# dns_name = var.key_vault_secret_scope.dns_name
72+
# }
73+
# depends_on = [azurerm_key_vault_access_policy.databricks]
74+
#}

0 commit comments

Comments
 (0)