Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Adding Azure databricks workspace service #1857

Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
93 commits
Select commit Hold shift + click to select a range
871a8e5
Adding dfs private dns zone to the Core
promisinganuj May 17, 2022
9217f32
Azure Databricks TRE workspace service
promisinganuj May 18, 2022
e408c56
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
promisinganuj May 18, 2022
7f918cf
Azure Databricks TRE workspace service
promisinganuj May 18, 2022
660733b
Merge branch 'promisinganuj/1725-databricks-workspace-service' of htt…
promisinganuj May 18, 2022
753d8ab
Azure Databricks TRE - Upgrading storage to ADLS2 and adding PE
promisinganuj May 19, 2022
bea85a5
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
promisinganuj May 19, 2022
b658768
Azure TRE Databricks workspace service
promisinganuj May 30, 2022
1c9227b
Azure TRE Databricks workspace service
promisinganuj May 30, 2022
37dc015
Databricks workspace service - terraform version
promisinganuj Jun 7, 2022
70e5f77
Databricks workspace service - terraform version
promisinganuj Jun 7, 2022
66e834b
Databricks workspace service - terraform version
promisinganuj Jun 7, 2022
405b6e4
Databricks workspace service - terraform version
promisinganuj Jun 7, 2022
430076c
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
promisinganuj Jun 7, 2022
d5c9214
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
ross-p-smith Jul 25, 2022
7ca8f4e
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
marrobi Oct 31, 2022
7a7981e
Merge
marrobi Jan 6, 2023
7727dd1
Deploys other than DNS based network rules. Need private link.
marrobi Jan 9, 2023
89a5a3f
working with cluster create and notebook
marrobi Jan 9, 2023
e4b692c
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 12, 2023
9259bf0
changelog + bump core version
guybartal Jan 12, 2023
5c47ec8
fix linter issues
guybartal Jan 12, 2023
7317727
PR comments
guybartal Jan 12, 2023
e12e116
rename databricks security rule names
guybartal Jan 12, 2023
2f97dd3
add service suffix to all DB resources
guybartal Jan 12, 2023
688fa6e
remove dfs comment
guybartal Jan 12, 2023
a7e47b1
undo core version update
guybartal Jan 12, 2023
bb4a5d5
add short_service_id local
guybartal Jan 12, 2023
f830746
add dashes to first line in porter.yaml
guybartal Jan 12, 2023
c589f3b
fix bundle build issue
guybartal Jan 12, 2023
4fa8a39
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
promisinganuj Jan 12, 2023
235d5e9
update terrafom hcl and fix locals
guybartal Jan 15, 2023
773f86e
Merge branch 'promisinganuj/1725-databricks-workspace-service' of git…
guybartal Jan 15, 2023
03ff36e
remove unused local keys
guybartal Jan 15, 2023
44c9f4d
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 15, 2023
c83444c
add private endpoint for ADB
guybartal Jan 15, 2023
d7bc9a7
add cost tags
guybartal Jan 15, 2023
b945bc6
add private link and private endpoints
guybartal Jan 16, 2023
f399ec6
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 16, 2023
1735f23
remove double databricks dns zone
guybartal Jan 16, 2023
f165c1f
Merge branch 'promisinganuj/1725-databricks-workspace-service' of git…
guybartal Jan 16, 2023
76ffc34
fix private_dns_zone_virtual_network_link rg ref
guybartal Jan 16, 2023
5c7e9de
change network id to core for private vnet link
guybartal Jan 16, 2023
17ca9b0
fix private links + fw rules + public flag
guybartal Jan 19, 2023
d277f0d
fixing connection uri to match azure portal
guybartal Jan 19, 2023
119b3c2
format TF file
guybartal Jan 19, 2023
39279f1
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 19, 2023
9fc384d
rename output.tf to match standard
guybartal Jan 19, 2023
960598e
remove unused data
guybartal Jan 22, 2023
af99c3b
add dbfs storage with private endpoint and psc
guybartal Jan 22, 2023
225c6c9
fix ref to ws resource group
guybartal Jan 22, 2023
61da7e0
link db ws to dbfs
guybartal Jan 22, 2023
cd06afe
push bundle version
guybartal Jan 22, 2023
3b10f15
updating databricks.hcl file
guybartal Jan 22, 2023
691b934
detach storage + fix psc for storage
guybartal Jan 23, 2023
10dd0a3
fix dbfs
guybartal Jan 24, 2023
f0c69b2
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 24, 2023
921d817
fix connection uri + bump core version
guybartal Jan 24, 2023
ce45959
update changelog
guybartal Jan 24, 2023
9a72603
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 24, 2023
9ea54db
rename private and public subnets
guybartal Jan 25, 2023
3dca7ff
push core version
guybartal Jan 25, 2023
474c41d
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 25, 2023
2b31cd7
add remark and reference for databricks udr
guybartal Jan 25, 2023
3d0af61
add docs for databricks
guybartal Jan 25, 2023
dc5c43a
TF fmt
guybartal Jan 25, 2023
feafc78
linter
guybartal Jan 25, 2023
cdb24d3
add dns provider
guybartal Jan 25, 2023
553da29
update version
guybartal Jan 25, 2023
e46719c
add dns to required_providers
guybartal Jan 25, 2023
de8770f
remove empty line
guybartal Jan 25, 2023
6787a4e
tf fmt
guybartal Jan 25, 2023
2cd85f7
ignore SC2154
guybartal Jan 25, 2023
2d3ad88
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 25, 2023
6f93054
Update templates/workspace_services/databricks/terraform/providers.tf
guybartal Jan 26, 2023
7f13886
Update templates/workspaces/base/porter.yaml
guybartal Jan 26, 2023
2359112
fix claranet tf provider installation
guybartal Jan 26, 2023
27a6555
Merge branch 'promisinganuj/1725-databricks-workspace-service' of git…
guybartal Jan 26, 2023
fe0545d
updating tf hcl with fixed versions
guybartal Jan 26, 2023
0296434
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 26, 2023
4c1f901
move privatelink.azuredatabricks.net to no_core
guybartal Jan 26, 2023
e962afd
rename main storage container + bump major version
guybartal Jan 26, 2023
0be2b6f
add internal connectio uri + default values to schema
guybartal Jan 26, 2023
d134e6c
linter issue
guybartal Jan 26, 2023
968450f
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 26, 2023
5ccfe5d
update diagram
guybartal Jan 26, 2023
cbdd634
change commands order inside dockerfile template
guybartal Jan 26, 2023
4cfe0e9
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 29, 2023
3e1690f
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 29, 2023
0305ecb
bump core version
guybartal Jan 29, 2023
5334e2f
remove db dnz zone from moved block
guybartal Jan 30, 2023
a3adb96
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 30, 2023
254b589
Merge branch 'main' into promisinganuj/1725-databricks-workspace-service
guybartal Jan 30, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
:warning: Any custom rules you have added manually will be **lost** and you'll need to add it back after the upgrade has been completed.

