Verwalten von Azure Machine Learning-Arbeitsbereichen mithilfe von Terraform
In diesem Artikel erfahren Sie, wie Sie mithilfe von Terraform-Konfigurationsdateien einen Azure Machine Learning-Arbeitsbereich erstellen und verwalten. Die vorlagenbasierten Konfigurationsdateien von Terraform ermöglichen es Ihnen, Azure-Ressourcen auf wiederholbare und vorhersagbare Weise zu definieren, zu erstellen und zu konfigurieren. Terraform verfolgt den Ressourcenzustand und kann Ressourcen bereinigen und zerstören.
Eine Terraform-Konfigurationsdatei ist ein Dokument, das die Ressourcen definiert, die für eine Bereitstellung benötigt werden. Die Terraform-Konfiguration kann auch Bereitstellungsvariablen enthalten, die verwendet werden sollen, um bei Anwendung der Konfiguration Eingabewerte bereitzustellen.
Voraussetzungen
- Ein Azure-Abonnement mit einer kostenlosen oder kostenpflichtigen Version von Azure Machine Learning. Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.
- Terraform installiert und konfiguriert gemäß den Anweisungen unter Schnellstart: Installieren und Konfigurieren von Terraform.
Begrenzungen
Wenn Sie einen neuen Arbeitsbereich erstellen, können Sie die vom Arbeitsbereich benötigten Dienste automatisch erstellen oder vorhandene Dienste verwenden. Wenn Sie vorhandene Dienste aus einem anderen Azure-Abonnement als dem des Arbeitsbereichs verwenden möchten, müssen Sie den Azure Machine Learning-Namespace in dem Abonnement mit diesen Dienst registrieren. Wenn Sie z. B. einen Arbeitsbereich in Abonnement A erstellen, der ein Speicherkonto aus Abonnement B verwendet, muss der Azure Machine Learning-Namespace in Abonnement B registriert werden, damit der Arbeitsbereich das Speicherkonto verwenden kann.
Der Ressourcenanbieter für Machine Learning ist Microsoft.MachineLearningServices. Informationen dazu, ob er registriert ist oder registriert wird, finden Sie unter Azure-Ressourcenanbieter und -typen.
Wichtig
Diese Informationen betreffen nur Ressourcen, die beim Erstellen des Arbeitsbereichs bereitgestellt werden, also Azure Storage-Konten, Azure Container Registry, Azure Key Vault und Application Insights.
Die folgende Einschränkung gilt für die Application Insights-Instanz, die während der Arbeitsbereicherstellung erstellt wird:
Tipp
Eine Azure Application Insights-Instanz wird erstellt, wenn Sie den Arbeitsbereich erstellen. Wenn Sie möchten, können Sie die Application Insights-Instanz nach der Clustererstellung löschen. Durch das Löschen werden die aus dem Arbeitsbereich gesammelten Informationen eingeschränkt, und die Problembehandlung ist möglicherweise schwieriger. Wenn Sie die vom Arbeitsbereich erstellte Application Insights-Instanz löschen, können Sie sie nur neu erstellen, indem Sie den Arbeitsbereich löschen und neu erstellen.
Weitere Informationen zur Verwendung der Application Insights-Instanz finden Sie unter Überwachen und Erfassen von Daten von ML-Webdienst-Endpunkten.
Erstellen des Arbeitsbereichs
Erstellen Sie eine Datei namens main.tf mit dem folgenden Code.
data "azurerm_client_config" "current" {}
resource "azurerm_resource_group" "default" {
name = "${random_pet.prefix.id}-rg"
location = var.location
}
resource "random_pet" "prefix" {
prefix = var.prefix
length = 2
}
resource "random_integer" "suffix" {
min = 10000000
max = 99999999
}
Deklarieren Sie den Azure-Anbieter in einer Datei namens providers.tf mit dem folgenden Code.
terraform {
required_version = ">= 1.0"
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = ">= 3.0, < 4.0"
}
random = {
source = "hashicorp/random"
version = ">= 3.0"
}
}
}
provider "azurerm" {
features {
key_vault {
recover_soft_deleted_key_vaults = false
purge_soft_delete_on_destroy = false
purge_soft_deleted_keys_on_destroy = false
}
resource_group {
prevent_deletion_if_contains_resources = false
}
}
}
Konfigurieren des Arbeitsbereichs
Um einen Azure Machine Learning-Arbeitsbereich zu erstellen, verwenden Sie eine der folgenden Terraform-Konfigurationen: Ein Azure Machine Learning-Arbeitsbereich erfordert verschiedene andere Dienste als Abhängigkeiten. Die Vorlage gibt diese zugehörigen Ressourcen an. Je nach Bedarf können Sie eine Vorlage verwenden, die Ressourcen mit öffentlicher oder privater Netzwerkkonnektivität erstellt.
Hinweis
Einige Ressourcen in Azure erfordern global eindeutige Namen. Stellen Sie vor der Bereitstellung Ihrer Ressourcen sicher, dass name
-Variablen auf eindeutige Werte festgelegt werden.
Die folgende Konfiguration erstellt einen Arbeitsbereich mit öffentlicher Netzwerkkonnektivität.
Definieren Sie die folgenden Variablen in einer Datei namens variables.tf.
variable "environment" {
type = string
description = "Name of the environment"
default = "dev"
}
variable "location" {
type = string
description = "Location of the resources"
default = "eastus"
}
variable "prefix" {
type = string
description = "Prefix of the resource name"
default = "ml"
}
Definieren Sie die folgende Arbeitsbereichskonfiguration in einer Datei namens workspace.tf:
# Dependent resources for Azure Machine Learning
resource "azurerm_application_insights" "default" {
name = "${random_pet.prefix.id}-appi"
location = azurerm_resource_group.default.location
resource_group_name = azurerm_resource_group.default.name
application_type = "web"
}
resource "azurerm_key_vault" "default" {
name = "${var.prefix}${var.environment}${random_integer.suffix.result}kv"
location = azurerm_resource_group.default.location
resource_group_name = azurerm_resource_group.default.name
tenant_id = data.azurerm_client_config.current.tenant_id
sku_name = "premium"
purge_protection_enabled = false
}
resource "azurerm_storage_account" "default" {
name = "${var.prefix}${var.environment}${random_integer.suffix.result}st"
location = azurerm_resource_group.default.location
resource_group_name = azurerm_resource_group.default.name
account_tier = "Standard"
account_replication_type = "GRS"
allow_nested_items_to_be_public = false
}
resource "azurerm_container_registry" "default" {
name = "${var.prefix}${var.environment}${random_integer.suffix.result}cr"
location = azurerm_resource_group.default.location
resource_group_name = azurerm_resource_group.default.name
sku = "Premium"
admin_enabled = true
}
# Machine Learning workspace
resource "azurerm_machine_learning_workspace" "default" {
name = "${random_pet.prefix.id}-mlw"
location = azurerm_resource_group.default.location
resource_group_name = azurerm_resource_group.default.name
application_insights_id = azurerm_application_insights.default.id
key_vault_id = azurerm_key_vault.default.id
storage_account_id = azurerm_storage_account.default.id
container_registry_id = azurerm_container_registry.default.id
public_network_access_enabled = true
identity {
type = "SystemAssigned"
}
}
Erstellen und Anwenden des Plans
Führen Sie zum Erstellen des Arbeitsbereichs den folgenden Code aus:
terraform init
terraform plan \
# -var <any of the variables set in variables.tf> \
-out demo.tfplan
terraform apply "demo.tfplan"
Beheben von Ressourcenanbieterfehlern
Wenn Sie einen Azure Machine Learning-Arbeitsbereich oder eine vom Arbeitsbereich verwendete Ressource erstellen, erhalten Sie möglicherweise eine Fehlermeldung ähnlich der folgenden:
No registered resource provider found for location {location}
The subscription is not registered to use namespace {resource-provider-namespace}
Die meisten Ressourcenanbieter werden automatisch registriert, aber nicht alle. Wenn Sie diese Meldung erhalten, müssen Sie den erwähnten Anbieter registrieren.
Die folgende Tabelle enthält eine Liste der Ressourcenanbieter, die für Azure Machine Learning erforderlich sind:
Ressourcenanbieter | Zweck |
---|---|
Microsoft.MachineLearningServices | Erstellen des Azure Machine Learning-Arbeitsbereichs |
Microsoft.Storage | Das Azure Storage-Konto wird als Standarddatenspeicher für den Arbeitsbereich verwendet. |
Microsoft.ContainerRegistry | Azure Container Registry wird vom Arbeitsbereich zum Erstellen von Docker-Images verwendet. |
Microsoft.KeyVault | Azure Key Vault wird vom Arbeitsbereich zum Speichern von Geheimnissen verwendet. |
Microsoft.Notebooks | Integrierte Notebooks in einer Azure Machine Learning-Compute-Instanz |
Microsoft.ContainerService | Wenn Sie die Bereitstellung trainierter Modelle in Azure Kubernetes Services planen |
Wenn Sie einen kundenseitig verwalteten Schlüssel mit Azure Machine Learning verwenden möchten, müssen die folgenden Dienstanbieter registriert werden:
Ressourcenanbieter | Zweck |
---|---|
Microsoft.DocumentDB | Azure CosmosDB-Instanz, die Metadaten für den Arbeitsbereich protokolliert |
Microsoft.Search | Azure Search bietet Indizierungsfunktionen für den Arbeitsbereich. |
Wenn Sie ein verwaltetes virtuelles Netzwerk mit Azure Machine Learning verwenden möchten, muss der Microsoft.Network Ressourcenanbieter registriert werden. Dieser Ressourcenanbieter wird vom Arbeitsbereich beim Erstellen privater Endpunkte für das verwaltete virtuelle Netzwerk verwendet.
Weitere Informationen zum Registrieren eines Ressourcenanbieters finden Sie unter Beheben von Fehlern bei der Ressourcenanbieterregistrierung.
Zugehörige Ressourcen
Weitere Informationen zur Unterstützung von Terraform in Azure finden Sie in der Dokumentation zu Terraform in Azure.
Ausführliche Informationen zum Azure-Anbieter für Terraform finden Sie unter Terraform-Registrierung: Azure Resource Manager-Anbieter.
Beispiele für Schnellstartvorlagen für Terraform finden Sie unter den folgenden Azure-Terraform-Schnellstartvorlagen:
- 101: Machine Learning-Arbeitsbereich und -Computeressourcen bietet die mindestens erforderlichen Ressourcen für die ersten Schritte mit Azure Machine Learning.
- 201: Machine Learning-Arbeitsbereich, Compute und ein Satz von Netzwerkkomponenten für die Netzwerkisolation stellt alle Ressourcen bereit, die erforderlich sind, um eine Produktionspilotumgebung zu erstellen, die mit HBI-Daten verwendet werden kann.
- 202: Ähnlich wie 201, jedoch mit der Möglichkeit, vorhandene Netzwerkkomponenten einzubringen.
- 301: Machine Learning Arbeitsbereich (Secure Hub und Spoke mit Firewall)
Weitere Informationen zu Netzwerkkonfigurationsoptionen finden Sie unter Schützen von Azure Machine Learning-Arbeitsbereichsressourcen mit virtuellen Netzwerken (VNets).
Alternative, auf Azure Resource Manager-Vorlagen basierende Bereitstellungen finden Sie unter Bereitstellen von Ressourcen mit Resource Manager-Vorlagen und Resource Manager-REST-API.
Informationen dazu, wie Sie Ihren Azure Machine Learning-Arbeitsbereich mit den aktuellen Sicherheitsupdates auf dem neuesten Stand halten, finden Sie unter Verwaltung von Sicherheitsrisiken.