Freigeben über


Verwenden von Terraform zum Erstellen eines Azure KI Foundry-Hubs

Hinweis

Die Informationen in diesem Artikel gelten nur für ein Hub-basiertes Projekt und gelten nicht für ein Foundry-Projekt. Sehen Sie Wie kann ich feststellen, welche Art von Projekt ich habe? und Erstellen Sie ein Hub-basiertes Projekt.

In diesem Artikel verwenden Sie Terraform, um einen Azure AI Foundry-Hub, ein Projekt und eine KI-Dienstverbindung zu erstellen. Ein Hub ist ein zentraler Ort für Datenwissenschaftler und Entwickler, um an Machine Learning-Projekten zusammenzuarbeiten. Er bietet einen gemeinsam genutzten Kollaborationsbereich zum Erstellen, Trainieren und Bereitstellen von Machine Learning-Modellen. Der Hub ist in Azure Machine Learning sowie andere Azure-Dienste integriert und ist daher eine umfassende Lösung für Machine Learning-Aufgaben. Der Hub ermöglicht es Ihnen auch, Ihre KI-Bereitstellungen zu verwalten und zu überwachen, um sicherzustellen, dass sie wie erwartet ausgeführt werden.

Terraform ermöglicht die Definition, Vorschau und Bereitstellung der Cloudinfrastruktur. Terraform ermöglicht das Erstellen von Konfigurationsdateien mit HCL-Syntax. Mit der HCL-Syntax können Sie den Cloudanbieter ( z. B. Azure ) und die Elemente angeben, aus denen Ihre Cloudinfrastruktur besteht. Nach der Erstellung Ihrer Konfigurationsdateien erstellen Sie einen Ausführungsplan, mit dem Sie eine Vorschau Ihrer Infrastrukturänderungen anzeigen können, bevor diese bereitgestellt werden. Nachdem Sie die Änderungen überprüft haben, wenden Sie den Ausführungsplan an, um die Infrastruktur bereitzustellen.

  • Erstellen einer Ressourcengruppe
  • Einrichten eines Speicherkontos
  • Einrichten eines Schlüsseltresors
  • Konfigurieren von KI-Diensten
  • Erstellen eines Azure KI Foundry-Hubs
  • Entwickeln eines Azure KI Foundry-Projekts
  • Einrichten einer KI-Dienstverbindung

Voraussetzungen

Implementieren des Terraform-Codes

Hinweis

Der Beispielcode für diesen Artikel befindet sich im Azure Terraform GitHub-Repository. Sie können die Protokolldatei anzeigen, die die Testergebnisse aus den aktuellen und früheren Versionen von Terraform enthält. Möglicherweise müssen Sie die in der Vorlage verwendeten Ressourcenanbieterversionen aktualisieren, um die neuesten verfügbaren Versionen zu verwenden.

Sehen Sie sich mehr Artikel und Beispielcode an, die zeigen, wie man Terraform zur Verwaltung von Azure-Ressourcen verwendet

  1. Erstellen Sie ein Verzeichnis, in dem der Terraform-Beispielcode getestet und ausgeführt werden soll, und legen Sie es als aktuelles Verzeichnis fest.

  2. Erstellen Sie eine Datei namens providers.tf, und fügen Sie den folgenden Code ein:

    terraform {
      required_version = ">= 1.0"
    
      required_providers {
        azurerm = {
          source  = "hashicorp/azurerm"
          version = "~>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
        }
      }
    }
    
  3. Erstellen Sie eine Datei namens main.tf, und fügen Sie den folgenden Code ein:

    # Random pet to be used in resource group name
    resource "random_pet" "rg_name" {
      prefix = var.resource_group_name_prefix
    }
    
    # Create a resource group
    resource "azurerm_resource_group" "example" {
      location = var.resource_group_location
      name     = random_pet.rg_name.id
    }
    
    # Retrieve information about the current Azure client configuration
    data "azurerm_client_config" "current" {}
    
    # Generate random value for unique resource naming
    resource "random_string" "example" {
      length  = 8
      lower   = true
      numeric = false
      special = false
      upper   = false
    }
    
    # Create an Azure Key Vault resource
    resource "azurerm_key_vault" "example" {
      name                = random_string.example.result                 # Name of the Key Vault
      location            = azurerm_resource_group.example.location      # Location from the resource group
      resource_group_name = azurerm_resource_group.example.name          # Resource group name
      tenant_id           = data.azurerm_client_config.current.tenant_id # Azure tenant ID
    
      sku_name                 = "standard" # SKU tier for the Key Vault
      purge_protection_enabled = true       # Enables purge protection to prevent accidental deletion
    }
    
    # Set an access policy for the Key Vault to allow certain operations
    resource "azurerm_key_vault_access_policy" "test" {
      key_vault_id = azurerm_key_vault.example.id                 # Key Vault reference
      tenant_id    = data.azurerm_client_config.current.tenant_id # Tenant ID
      object_id    = data.azurerm_client_config.current.object_id # Object ID of the principal
    
      key_permissions = [ # List of allowed key permissions
        "Create",
        "Get",
        "Delete",
        "Purge",
        "GetRotationPolicy",
      ]
    }
    
    # Create an Azure Storage Account
    resource "azurerm_storage_account" "example" {
      name                     = random_string.example.result            # Storage account name
      location                 = azurerm_resource_group.example.location # Location from the resource group
      resource_group_name      = azurerm_resource_group.example.name     # Resource group name
      account_tier             = "Standard"                              # Performance tier
      account_replication_type = "LRS"                                   # Locally-redundant storage replication
    }
    
    # Deploy Azure AI Services resource
    resource "azurerm_ai_services" "example" {
      name                  = "exampleaiservices"                     # AI Services resource name
      location              = azurerm_resource_group.example.location # Location from the resource group
      resource_group_name   = azurerm_resource_group.example.name     # Resource group name
      sku_name              = "S0"                                    # Pricing SKU tier
      custom_subdomain_name = "exampleaiservices"                     # Custom subdomain name
    }
    
    # Create Azure AI Foundry service
    resource "azurerm_ai_foundry" "example" {
      name                = "exampleaihub"                       # AI Foundry service name
      location            = azurerm_ai_services.example.location # Location from the AI Services resource
      resource_group_name = azurerm_resource_group.example.name  # Resource group name
      storage_account_id  = azurerm_storage_account.example.id   # Associated storage account
      key_vault_id        = azurerm_key_vault.example.id         # Associated Key Vault
    
      identity {
        type = "SystemAssigned" # Enable system-assigned managed identity
      }
    }
    
    # Create an AI Foundry Project within the AI Foundry service
    resource "azurerm_ai_foundry_project" "example" {
      name               = "example"                           # Project name
      location           = azurerm_ai_foundry.example.location # Location from the AI Foundry service
      ai_services_hub_id = azurerm_ai_foundry.example.id       # Associated AI Foundry service
    
      identity {
        type = "SystemAssigned" # Enable system-assigned managed identity
      }
    }
    
  4. Erstellen Sie eine Datei namens variables.tf, und fügen Sie den folgenden Code ein:

    variable "resource_group_location" {
      type        = string
      default     = "eastus"
      description = "Location of the resource group."
    }
    
    variable "resource_group_name_prefix" {
      type        = string
      default     = "rg"
      description = "Prefix of the resource group name that's combined with a random ID so name is unique in your Azure subscription."
    }
    
  5. Erstellen Sie eine Datei namens outputs.tf, und fügen Sie den folgenden Code ein:

    output "resource_group_name" {
      value = azurerm_resource_group.example.id
    }
    
    output "workspace_name" {
      value = azurerm_ai_foundry.example.name
    }
    