FEATURES:
* Add Azure Databricks as workspace service [#1857](https://github.com/microsoft/AzureTRE/pull/1857)

ENHANCEMENTS:
* Add support for referencing IP Groups from the Core Resource Group in firewall rules created via the pipeline [#3089](https://github.com/microsoft/AzureTRE/pull/3089)
Expand Down
1 change: 1 addition & 0 deletions core/terraform/locals.tf
Original file line number Diff line number Diff line change
Expand Up @@ -30,5 +30,6 @@ locals {
"privatelink.postgres.database.azure.com",
"nexus-${var.tre_id}.${var.location}.cloudapp.azure.com",
"privatelink.mysql.database.azure.com",
"privatelink.azuredatabricks.net"
])
}
2 changes: 1 addition & 1 deletion core/terraform/network/locals.tf
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,6 @@ locals {

private_dns_zone_names = toset([
"privatelink.queue.core.windows.net",
"privatelink.table.core.windows.net",
"privatelink.table.core.windows.net"
])
}
2 changes: 1 addition & 1 deletion core/version.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
__version__ = "0.7.1"
__version__ = "0.7.2"
Binary file added docs/assets/databricks_workspace_service.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
17 changes: 17 additions & 0 deletions docs/tre-templates/workspace-services/databricks.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
# Azure Databricks workspace service bundle

