Поделиться через


Создание центра Microsoft Foundry с помощью Terraform

Замечание

Этот документ относится только к порталу Microsoft Foundry (классическая модель ).

Данный документ также относится к проекту на основе концентратора и не применяется к проекту Foundry. Узнайте , как узнать, какой тип проекта у меня есть? И создать центральный проект.

В этой статье вы используете Terraform для создания центра Microsoft Foundry , проекта и подключения средств Foundry. Центр — это центральное место для специалистов по обработке и анализу данных и разработчиков для совместной работы над проектами машинного обучения. Она предоставляет общее, совместное пространство для создания, обучения и развертывания моделей машинного обучения. Центр интегрирован с Машинное обучение Azure и другими службами Azure, что делает его комплексным решением для задач машинного обучения. Центр также позволяет управлять развертываниями ИИ и отслеживать их выполнение.

Terraform включает определение, предварительную версию и развертывание облачной инфраструктуры. С помощью Terraform вы создаете файлы конфигурации с помощью синтаксиса HCL. Синтаксис HCL позволяет указать поставщика облачных служб, таких как Azure, и элементы, составляющие облачную инфраструктуру. После создания файлов конфигурации вы создадите план выполнения , который позволяет предварительно просмотреть изменения инфраструктуры перед развертыванием. После того как вы проверите изменения, примените план выполнения для развертывания инфраструктуры.

  • Создайте группу ресурсов
  • Настройка учетной записи хранения
  • Установка хранилища ключей
  • Настройка средств Foundry
  • Построение центра Foundry
  • Разработка проекта Foundry
  • Создание подключения к средствам Foundry

Предпосылки

Реализуйте код Terraform

Замечание

Пример кода для этой статьи находится в репозитории Azure Terraform GitHub. Вы можете просмотреть файл журнала, содержащий результаты теста из текущих и предыдущих версий Terraform. Возможно, потребуется обновить версии поставщика ресурсов, используемые в шаблоне, чтобы использовать последние доступные версии.

Дополнительные статьи и пример кода, демонстрирующие использование Terraform для управления ресурсами Azure

  1. Создайте каталог для тестирования и выполнения примера кода Terraform и сделайте его текущим каталогом.

  2. Создайте файл с именем providers.tf и вставьте приведенный ниже код.

    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. Создайте файл с именем main.tf и вставьте приведенный ниже код.

    # 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. Создайте файл с именем variables.tf и вставьте приведенный ниже код.

    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. Создайте файл с именем outputs.tf и вставьте приведенный ниже код.

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

Инициализируйте Terraform

Запустите terraform init , чтобы инициализировать развертывание Terraform. Эта команда загружает поставщика Azure, необходимого для управления вашими ресурсами в Azure.

terraform init -upgrade

Ключевые моменты:

  • Параметр -upgrade обновляет необходимые плагины провайдера до самой последней версии, которая соответствует ограничениям версии конфигурации.

Создайте план запуска Terraform

Выполните terraform plan, чтобы создать план выполнения.

terraform plan -out main.tfplan

Ключевые моменты:

  • Команда terraform plan создает план выполнения, но не выполняет его. Вместо этого он определяет, какие действия необходимы для создания конфигурации, указанной в ваших конфигурационных файлах. Данный шаблон позволяет вам убедиться, что план выполнения соответствует вашим ожиданиям, прежде чем вносить какие-либо изменения в реальные ресурсы.
  • Необязательный параметр -out позволяет указать выходной файл для плана. Использование параметра -out обеспечивает, что план, который вы просмотрели, будет применен точно в таком виде.

Применение плана выполнения Terraform

Запустите terraform apply, чтобы применить план выполнения к облачной инфраструктуре.

terraform apply main.tfplan

Ключевые моменты:

  • Пример команды terraform apply предполагает, что вы ранее выполнили команду terraform plan -out main.tfplan.
  • Если вы указали другое имя файла для параметра -out, используйте то же имя файла при вызове terraform apply.
  • Если вы не использовали параметр -out, вызовите terraform apply без параметров.

Проверка результатов

  1. Получите имя группы ресурсов Azure.

    resource_group_name=$(terraform output -raw resource_group_name)
    
  2. Получите имя рабочей области.

    workspace_name=$(terraform output -raw workspace_name)
    
  3. Запустите az ml workspace show , чтобы отобразить сведения о новой рабочей области.

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

Очистите ресурсы

Если вам больше не нужны ресурсы, созданные через Terraform, выполните следующие действия:

  1. Запустите terraform plan и укажите флаг destroy.

    terraform plan -destroy -out main.destroy.tfplan
    

    Ключевые моменты:

    • Команда terraform plan создает план выполнения, но не выполняет его. Вместо этого он определяет, какие действия необходимы для создания конфигурации, указанной в ваших конфигурационных файлах. Данный шаблон позволяет вам убедиться, что план выполнения соответствует вашим ожиданиям, прежде чем вносить какие-либо изменения в реальные ресурсы.
    • Необязательный параметр -out позволяет указать выходной файл для плана. Использование параметра -out обеспечивает, что план, который вы просмотрели, будет применен точно в таком виде.
  2. Чтобы применить план выполнения, запустите terraform apply.

    terraform apply main.destroy.tfplan
    

Устранение неполадок с Terraform в Azure

Устранение распространенных проблем при использовании Terraform в Azure.

Дальнейшие шаги