Skip to content
This repository was archived by the owner on Nov 16, 2023. It is now read-only.

Commit 5715cc7

Browse files
authored
Deploy Databricks in a VNET
2 parents 4311922 + e8f73e7 commit 5715cc7

File tree

9 files changed

+169
-23
lines changed

9 files changed

+169
-23
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,50 @@
1-
resource "azurerm_databricks_workspace" "aml" {
2-
name = "dbricks${var.appname}${var.environment}"
1+
data "azurerm_virtual_network" "main" {
2+
name = var.vnet_name
3+
resource_group_name = var.resource_group_name
4+
}
5+
6+
data "azurerm_subnet" "databricks-private" {
7+
name = var.private_subnet_name
8+
virtual_network_name = var.vnet_name
9+
resource_group_name = var.resource_group_name
10+
}
11+
12+
data "azurerm_subnet" "databricks-public" {
13+
name = var.public_subnet_name
14+
virtual_network_name = var.vnet_name
15+
resource_group_name = var.resource_group_name
16+
}
17+
18+
resource "azurerm_network_security_group" "databricks" {
19+
name = "nsg-${var.appname}-${var.environment}-databricks"
20+
location = var.location
21+
resource_group_name = var.resource_group_name
22+
}
23+
24+
resource "azurerm_subnet_network_security_group_association" "private" {
25+
subnet_id = data.azurerm_subnet.databricks-private.id
26+
network_security_group_id = azurerm_network_security_group.databricks.id
27+
}
28+
29+
resource "azurerm_subnet_network_security_group_association" "public" {
30+
subnet_id = data.azurerm_subnet.databricks-public.id
31+
network_security_group_id = azurerm_network_security_group.databricks.id
32+
}
33+
34+
resource "azurerm_databricks_workspace" "main" {
35+
name = "dbricks-${var.appname}-${var.environment}"
336
resource_group_name = var.resource_group_name
437
location = var.location
538
sku = "standard"
39+
40+
custom_parameters {
41+
public_subnet_name = data.azurerm_subnet.databricks-public.name
42+
private_subnet_name = data.azurerm_subnet.databricks-private.name
43+
virtual_network_id = data.azurerm_virtual_network.main.id
44+
}
45+
46+
depends_on = [
47+
azurerm_subnet_network_security_group_association.private,
48+
azurerm_subnet_network_security_group_association.public,
49+
]
650
}
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
output "id" {
2-
value = azurerm_databricks_workspace.aml.id
2+
value = azurerm_databricks_workspace.main.id
33
}
44

55
output "name" {
6-
value = azurerm_databricks_workspace.aml.name
6+
value = azurerm_databricks_workspace.main.name
77
}
88

99
output "location" {
10-
value = azurerm_databricks_workspace.aml.location
10+
value = azurerm_databricks_workspace.main.location
1111
}

Python/azureml-pipeline-databricks/environment_setup/terraform/databricks/variables.tf

+12
Original file line numberDiff line numberDiff line change
@@ -13,3 +13,15 @@ variable "resource_group_name" {
1313
variable "location" {
1414
type = string
1515
}
16+
17+
variable "vnet_name" {
18+
type = string
19+
}
20+
21+
variable "private_subnet_name" {
22+
type = string
23+
}
24+
25+
variable "public_subnet_name" {
26+
type = string
27+
}

Python/azureml-pipeline-databricks/environment_setup/terraform/main.tf

+28-17
Original file line numberDiff line numberDiff line change
@@ -6,31 +6,42 @@
66
# Resource Group
77

88
resource "azurerm_resource_group" "main" {
9-
name = "rg-${var.appname}-${var.environment}-main"
9+
name = "rg-${var.appname}-${var.environment}-main"
1010
location = var.location
1111
}
1212

13+
module "vnet" {
14+
source = "./vnet"
15+
appname = var.appname
16+
environment = var.environment
17+
location = var.location
18+
resource_group_name = azurerm_resource_group.main.name
19+
}
20+
1321
module "azureml" {
14-
source = "./azureml"
15-
appname = var.appname
16-
environment = var.environment
17-
location = var.location
18-
tenant_id = data.azurerm_client_config.current.tenant_id
19-
resource_group_name = azurerm_resource_group.main.name
22+
source = "./azureml"
23+
appname = var.appname
24+
environment = var.environment
25+
location = var.location
26+
tenant_id = data.azurerm_client_config.current.tenant_id
27+
resource_group_name = azurerm_resource_group.main.name
2028
}
2129

2230
module "training-data" {
23-
source = "./training-data"
24-
appname = var.appname
25-
environment = var.environment
26-
resource_group_name = azurerm_resource_group.main.name
27-
location = var.location
31+
source = "./training-data"
32+
appname = var.appname
33+
environment = var.environment
34+
resource_group_name = azurerm_resource_group.main.name
35+
location = var.location
2836
}
2937

3038
module "databricks" {
31-
source = "./databricks"
32-
appname = var.appname
33-
environment = var.environment
34-
resource_group_name = azurerm_resource_group.main.name
35-
location = var.location
39+
source = "./databricks"
40+
appname = var.appname
41+
environment = var.environment
42+
resource_group_name = azurerm_resource_group.main.name
43+
location = var.location
44+
vnet_name = module.vnet.vnet_name
45+
private_subnet_name = module.vnet.databricks_private_subnet_name
46+
public_subnet_name = module.vnet.databricks_public_subnet_name
3647
}

Python/azureml-pipeline-databricks/environment_setup/terraform/provider.tf

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ terraform {
66
# Configure the Azure Provider
77
provider "azurerm" {
88
# It is recommended to pin to a given version of the Provider
9-
version = "=1.44.0"
9+
version = "=2.6.0"
10+
skip_provider_registration = true
11+
features {}
1012
}
1113

1214
# Data

Python/azureml-pipeline-databricks/environment_setup/terraform/variables.tf

+3
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ variable "environment" {
1010
default = "dev"
1111
}
1212

13+
# The total number of characters of the appname and environment variables additioned
14+
# Should not exceed 8 characters
15+
1316
variable "location" {
1417
type = string
1518
description = "Azure region where to create resources."
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
# Create virtual network
2+
3+
resource "azurerm_virtual_network" "main" {
4+
name = "vnet-${var.appname}-${var.environment}"
5+
address_space = ["10.100.0.0/16"]
6+
location = var.location
7+
resource_group_name = var.resource_group_name
8+
}
9+
10+
# Create subnets
11+
12+
resource "azurerm_subnet" "databricks-private" {
13+
name = "databricks-private-subnet"
14+
resource_group_name = var.resource_group_name
15+
virtual_network_name = azurerm_virtual_network.main.name
16+
address_prefix = "10.100.1.0/24"
17+
18+
delegation {
19+
name = "acctestdelegation"
20+
service_delegation {
21+
name = "Microsoft.Databricks/workspaces"
22+
actions = [
23+
"Microsoft.Network/virtualNetworks/subnets/action",
24+
"Microsoft.Network/virtualNetworks/subnets/join/action",
25+
"Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action"
26+
]
27+
}
28+
}
29+
}
30+
31+
resource "azurerm_subnet" "databricks-public" {
32+
name = "databricks-public-subnet"
33+
resource_group_name = var.resource_group_name
34+
virtual_network_name = azurerm_virtual_network.main.name
35+
address_prefix = "10.100.2.0/24"
36+
37+
delegation {
38+
name = "acctestdelegation"
39+
service_delegation {
40+
name = "Microsoft.Databricks/workspaces"
41+
actions = [
42+
"Microsoft.Network/virtualNetworks/subnets/action",
43+
"Microsoft.Network/virtualNetworks/subnets/join/action",
44+
"Microsoft.Network/virtualNetworks/subnets/prepareNetworkPolicies/action"
45+
]
46+
}
47+
}
48+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
output "vnet_name" {
2+
value = azurerm_virtual_network.main.name
3+
}
4+
5+
output "databricks_private_subnet_name" {
6+
value = azurerm_subnet.databricks-private.name
7+
}
8+
9+
output "databricks_public_subnet_name" {
10+
value = azurerm_subnet.databricks-public.name
11+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
variable "appname" {
2+
type = string
3+
}
4+
5+
variable "environment" {
6+
type = string
7+
}
8+
9+
variable "resource_group_name" {
10+
type = string
11+
}
12+
13+
variable "location" {
14+
type = string
15+
}

0 commit comments

Comments
 (0)