See: [https://azure.microsoft.com/en-us/products/databricks/](https://azure.microsoft.com/en-us/products/databricks/)

This service installs the following resources into an existing virtual network within the workspace:

![Azure Databricks workspace service](../../assets/databricks_workspace_service.png)


## Properties

- `is_exposed_externally` - If `True`, the Azure Databricks workspace is accessible from outside of the worksapce virtual network. If `False` use a Guacamole VM and the `internal_connection_uri` to access Databricks workspace.


## Prerequisites

- [A base workspace bundle installed](../workspaces/base.md)
12 changes: 7 additions & 5 deletions mkdocs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -82,11 +82,11 @@ nav:
- Set up of a Virtual Machine: using-tre/tre-for-research/using-vms.md
- Importing/exporting data with Airlock: using-tre/tre-for-research/importing-exporting-data-airlock.md
- Reviewing Airlock Requests: using-tre/tre-for-research/review-airlock-request.md
# - Workspaces:
# - using-tre/wks/index.md # Documentation describing what a workspace is
# - Using Workspaces: using-tre/wks/using-wks.md # Interacting with workspaces (via the UI)
# - The Workspace Owner: using-tre/wks/wks-owner.md # Workspace Owners. The concept, and tasks
# - FAQ: using-tre/faq.md # FAQ section (to allow easy contribution)
# - Workspaces:
# - using-tre/wks/index.md # Documentation describing what a workspace is
# - Using Workspaces: using-tre/wks/using-wks.md # Interacting with workspaces (via the UI)
# - The Workspace Owner: using-tre/wks/wks-owner.md # Workspace Owners. The concept, and tasks
# - FAQ: using-tre/faq.md # FAQ section (to allow easy contribution)

- Templates and Services: # Docs to highlight and illustrate workspaces, workspace services etc
- Workspaces:
Expand All @@ -100,6 +100,7 @@ nav:
- InnerEye: tre-templates/workspace-services/inner-eye.md
- MLFlow: tre-templates/workspace-services/mlflow.md
- Health Services: tre-templates/workspace-services/health_services.md
- Azure Databricks: tre-templates/workspace-services/databricks.md
- Shared Services:
- Gitea (Source Mirror): tre-templates/shared-services/gitea.md
- Nexus (Package Mirror): tre-templates/shared-services/nexus.md
Expand Down Expand Up @@ -129,6 +130,7 @@ nav:
- Registering Templates: tre-admins/registering-templates.md
- Install Resources via API:
- Install Base Workspace: tre-admins/setup-instructions/installing-base-workspace.md
# yamllint disable-line rule:line-length
- Install Workspace Service and User Resource: tre-admins/setup-instructions/installing-workspace-service-and-user-resource.md
- Upgrading AzureTRE Version: tre-admins/upgrading-tre.md
- Upgrading Resources Version: tre-admins/upgrading-resources.md
Expand Down
8 changes: 8 additions & 0 deletions templates/workspace_services/databricks/.dockerignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
# Local .terraform directories
**/.terraform/*
tamirkamara marked this conversation as resolved.
Show resolved Hide resolved

# TF backend files
**/*_backend.tf
Dockerfile.tmpl
terraform/deploy.sh
terraform/destroy.sh
5 changes: 5 additions & 0 deletions templates/workspace_services/databricks/.env.sample
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
ID=__CHANGE_ME__
WORKSPACE_ID=__CHANGE_ME__
AZURE_LOCATION=__CHANGE_ME__
HOST_SUBNET_ADDRESS_PREFIX=__CHANGE_ME__
CONTAINER_SUBNET_ADDRESS_PREFIX=__CHANGE_ME__
18 changes: 18 additions & 0 deletions templates/workspace_services/databricks/Dockerfile.tmpl
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
# syntax=docker/dockerfile-upstream:1.4.0
FROM debian:bullseye-slim

# PORTER_INIT

RUN rm -f /etc/apt/apt.conf.d/docker-clean; echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache

# Install git - required for https://registry.terraform.io/modules/claranet/regions/azurerm
RUN apt-get update && apt-get install --no-install-recommends -y git \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*

# PORTER_MIXINS

RUN apt-get remove -y git

# Use the BUNDLE_DIR build argument to copy files into the bundle
COPY --link . ${BUNDLE_DIR}/
47 changes: 47 additions & 0 deletions templates/workspace_services/databricks/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
# Contents

## porter.yaml

This is the porter manifest. See <https://porter.sh/author-bundles/> for
details on every field and how to configure your bundle. This is a required
file.

## helpers.sh

This is a bash script where you can place helper functions that you can call
from your porter.yaml file.

## README.md

This explains the files created by `porter create`. It is not used by porter and
can be deleted.

## Dockerfile.tmpl

This is a template Dockerfile for the bundle's invocation image. You can
customize it to use different base images, install tools and copy configuration
files. Porter will use it as a template and append lines to it for the mixin and to set
the CMD appropriately for the CNAB specification. You can delete this file if you don't
need it.

Add the following line to **porter.yaml** to enable the Dockerfile template:

```yaml
dockerfile: Dockerfile.tmpl
```

By default, the Dockerfile template is disabled and Porter automatically copies
all of the files in the current directory into the bundle's invocation image. When
you use a custom Dockerfile template, you must manually copy files into the bundle
using COPY statements in the Dockerfile template.

## .gitignore

This is a default file that we provide to help remind you which files are
generated by Porter, and shouldn't be committed to source control. You can
delete it if you don't need it.

## .dockerignore

This is a default file that controls which files are copied into the bundle's
invocation image by default. You can delete it if you don't need it.
56 changes: 56 additions & 0 deletions templates/workspace_services/databricks/parameters.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
{
"schemaType": "ParameterSet",
"schemaVersion": "1.0.1",
"namespace": "",
"name": "tre-service-databricks",
"parameters": [
{
"name": "id",
"source": {
"env": "ID"
}
},
{
"name": "tre_id",
"source": {
"env": "TRE_ID"
}
},
{
"name": "workspace_id",
"source": {
"env": "WORKSPACE_ID"
}
},
{
"name": "address_space",
"source": {
"env": "ADDRESS_SPACE"
}
},
{
"name": "is_exposed_externally",
"source": {
"env": "IS_EXPOSED_EXTERNALLY"
}
},
{
"name": "tfstate_container_name",
"source": {
"env": "TERRAFORM_STATE_CONTAINER_NAME"
}
},
{
"name": "tfstate_resource_group_name",
"source": {
"env": "MGMT_RESOURCE_GROUP_NAME"
}
},
{
"name": "tfstate_storage_account_name",
"source": {
"env": "MGMT_STORAGE_ACCOUNT_NAME"
}
}
]
}
176 changes: 176 additions & 0 deletions templates/workspace_services/databricks/porter.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,176 @@
---
schemaVersion: 1.0.0
name: tre-service-databricks
version: 0.1.71
description: "An Azure TRE service for Azure Databricks."
registry: azuretre
dockerfile: Dockerfile.tmpl

credentials:

- name: azure_tenant_id
env: ARM_TENANT_ID
- name: azure_subscription_id
env: ARM_SUBSCRIPTION_ID
- name: azure_client_id
env: ARM_CLIENT_ID
- name: azure_client_secret
env: ARM_CLIENT_SECRET

parameters:
- name: workspace_id
type: string
- name: tre_id
type: string
- name: id
type: string
description: "Resource ID"
- name: address_space
type: string
- name: is_exposed_externally
type: boolean
- name: tfstate_resource_group_name
type: string
description: "Resource group containing the Terraform state storage account"
- name: tfstate_storage_account_name
type: string
description: "The name of the Terraform state storage account"
- name: tfstate_container_name
env: tfstate_container_name
type: string
default: "tfstate"
description: "The name of the Terraform state storage container"
- name: arm_use_msi
env: ARM_USE_MSI
type: boolean
default: false

outputs:
- name: databricks_workspace_name
type: string
applyTo:
- install
- upgrade
- name: connection_uri
type: string
applyTo:
- install
- upgrade
- name: internal_connection_uri
type: string
applyTo:
- install
- upgrade
- name: databricks_storage_account_name
type: string
applyTo:
- install
- upgrade
- name: dbfs_blob_storage_domain
type: string
applyTo:
- install
- upgrade
- name: metastore_addresses
type: string
applyTo:
- install
- upgrade
- name: event_hub_endpoint_addresses
type: string
applyTo:
- install
- upgrade
- name: log_blob_storage_domains
type: string
applyTo:
- install
- upgrade
- name: artifact_blob_storage_domains
type: string
applyTo:
- install
- upgrade
- name: workspace_address_spaces
type: string
applyTo:
- install
- upgrade
- name: databricks_address_prefixes
type: string
applyTo:
- install
- upgrade

mixins:
- terraform:
clientVersion: 1.3.6

install:
- terraform:
description: "Deploy Databricks Service"
vars:
tre_resource_id: ${ bundle.parameters.id }
tre_id: ${ bundle.parameters.tre_id }
workspace_id: ${ bundle.parameters.workspace_id }
address_space: ${ bundle.parameters.address_space }
is_exposed_externally: ${ bundle.parameters.is_exposed_externally }
backendConfig:
resource_group_name: ${ bundle.parameters.tfstate_resource_group_name }
storage_account_name: ${ bundle.parameters.tfstate_storage_account_name }
container_name: ${ bundle.parameters.tfstate_container_name }
key: ${ bundle.name }-${ bundle.parameters.id }
outputs:
- name: databricks_workspace_name
- name: connection_uri
- name: internal_connection_uri
- name: databricks_storage_account_name
- name: dbfs_blob_storage_domain
- name: metastore_addresses
- name: event_hub_endpoint_addresses
- name: log_blob_storage_domains
- name: artifact_blob_storage_domains
- name: workspace_address_spaces
- name: databricks_address_prefixes

upgrade:
- terraform:
description: "Upgrade Databricks Service"
vars:
tre_resource_id: ${ bundle.parameters.id }
tre_id: ${ bundle.parameters.tre_id }
workspace_id: ${ bundle.parameters.workspace_id }
address_space: ${ bundle.parameters.address_space }
is_exposed_externally: ${ bundle.parameters.is_exposed_externally }
backendConfig:
resource_group_name: ${ bundle.parameters.tfstate_resource_group_name }
storage_account_name: ${ bundle.parameters.tfstate_storage_account_name }
container_name: ${ bundle.parameters.tfstate_container_name }
key: ${ bundle.name }-${ bundle.parameters.id }
outputs:
- name: databricks_workspace_name
- name: connection_uri
- name: internal_connection_uri
- name: databricks_storage_account_name
- name: dbfs_blob_storage_domain
- name: metastore_addresses
- name: event_hub_endpoint_addresses
- name: log_blob_storage_domains
- name: artifact_blob_storage_domains
- name: workspace_address_spaces
- name: databricks_address_prefixes

uninstall:
- terraform:
description: "Uninstall Azure Databricks Service"
vars:
tre_resource_id: ${ bundle.parameters.id }
tre_id: ${ bundle.parameters.tre_id }
workspace_id: ${ bundle.parameters.workspace_id }
address_space: ${ bundle.parameters.address_space }
is_exposed_externally: ${ bundle.parameters.is_exposed_externally }
backendConfig:
resource_group_name: ${ bundle.parameters.tfstate_resource_group_name }
storage_account_name: ${ bundle.parameters.tfstate_storage_account_name }
container_name: ${ bundle.parameters.tfstate_container_name }
key: ${ bundle.name }-${ bundle.parameters.id }
Loading