Initialisieren Sie Terraform

Führen Sie terraform init aus, um die Terraform-Bereitstellung zu initialisieren. Mit diesem Befehl wird der Azure-Anbieter heruntergeladen, der zum Verwalten Ihrer Azure-Ressourcen erforderlich ist.

terraform init -upgrade

Die wichtigsten Punkte:

  • Der Parameter -upgrade aktualisiert die erforderlichen Anbieter-Plug-Ins auf die neueste Version, die den Versionseinschränkungen der Konfiguration entspricht.

Erstellen eines Terraform-Ausführungsplans

Führen Sie terraform plan aus, um einen Ausführungsplan zu erstellen.

terraform plan -out main.tfplan

Die wichtigsten Punkte:

  • Durch den Befehl terraform plan wird ein Ausführungsplan erstellt, aber nicht ausgeführt. Stattdessen werden die Aktionen ermittelt, die erforderlich sind, um die in Ihren Konfigurationsdateien angegebene Konfiguration zu erstellen. Mit diesem Muster können Sie überprüfen, ob der Ausführungsplan Ihren Erwartungen entspricht, bevor Sie Änderungen an den eigentlichen Ressourcen vornehmen.
  • Der optionale Parameter -out ermöglicht die Angabe einer Ausgabedatei für den Plan. Durch die Verwendung des Parameters -out wird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.

Anwenden eines Terraform-Ausführungsplans

Führen Sie terraform apply aus, um den Ausführungsplan auf Ihre Cloudinfrastruktur anzuwenden.

terraform apply main.tfplan

Die wichtigsten Punkte:

  • Der Beispielbefehl terraform apply setzt voraus, dass Sie zuvor terraform plan -out main.tfplan ausgeführt haben.
  • Wenn Sie einen anderen Dateinamen für den Parameter -out angegeben haben, verwenden Sie denselben Dateinamen im Aufruf von terraform apply.
  • Wenn Sie den Parameter -out nicht verwendet haben, rufen Sie terraform apply ohne Parameter auf.

Überprüfen der Ergebnisse

  1. Rufen Sie den Namen der Azure-Ressourcengruppe ab.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Rufen Sie den Arbeitsbereichsnamen ab.

    workspace_name=$(terraform output -raw workspace_name)
    
  3. Führen Sie az ml workspace show aus, um Informationen zum neuen Arbeitsbereich anzuzeigen.

    az ml workspace show --resource-group $resource_group_name \
                         --name $workspace_name
    

Bereinigen von Ressourcen

Wenn Sie die über Terraform erstellten Ressourcen nicht mehr benötigen, führen Sie die folgenden Schritte aus:

  1. Führen Sie terraform plan aus, und geben Sie das Flag destroy an.

    terraform plan -destroy -out main.destroy.tfplan
    

    Die wichtigsten Punkte:

    • Durch den Befehl terraform plan wird ein Ausführungsplan erstellt, aber nicht ausgeführt. Stattdessen werden die Aktionen ermittelt, die erforderlich sind, um die in Ihren Konfigurationsdateien angegebene Konfiguration zu erstellen. Mit diesem Muster können Sie überprüfen, ob der Ausführungsplan Ihren Erwartungen entspricht, bevor Sie Änderungen an den eigentlichen Ressourcen vornehmen.
    • Der optionale Parameter -out ermöglicht die Angabe einer Ausgabedatei für den Plan. Durch die Verwendung des Parameters -out wird sichergestellt, dass genau der von Ihnen überprüfte Plan angewendet wird.
  2. Führen Sie den Befehl terraform apply aus, um den Ausführungsplan anzuwenden.

    terraform apply main.destroy.tfplan
    

Problembehandlung für Terraform in Azure

Lösen Sie allgemeine Probleme bei der Verwendung von Terraform in Azure.

Nächste Schritte