Skip to content

Commit 49a0afa

Browse files
author
dmytro_velychko3
committed
feat: uniti claster
1 parent f767dd7 commit 49a0afa

File tree

3 files changed

+62
-1
lines changed

3 files changed

+62
-1
lines changed

README.md

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,14 +51,15 @@ No modules.
5151
| [databricks_grants.catalog](https://registry.terraform.io/providers/databricks/databricks/latest/docs/resources/grants) | resource |
5252
| [databricks_schema.this](https://registry.terraform.io/providers/databricks/databricks/latest/docs/resources/sql_endpoint) | resource |
5353
| [databricks_grants.schema](https://registry.terraform.io/providers/databricks/databricks/latest/docs/resources/schema) | resource |
54+
| [databricks_cluster.this](https://registry.terraform.io/providers/databricks/databricks/latest/docs/resources/cluster) | resource |
5455

5556

5657

5758
## Inputs
5859

5960
| Name | Description | Type | Default | Required |
6061
| ------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | :------: |
61-
| <a name="input_project"></a> [project](#input\_project) | Project name | `string` | n/a | yes |
62+
| <a name="input_project"></a> [project](#input\_project) | Project name | `string` | n/a | yes |
6263
| <a name="input_env"></a> [env](#input\_env) | Environment name | `string` | n/a | yes |
6364
| <a name="input_location"></a> [location](#input\_location) | Azure location | `string` | n/a | yes |
6465
| <a name="input_workspace_id"></a> [workspace\_id](#input\_workspace\_id) | Id of Azure Databricks workspace | `string` | n/a | yes |
@@ -79,6 +80,8 @@ No modules.
7980
| <a name="input_external_metastore_id"></a> [external\_metastore\_id](#input\_external\_metastore\_id) | Unity Catalog Metastore Id that is located in separate environment. Provide this value to associate Databricks Workspace with target Metastore | `string` | " " | no |
8081
| <a name="input_metastore_grants"></a> [metastore\_grants](#input\_metastore\_grants) | Permissions to give on metastore to group | `map(list(string))` | {} | no |
8182
| <a name="input_secret_scope_object"></a> [secret\_scope\_object](#input\_secret\_scope\_object) | List of objects, where 'scope_name' param is a Secret scope name and 'acl' are list of objects with 'principals' and one of allowed 'permission' ('READ', 'WRITE' or 'MANAGE') | <pre>list(object({<br> scope_name = string<br> acl = list(object({<br> principal = string<br> permission = string<br> }))<br>}))</pre> | <pre>[{<br> scope_name = null<br> acl = null<br>}]</pre> | no |
83+
| <a name="input_unity_cluster_enabled"></a> [unity\_cluster\_enabled](#input\_unity\_cluster\_enabled) | Boolean flag for creating databricks claster | `bool` | false | no |
84+
| <a name="input_unity_cluster_config"></a> [unity\_unity\_cluster\_config](#input\_unity\_cluster\_config) | Specifies the databricks unity cluster configuration | <pre> type = object({ <br> cluster_name = optional(string)<br> spark_version = optional(string)<br> spark_conf = optional(map(any))<br> spark_env_vars = optional(map(any))<br> data_security_mode = optional(string)<br> node_type_id = optional(string)<br> autotermination_minutes = optional(number)<br> min_workers = optional(number)<br> max_workers = optional(number)<br> availability = optional(string)<br> first_on_demand = optional(number)<br> spot_bid_max_price = optional(number)<br>})<br></pre> | <pre> type = object({ <br> cluster_name = optional("Unity Catalog")<br> spark_version = optional("11.3.x-scala2.12")<br> spark_conf = optional({})<br> spark_env_vars = optional({})<br> data_security_mode = optional("USER_ISOLATION")<br> node_type_id = optional("Standard_D3_v2")<br> autotermination_minutes = optional(30)<br> min_workers = optional(1)<br> max_workers = optional(2)<br> availability = optional("ON_DEMAND_AZURE")<br> first_on_demand = optional(0)<br> spot_bid_max_price = optional(1)<br>})<br></pre> | no |
8285

8386

8487

unity.tf

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -133,3 +133,35 @@ resource "databricks_grants" "schema" {
133133
privileges = each.value.permission
134134
}
135135
}
136+
137+
resource "databricks_cluster" "this" {
138+
count = var.unity_cluster_enabled ? 1 : 0
139+
140+
cluster_name = var.unity_cluster_config.cluster_name
141+
spark_version = var.unity_cluster_config.spark_version
142+
spark_conf = var.unity_cluster_config.spark_conf
143+
spark_env_vars = var.unity_cluster_config.spark_env_vars
144+
data_security_mode = var.unity_cluster_config.data_security_mode
145+
node_type_id = var.unity_cluster_config.node_type_id
146+
autotermination_minutes = var.unity_cluster_config.autotermination_minutes
147+
148+
autoscale {
149+
min_workers = var.unity_cluster_config.min_workers
150+
max_workers = var.unity_cluster_config.max_workers
151+
}
152+
153+
azure_attributes {
154+
availability = var.unity_cluster_config.availability
155+
first_on_demand = var.unity_cluster_config.first_on_demand
156+
spot_bid_max_price = var.unity_cluster_config.spot_bid_max_price
157+
}
158+
159+
#lifecycle {
160+
#ignore_changes = [
161+
# state
162+
#]
163+
#precondition {
164+
# condition = var.data_security_mode == "USER_ISOLATION" ? contains(["11.3.x-scala2.12", "12.0.x-scala2.12"], var.spark_version) : true
165+
# error_message = "When USER_ISOLATION is selected, please set spark version to be either one of these values: '11.3.x-scala2.12', '12.0.x-scala2.12'"
166+
#}
167+
}

variables.tf

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -186,3 +186,29 @@ variable "secret_scope_object" {
186186
acl = null
187187
}]
188188
}
189+
190+
variable "unity_cluster_enabled" {
191+
type = bool
192+
description = "Boolean flag for creating databricks claster"
193+
default = false
194+
}
195+
196+
variable "unity_cluster_config" {
197+
type = object({
198+
cluster_name = optional(string, "Unity Catalog")
199+
spark_version = optional(string, "11.3.x-scala2.12")
200+
spark_conf = optional(map(any), {})
201+
spark_env_vars = optional(map(any), {})
202+
data_security_mode = optional(string, "USER_ISOLATION")
203+
node_type_id = optional(string, "Standard_D3_v2")
204+
autotermination_minutes = optional(number, 30)
205+
min_workers = optional(number, 1)
206+
max_workers = optional(number, 2)
207+
availability = optional(string, "ON_DEMAND_AZURE")
208+
first_on_demand = optional(number, 0)
209+
spot_bid_max_price = optional(number, 1)
210+
211+
})
212+
description = "Specifies the databricks unity cluster configuration"
213+
default = {}
214+
}

0 commit comments

Comments
 (0)