generated from Azure/terraform-azurerm-avm-template
-
Notifications
You must be signed in to change notification settings - Fork 16
/
Copy pathmain.tf
191 lines (158 loc) · 6.74 KB
/
main.tf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
moved {
from = random_string.default_custom_subdomain_name_suffix
to = random_string.default_custom_subdomain_name_suffix[0]
}
resource "random_string" "default_custom_subdomain_name_suffix" {
count = var.kind != "AIServices" ? 1 : 0
length = 5
special = false
upper = false
}
moved {
from = azurerm_cognitive_account.this
to = azurerm_cognitive_account.this[0]
}
resource "azurerm_cognitive_account" "this" {
count = var.kind != "AIServices" ? 1 : 0
kind = var.kind
location = var.location
name = var.name
resource_group_name = var.resource_group_name
sku_name = var.sku_name
custom_question_answering_search_service_id = var.custom_question_answering_search_service_id
custom_question_answering_search_service_key = var.custom_question_answering_search_service_key
custom_subdomain_name = coalesce(var.custom_subdomain_name, "azure-cognitive-${random_string.default_custom_subdomain_name_suffix[0].result}")
dynamic_throttling_enabled = var.dynamic_throttling_enabled
fqdns = var.fqdns
local_auth_enabled = var.local_auth_enabled
metrics_advisor_aad_client_id = var.metrics_advisor_aad_client_id
metrics_advisor_aad_tenant_id = var.metrics_advisor_aad_tenant_id
metrics_advisor_super_user_name = var.metrics_advisor_super_user_name
metrics_advisor_website_name = var.metrics_advisor_website_name
outbound_network_access_restricted = var.outbound_network_access_restricted
public_network_access_enabled = var.public_network_access_enabled
qna_runtime_endpoint = var.qna_runtime_endpoint
tags = var.tags
dynamic "identity" {
for_each = (var.managed_identities.system_assigned || length(var.managed_identities.user_assigned_resource_ids) > 0) ? { this = var.managed_identities } : {}
content {
type = identity.value.system_assigned && length(identity.value.user_assigned_resource_ids) > 0 ? "SystemAssigned, UserAssigned" : length(identity.value.user_assigned_resource_ids) > 0 ? "UserAssigned" : "SystemAssigned"
identity_ids = identity.value.user_assigned_resource_ids
}
}
dynamic "network_acls" {
for_each = var.network_acls == null ? [] : [var.network_acls]
content {
default_action = network_acls.value.default_action
ip_rules = network_acls.value.ip_rules
dynamic "virtual_network_rules" {
for_each = network_acls.value.virtual_network_rules == null ? [] : network_acls.value.virtual_network_rules
content {
subnet_id = virtual_network_rules.value.subnet_id
ignore_missing_vnet_service_endpoint = virtual_network_rules.value.ignore_missing_vnet_service_endpoint
}
}
}
}
dynamic "storage" {
for_each = var.storage == null ? [] : var.storage
content {
storage_account_id = storage.value.storage_account_id
identity_client_id = storage.value.identity_client_id
}
}
dynamic "timeouts" {
for_each = var.timeouts == null ? [] : [var.timeouts]
content {
create = timeouts.value.create
delete = timeouts.value.delete
read = timeouts.value.read
update = timeouts.value.update
}
}
lifecycle {
ignore_changes = [
customer_managed_key,
]
precondition {
# we cannot add this check on `azurerm_cognitive_account_customer_managed_key` resource, since when `var.is_hsm_key` is `false` the resource won't be created.
condition = var.kind == "AIServices" || !var.is_hsm_key
error_message = "HSM key could only be used when `var.kind == \"AIServices\"`"
}
}
}
locals {
managed_key_identity_client_id = try(data.azurerm_user_assigned_identity.this[0].client_id, null)
}
data "azurerm_key_vault_key" "this" {
count = var.customer_managed_key != null && !var.is_hsm_key ? 1 : 0
key_vault_id = var.customer_managed_key.key_vault_resource_id
name = var.customer_managed_key.key_name
}
data "azurerm_key_vault_managed_hardware_security_module_key" "this" {
count = var.customer_managed_key != null && var.is_hsm_key ? 1 : 0
managed_hsm_id = var.customer_managed_key.key_vault_resource_id
name = var.customer_managed_key.key_name
}
data "azurerm_user_assigned_identity" "this" {
count = try(var.customer_managed_key.user_assigned_identity != null, false) ? 1 : 0
#/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.ManagedIdentity/userAssignedIdentities/{userAssignedIdentityName}
name = reverse(split("/", var.customer_managed_key.user_assigned_identity.resource_id))[0]
resource_group_name = split("/", var.customer_managed_key.user_assigned_identity.resource_id)[4]
}
resource "azurerm_cognitive_account_customer_managed_key" "this" {
count = var.customer_managed_key != null && !var.is_hsm_key ? 1 : 0
cognitive_account_id = local.resource_block.id
key_vault_key_id = data.azurerm_key_vault_key.this[0].id
identity_client_id = local.managed_key_identity_client_id
dynamic "timeouts" {
for_each = var.timeouts == null ? [] : [var.timeouts]
content {
create = timeouts.value.create
delete = timeouts.value.delete
read = timeouts.value.read
update = timeouts.value.update
}
}
}
resource "azurerm_cognitive_deployment" "this" {
for_each = var.cognitive_deployments
cognitive_account_id = local.resource_block.id
name = each.value.name
rai_policy_name = each.value.rai_policy_name
version_upgrade_option = each.value.version_upgrade_option
dynamic "model" {
for_each = [each.value.model]
content {
format = model.value.format
name = model.value.name
version = model.value.version
}
}
dynamic "sku" {
for_each = [each.value.scale]
iterator = scale
content {
capacity = scale.value.capacity
family = scale.value.family
name = scale.value.type
size = scale.value.size
tier = scale.value.tier
}
}
dynamic "timeouts" {
for_each = each.value.timeouts == null ? [] : [each.value.timeouts]
content {
create = timeouts.value.create
delete = timeouts.value.delete
read = timeouts.value.read
update = timeouts.value.update
}
}
depends_on = [
azurerm_cognitive_account_customer_managed_key.this
]
}
locals {
resource_block = try(azurerm_cognitive_account.this[0], azurerm_ai_services.this[0])
}