Skip to content

Commit 1808835

Browse files
authored
Merge pull request #175 from PerfectThymeTech/marvinbuss/bugfix_starter_wh
Fix Bug for starter WH
2 parents 6b4172c + 704db79 commit 1808835

File tree

7 files changed

+58
-32
lines changed

7 files changed

+58
-32
lines changed

databricks.tf

Lines changed: 12 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -14,11 +14,12 @@ module "databricks_core" {
1414
tags = var.tags
1515

1616
# Service variables
17-
databricks_workspace_details = local.databricks_workspace_details
18-
databricks_private_endpoint_rules = local.databricks_private_endpoint_rules
19-
databricks_ip_access_list_allow = []
20-
databricks_ip_access_list_deny = []
21-
databricks_network_connectivity_config_name = var.databricks_network_connectivity_config_name
17+
databricks_workspace_details = local.databricks_workspace_details
18+
databricks_private_endpoint_rules = local.databricks_private_endpoint_rules
19+
databricks_ip_access_list_allow = []
20+
databricks_ip_access_list_deny = []
21+
databricks_network_connectivity_config_name = var.databricks_network_connectivity_config_name
22+
databricks_compliance_security_profile_standards = var.databricks_compliance_security_profile_standards
2223

2324
# Identity variables
2425
service_principal_name_terraform_plan = var.service_principal_name_terraform_plan
@@ -65,12 +66,12 @@ module "databricks_data_application" {
6566
data_provider_details = try(each.value.data_providers, {})
6667

6768
# Identity variables
68-
admin_group_name = try(each.value.identity.admin_group_name, "")
69-
developer_group_name = try(each.value.identity.developer_group_name, "")
70-
reader_group_name = try(each.value.identity.reader_group_name, "")
71-
service_principal_name = try(each.value.identity.service_principal_name, "")
72-
databricks_service_principal_terraform_plan_application_id = module.databricks_core.databricks_service_principal_terraform_plan_application_id
73-
service_principal_name_terraform_plan = var.service_principal_name_terraform_plan
69+
admin_group_name = try(each.value.identity.admin_group_name, "")
70+
developer_group_name = try(each.value.identity.developer_group_name, "")
71+
reader_group_name = try(each.value.identity.reader_group_name, "")
72+
service_principal_name = try(each.value.identity.service_principal_name, "")
73+
service_principal_name_terraform_plan = var.service_principal_name_terraform_plan
74+
databricks_service_principal_terraform_plan_details = module.databricks_core.databricks_service_principal_terraform_plan_details
7475

7576
# Budget variables
7677
budget = try(each.value.budget, 100)

modules/databrickscore/data.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,5 +13,5 @@ data "azuread_service_principal" "service_principal_terraform_plan" {
1313
}
1414

1515
data "databricks_sql_warehouse" "sql_endpoint_starter" {
16-
name = "Starter Warehouse"
16+
name = contains(var.databricks_compliance_security_profile_standards, "PCI_DSS") ? "Starter Warehouse" : "Serverless Starter Warehouse"
1717
}

modules/databrickscore/output.tf

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,11 @@ output "databricks_network_connectivity_config_id" {
44
sensitive = false
55
}
66

7-
output "databricks_service_principal_terraform_plan_application_id" {
8-
description = "Specifies the application id of the service principal used for Terraform Plan."
9-
value = one(databricks_service_principal.service_principal_terraform_plan[*].application_id)
10-
sensitive = false
7+
output "databricks_service_principal_terraform_plan_details" {
8+
description = "Specifies the details of the service principal used for Terraform Plan."
9+
value = {
10+
application_id = var.service_principal_name_terraform_plan == "" ? "" : one(databricks_service_principal.service_principal_terraform_plan[*].application_id)
11+
acl_principal_id = var.service_principal_name_terraform_plan == "" ? "" : one(databricks_service_principal.service_principal_terraform_plan[*].acl_principal_id)
12+
}
13+
sensitive = false
1114
}

modules/databrickscore/variables.tf

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,20 @@ variable "databricks_network_connectivity_config_name" {
8282
}
8383
}
8484

85+
variable "databricks_compliance_security_profile_standards" {
86+
description = "Specifies which enhanced compliance security profiles ('HIPAA', 'PCI_DSS') should be enabled for the Azure Databricks workspace."
87+
type = list(string)
88+
sensitive = false
89+
nullable = false
90+
default = []
91+
validation {
92+
condition = alltrue([
93+
length([for compliance_security_profile_standard in toset(var.databricks_compliance_security_profile_standards) : compliance_security_profile_standard if !contains(["HIPAA", "PCI_DSS"], compliance_security_profile_standard)]) <= 0
94+
])
95+
error_message = "Please specify a valid compliance security profile."
96+
}
97+
}
98+
8599
# Identity variables
86100
variable "service_principal_name_terraform_plan" {
87101
description = "Specifies the name of the service principal used for the Terraform plan in PRs."

modules/databricksdataapplication/roleassignment_service_principal_terraform_plan.tf

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
resource "databricks_secret_acl" "secret_acl_service_principal_terraform_plan" {
22
count = var.service_principal_name_terraform_plan == "" ? 0 : 1
33

4-
principal = var.databricks_service_principal_terraform_plan_application_id
4+
principal = var.databricks_service_principal_terraform_plan_details.application_id
55
permission = "READ"
66
scope = databricks_secret_scope.secret_scope.id
77
}
@@ -10,7 +10,7 @@ resource "databricks_grant" "grant_catalog_internal_service_principal_terraform_
1010
count = var.service_principal_name_terraform_plan == "" ? 0 : 1
1111

1212
catalog = databricks_catalog.catalog_internal.id
13-
principal = var.databricks_service_principal_terraform_plan_application_id
13+
principal = var.databricks_service_principal_terraform_plan_details.application_id
1414
privileges = [
1515
# General
1616
# "ALL_PRIVILIGES", # Use specific permissions instead of allowing all permissions by default
@@ -49,7 +49,7 @@ resource "databricks_grant" "grant_catalog_external_service_principal_terraform_
4949
count = var.service_principal_name_terraform_plan == "" ? 0 : 1
5050

5151
catalog = databricks_catalog.catalog_external.id
52-
principal = var.databricks_service_principal_terraform_plan_application_id
52+
principal = var.databricks_service_principal_terraform_plan_details.application_id
5353
privileges = [
5454
# General
5555
# "ALL_PRIVILIGES", # Use specific permissions instead of allowing all permissions by default
@@ -88,7 +88,7 @@ resource "databricks_grant" "grant_external_location_external_service_principal_
8888
for_each = var.service_principal_name_terraform_plan == "" ? {} : var.data_provider_details
8989

9090
external_location = databricks_external_location.external_location_external[each.key].id
91-
principal = var.databricks_service_principal_terraform_plan_application_id
91+
principal = var.databricks_service_principal_terraform_plan_details.application_id
9292
privileges = [
9393
# General
9494
# "ALL_PRIVILIGES", # Use specific permissions instead of allowing all permissions by default
@@ -115,7 +115,7 @@ resource "databricks_grant" "grant_external_location_raw_service_principal_terra
115115
count = var.service_principal_name_terraform_plan == "" ? 0 : 1
116116

117117
external_location = databricks_external_location.external_location_raw.id
118-
principal = var.databricks_service_principal_terraform_plan_application_id
118+
principal = var.databricks_service_principal_terraform_plan_details.application_id
119119
privileges = [
120120
# General
121121
# "ALL_PRIVILIGES", # Use specific permissions instead of allowing all permissions by default
@@ -142,7 +142,7 @@ resource "databricks_grant" "grant_external_location_enriched_service_principal_
142142
count = var.service_principal_name_terraform_plan == "" ? 0 : 1
143143

144144
external_location = databricks_external_location.external_location_enriched.id
145-
principal = var.databricks_service_principal_terraform_plan_application_id
145+
principal = var.databricks_service_principal_terraform_plan_details.application_id
146146
privileges = [
147147
# General
148148
# "ALL_PRIVILIGES", # Use specific permissions instead of allowing all permissions by default
@@ -169,7 +169,7 @@ resource "databricks_grant" "grant_external_location_curated_service_principal_t
169169
count = var.service_principal_name_terraform_plan == "" ? 0 : 1
170170

171171
external_location = databricks_external_location.external_location_curated.id
172-
principal = var.databricks_service_principal_terraform_plan_application_id
172+
principal = var.databricks_service_principal_terraform_plan_details.application_id
173173
privileges = [
174174
# General
175175
# "ALL_PRIVILIGES", # Use specific permissions instead of allowing all permissions by default
@@ -196,7 +196,7 @@ resource "databricks_grant" "grant_external_location_workspace_service_principal
196196
count = var.service_principal_name_terraform_plan == "" ? 0 : 1
197197

198198
external_location = databricks_external_location.external_location_workspace.id
199-
principal = var.databricks_service_principal_terraform_plan_application_id
199+
principal = var.databricks_service_principal_terraform_plan_details.application_id
200200
privileges = [
201201
# General
202202
# "ALL_PRIVILIGES", # Use specific permissions instead of allowing all permissions by default
@@ -223,7 +223,7 @@ resource "databricks_grant" "grant_storage_credential_service_principal_terrafor
223223
count = var.service_principal_name_terraform_plan == "" ? 0 : 1
224224

225225
storage_credential = databricks_storage_credential.storage_credential.id
226-
principal = var.databricks_service_principal_terraform_plan_application_id
226+
principal = var.databricks_service_principal_terraform_plan_details.application_id
227227
privileges = [
228228
# General
229229
# "ALL_PRIVILIGES", # Use specific permissions instead of allowing all permissions by default
@@ -245,7 +245,7 @@ resource "databricks_grant" "grant_credential_service_principal_terraform_plan"
245245
count = var.service_principal_name_terraform_plan == "" ? 0 : 1
246246

247247
credential = databricks_credential.credential.id
248-
principal = var.databricks_service_principal_terraform_plan_application_id
248+
principal = var.databricks_service_principal_terraform_plan_details.application_id
249249
privileges = [
250250
# General
251251
# "ALL_PRIVILIGES", # Use specific permissions instead of allowing all permissions by default

modules/databricksdataapplication/roleassignments_common.tf

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -165,6 +165,7 @@ resource "databricks_access_control_rule_set" "access_control_rule_set_budget_po
165165
one(databricks_service_principal.service_principal[*].acl_principal_id),
166166
one(databricks_service_principal.service_principal_data_factory[*].acl_principal_id),
167167
databricks_service_principal.service_principal_uai.acl_principal_id,
168+
var.databricks_service_principal_terraform_plan_details.acl_principal_id,
168169
])
169170
role = "roles/budgetPolicy.user"
170171
}

modules/databricksdataapplication/variables.tf

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -256,14 +256,21 @@ variable "service_principal_name" {
256256
}
257257
}
258258

259-
variable "databricks_service_principal_terraform_plan_application_id" {
259+
variable "databricks_service_principal_terraform_plan_details" {
260260
description = "Specifies the application id of the service principal used for Terraform Plan."
261-
type = string
262-
sensitive = false
263-
default = ""
261+
type = object({
262+
application_id = optional(string, "")
263+
acl_principal_id = optional(string, "")
264+
})
265+
sensitive = false
266+
default = {}
264267
validation {
265-
condition = var.databricks_service_principal_terraform_plan_application_id == "" || length(var.databricks_service_principal_terraform_plan_application_id) >= 2
266-
error_message = "Please specify a valid name."
268+
condition = var.databricks_service_principal_terraform_plan_details.application_id == "" || length(var.databricks_service_principal_terraform_plan_details.application_id) >= 2
269+
error_message = "Please specify a valid application id."
270+
}
271+
validation {
272+
condition = var.databricks_service_principal_terraform_plan_details.acl_principal_id == "" || length(var.databricks_service_principal_terraform_plan_details.acl_principal_id) >= 2
273+
error_message = "Please specify a valid acl principal id."
267274
}
268275
}
269276

0 commit comments

Comments
 (0)