Skip to content

Commit 5e52a38

Browse files
committed
Added two Azure ML quickstart templates
1 parent cefacf9 commit 5e52a38

File tree

7 files changed

+317
-0
lines changed

7 files changed

+317
-0
lines changed

.gitignore

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
## Ignore terraform provider and state files
22
*.terraform
33
*.tfstate*
4+
.terraform.lock.hcl
45

56
## Ignore Visual Studio temporary files, build results, and
67
## files generated by popular Visual Studio add-ons.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
provider "azurerm" {
2+
version = "~>2.0"
3+
features {}
4+
}
5+
6+
data "azurerm_client_config" "current" {}
7+
8+
resource "azurerm_resource_group" "default" {
9+
name = "${var.name}-${var.environment}-rgp"
10+
location = "${var.location}"
11+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
variable "name" {
2+
type = string
3+
description = "Name of the deployment"
4+
default = "azureml999"
5+
}
6+
7+
variable "environment" {
8+
type = string
9+
description = "Name of the environment"
10+
default = "dev"
11+
}
12+
13+
variable "location" {
14+
type = string
15+
description = "Location of the resources"
16+
default = "East US"
17+
}
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
# Dependent resources for Azure Machine Learning
2+
resource "azurerm_application_insights" "default" {
3+
name = "${var.name}-${var.environment}-ain"
4+
location = azurerm_resource_group.default.location
5+
resource_group_name = azurerm_resource_group.default.name
6+
application_type = "web"
7+
}
8+
9+
resource "azurerm_key_vault" "default" {
10+
name = "${var.name}${var.environment}kv"
11+
location = azurerm_resource_group.default.location
12+
resource_group_name = azurerm_resource_group.default.name
13+
tenant_id = data.azurerm_client_config.current.tenant_id
14+
sku_name = "premium"
15+
purge_protection_enabled = false
16+
17+
network_acls {
18+
default_action = "Deny"
19+
bypass = "AzureServices"
20+
}
21+
}
22+
23+
resource "azurerm_storage_account" "default" {
24+
name = "${var.name}${var.environment}sa"
25+
location = azurerm_resource_group.default.location
26+
resource_group_name = azurerm_resource_group.default.name
27+
account_tier = "Standard"
28+
account_replication_type = "GRS"
29+
30+
network_rules {
31+
default_action = "Deny"
32+
bypass = ["AzureServices"]
33+
}
34+
}
35+
36+
resource "azurerm_container_registry" "default" {
37+
name = "${var.name}${var.environment}cr"
38+
location = azurerm_resource_group.default.location
39+
resource_group_name = azurerm_resource_group.default.name
40+
sku = "Premium"
41+
admin_enabled = true
42+
}
43+
44+
# Machine Learning workspace
45+
resource "azurerm_machine_learning_workspace" "default" {
46+
name = "${var.name}-${var.environment}-aml"
47+
location = azurerm_resource_group.default.location
48+
resource_group_name = azurerm_resource_group.default.name
49+
application_insights_id = azurerm_application_insights.default.id
50+
key_vault_id = azurerm_key_vault.default.id
51+
storage_account_id = azurerm_storage_account.default.id
52+
container_registry_id = azurerm_container_registry.default.id
53+
54+
identity {
55+
type = "SystemAssigned"
56+
}
57+
}
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
provider "azurerm" {
2+
version = "~>2.0"
3+
features {}
4+
}
5+
6+
data "azurerm_client_config" "current" {}
7+
8+
resource "azurerm_resource_group" "default" {
9+
name = "${var.name}-${var.environment}-rgp"
10+
location = "${var.location}"
11+
}
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
variable "name" {
2+
type = string
3+
description = "Name of the deployment"
4+
default = "mlple999"
5+
}
6+
7+
variable "environment" {
8+
type = string
9+
description = "Name of the environment"
10+
default = "dev"
11+
}
12+
13+
variable "location" {
14+
type = string
15+
description = "Location of the resources"
16+
default = "East US"
17+
}
Lines changed: 203 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,203 @@
1+
# Dependent resources for Azure Machine Learning
2+
resource "azurerm_application_insights" "default" {
3+
name = "${var.name}-${var.environment}-ain"
4+
location = azurerm_resource_group.default.location
5+
resource_group_name = azurerm_resource_group.default.name
6+
application_type = "web"
7+
}
8+
9+
resource "azurerm_key_vault" "default" {
10+
name = "${var.name}${var.environment}kv"
11+
location = azurerm_resource_group.default.location
12+
resource_group_name = azurerm_resource_group.default.name
13+
tenant_id = data.azurerm_client_config.current.tenant_id
14+
sku_name = "premium"
15+
purge_protection_enabled = false
16+
17+
network_acls {
18+
default_action = "Deny"
19+
bypass = "AzureServices"
20+
}
21+
}
22+
23+
resource "azurerm_storage_account" "default" {
24+
name = "${var.name}${var.environment}sa"
25+
location = azurerm_resource_group.default.location
26+
resource_group_name = azurerm_resource_group.default.name
27+
account_tier = "Standard"
28+
account_replication_type = "GRS"
29+
30+
network_rules {
31+
default_action = "Deny"
32+
bypass = ["AzureServices"]
33+
}
34+
}
35+
36+
resource "azurerm_container_registry" "default" {
37+
name = "${var.name}${var.environment}cr"
38+
location = azurerm_resource_group.default.location
39+
resource_group_name = azurerm_resource_group.default.name
40+
sku = "Premium"
41+
admin_enabled = true
42+
}
43+
44+
# Machine Learning workspace
45+
resource "azurerm_machine_learning_workspace" "default" {
46+
name = "${var.name}-${var.environment}-aml"
47+
location = azurerm_resource_group.default.location
48+
resource_group_name = azurerm_resource_group.default.name
49+
application_insights_id = azurerm_application_insights.default.id
50+
key_vault_id = azurerm_key_vault.default.id
51+
storage_account_id = azurerm_storage_account.default.id
52+
container_registry_id = azurerm_container_registry.default.id
53+
54+
identity {
55+
type = "SystemAssigned"
56+
}
57+
}
58+
59+
# Virtual network
60+
resource "azurerm_virtual_network" "default" {
61+
name = "${var.name}-${var.environment}-vnet"
62+
address_space = ["10.0.0.0/16"]
63+
location = azurerm_resource_group.default.location
64+
resource_group_name = azurerm_resource_group.default.name
65+
}
66+
67+
resource "azurerm_subnet" "mlsubnet" {
68+
name = "mlsubnet"
69+
resource_group_name = azurerm_resource_group.default.name
70+
virtual_network_name = azurerm_virtual_network.default.name
71+
address_prefixes = ["10.0.1.0/24"]
72+
enforce_private_link_endpoint_network_policies = true
73+
}
74+
75+
# DNS zones
76+
resource "azurerm_private_dns_zone" "dnsvault" {
77+
name = "privatelink.vaultcore.azure.net"
78+
resource_group_name = azurerm_resource_group.default.name
79+
}
80+
81+
resource "azurerm_private_dns_zone" "dnsstorageblob" {
82+
name = "privatelink.blob.core.windows.net"
83+
resource_group_name = azurerm_resource_group.default.name
84+
}
85+
86+
resource "azurerm_private_dns_zone" "dnsstoragefile" {
87+
name = "privatelink.file.core.windows.net"
88+
resource_group_name = azurerm_resource_group.default.name
89+
}
90+
91+
resource "azurerm_private_dns_zone" "dnscontainerregistry" {
92+
name = "privatelink.azurecr.io"
93+
resource_group_name = azurerm_resource_group.default.name
94+
}
95+
96+
resource "azurerm_private_dns_zone" "dnsazureml" {
97+
name = "privatelink.api.azureml.ms"
98+
resource_group_name = azurerm_resource_group.default.name
99+
}
100+
101+
resource "azurerm_private_dns_zone" "dnsnotebooks" {
102+
name = "privatelink.azureml.notebooks.net"
103+
resource_group_name = azurerm_resource_group.default.name
104+
}
105+
106+
# Private endpoints
107+
resource "azurerm_private_endpoint" "keyvault_ple" {
108+
name = "${var.name}-${var.environment}-kv-ple"
109+
location = azurerm_resource_group.default.location
110+
resource_group_name = azurerm_resource_group.default.name
111+
subnet_id = azurerm_subnet.mlsubnet.id
112+
113+
private_dns_zone_group {
114+
name = "private-dns-zone-group"
115+
private_dns_zone_ids = [azurerm_private_dns_zone.dnsvault.id]
116+
}
117+
118+
private_service_connection {
119+
name = "${var.name}kv-psc"
120+
private_connection_resource_id = azurerm_key_vault.default.id
121+
subresource_names = [ "vault" ]
122+
is_manual_connection = false
123+
}
124+
}
125+
126+
resource "azurerm_private_endpoint" "storage_ple_blob" {
127+
name = "${var.name}-${var.environment}-sa-ple-blob"
128+
location = azurerm_resource_group.default.location
129+
resource_group_name = azurerm_resource_group.default.name
130+
subnet_id = azurerm_subnet.mlsubnet.id
131+
132+
private_dns_zone_group {
133+
name = "private-dns-zone-group"
134+
private_dns_zone_ids = [azurerm_private_dns_zone.dnsstorageblob.id]
135+
}
136+
137+
private_service_connection {
138+
name = "${var.name}sa-psc"
139+
private_connection_resource_id = azurerm_storage_account.default.id
140+
subresource_names = [ "blob" ]
141+
is_manual_connection = false
142+
}
143+
}
144+
145+
resource "azurerm_private_endpoint" "storage_ple_file" {
146+
name = "${var.name}-${var.environment}-sa-ple-file"
147+
location = azurerm_resource_group.default.location
148+
resource_group_name = azurerm_resource_group.default.name
149+
subnet_id = azurerm_subnet.mlsubnet.id
150+
151+
private_dns_zone_group {
152+
name = "private-dns-zone-group"
153+
private_dns_zone_ids = [azurerm_private_dns_zone.dnsstoragefile.id]
154+
}
155+
156+
private_service_connection {
157+
name = "${var.name}sa-psc"
158+
private_connection_resource_id = azurerm_storage_account.default.id
159+
subresource_names = [ "file" ]
160+
is_manual_connection = false
161+
}
162+
}
163+
164+
resource "azurerm_private_endpoint" "cr_ple" {
165+
name = "${var.name}-${var.environment}-cr-ple"
166+
location = azurerm_resource_group.default.location
167+
resource_group_name = azurerm_resource_group.default.name
168+
subnet_id = azurerm_subnet.mlsubnet.id
169+
170+
private_dns_zone_group {
171+
name = "private-dns-zone-group"
172+
private_dns_zone_ids = [azurerm_private_dns_zone.dnscontainerregistry.id]
173+
}
174+
175+
private_service_connection {
176+
name = "${var.name}cr-psc"
177+
private_connection_resource_id = azurerm_container_registry.default.id
178+
subresource_names = [ "registry" ]
179+
is_manual_connection = false
180+
}
181+
}
182+
183+
resource "azurerm_private_endpoint" "ml_ple" {
184+
name = "${var.name}-${var.environment}-ple"
185+
location = azurerm_resource_group.default.location
186+
resource_group_name = azurerm_resource_group.default.name
187+
subnet_id = azurerm_subnet.mlsubnet.id
188+
189+
private_dns_zone_group {
190+
name = "private-dns-zone-group"
191+
private_dns_zone_ids = [
192+
azurerm_private_dns_zone.dnsazureml.id,
193+
azurerm_private_dns_zone.dnsnotebooks.id
194+
]
195+
}
196+
197+
private_service_connection {
198+
name = "${var.name}ml-psc"
199+
private_connection_resource_id = azurerm_machine_learning_workspace.default.id
200+
subresource_names = [ "amlworkspace" ]
201+
is_manual_connection = false
202+
}
203+
}

0 commit comments

Comments
 (0)