|
| 1 | +data "databricks_service_principal" "admin_service_principal" { |
| 2 | + provider = databricks.mws |
| 3 | + application_id = var.databricks_client_id |
| 4 | +} |
| 5 | + |
| 6 | +resource "databricks_user" "unity_users" { |
| 7 | + provider = databricks.mws |
| 8 | + for_each = toset(concat(var.databricks_users, var.databricks_metastore_admins)) |
| 9 | + user_name = each.key |
| 10 | + force = true |
| 11 | +} |
| 12 | + |
| 13 | +resource "databricks_group" "admin_group" { |
| 14 | + provider = databricks.mws |
| 15 | + display_name = local.unity_admin_group |
| 16 | +} |
| 17 | + |
| 18 | +resource "databricks_group" "users" { |
| 19 | + provider = databricks.mws |
| 20 | + display_name = local.workspace_users_group |
| 21 | + depends_on = [databricks_group.admin_group] |
| 22 | +} |
| 23 | + |
| 24 | +# Sleeping for 20s to wait for the workspace to enable identity federation |
| 25 | +resource "time_sleep" "wait_for_permission_apis" { |
| 26 | + depends_on = [ |
| 27 | + module.unity_catalog |
| 28 | + ] |
| 29 | + create_duration = "20s" |
| 30 | +} |
| 31 | + |
| 32 | +resource "databricks_mws_permission_assignment" "add_admin_group" { |
| 33 | + provider = databricks.mws |
| 34 | + workspace_id = module.databricks_workspace.databricks_workspace_id |
| 35 | + principal_id = resource.databricks_group.admin_group.id |
| 36 | + permissions = ["ADMIN"] |
| 37 | + depends_on = [ |
| 38 | + resource.time_sleep.wait_for_permission_apis |
| 39 | + ] |
| 40 | +} |
| 41 | + |
| 42 | +resource "databricks_group_member" "admin_group_member" { |
| 43 | + provider = databricks.mws |
| 44 | + for_each = toset(var.databricks_metastore_admins) |
| 45 | + group_id = databricks_group.admin_group.id |
| 46 | + member_id = databricks_user.unity_users[each.value].id |
| 47 | +} |
| 48 | + |
| 49 | +resource "databricks_group_member" "my_service_principal" { |
| 50 | + provider = databricks.mws |
| 51 | + group_id = databricks_group.admin_group.id |
| 52 | + member_id = data.databricks_service_principal.admin_service_principal.id |
| 53 | +} |
| 54 | + |
| 55 | +resource "databricks_group_member" "users_group_members" { |
| 56 | + provider = databricks.mws |
| 57 | + for_each = toset(var.databricks_users) |
| 58 | + group_id = resource.databricks_group.users.id |
| 59 | + member_id = databricks_user.unity_users[each.value].id |
| 60 | +} |
| 61 | + |
| 62 | +resource "databricks_mws_permission_assignment" "add_user_group" { |
| 63 | + provider = databricks.mws |
| 64 | + workspace_id = module.databricks_workspace.databricks_workspace_id |
| 65 | + principal_id = resource.databricks_group.users.id |
| 66 | + permissions = ["USER"] |
| 67 | + depends_on = [ |
| 68 | + resource.time_sleep.wait_for_permission_apis |
| 69 | + ] |
| 70 | +} |
0 commit comments