scenarios/workload-genai/terraform/modules/openai/openai.tf (46 lines of code) (raw):
data "azurerm_user_assigned_identity" "apimIdentity" {
name = var.apimIdentityName
resource_group_name = var.apimResourceGroupName
}
data "azurerm_subscription" "primary" {
}
resource "azurerm_cognitive_account" "openai" {
name = var.name
location = var.location
resource_group_name = var.resource_group_name
kind = "OpenAI"
custom_subdomain_name = var.custom_subdomain_name
sku_name = var.sku_name
public_network_access_enabled = var.public_network_access_enabled
tags = var.tags
identity {
type = "SystemAssigned"
}
lifecycle {
ignore_changes = [
tags
]
}
}
resource "azurerm_cognitive_deployment" "deployment" {
for_each = { for deployment in var.deployments : deployment.name => deployment }
name = each.key
cognitive_account_id = azurerm_cognitive_account.openai.id
model {
format = "OpenAI"
name = each.value.model.name
version = each.value.model.version
}
scale {
type = "Standard"
}
}
data "azurerm_role_definition" "cognitiveServicesOpenAIUser" {
name = "Cognitive Services OpenAI User"
scope = data.azurerm_subscription.primary.id
}
resource "azurerm_role_assignment" "roleAssignment" {
scope = azurerm_cognitive_account.openai.id
role_definition_id = data.azurerm_role_definition.cognitiveServicesOpenAIUser.id
principal_id = data.azurerm_user_assigned_identity.apimIdentity.principal_id
}