Hostad agentinfrastruktur med Azure Developer CLI

Viktigt

Objekt som har markerats som förhandsversioner i den här artikeln är för närvarande i förhandsversion. Den här förhandsversionen tillhandahålls utan ett serviceavtal och Microsoft rekommenderar det inte för produktionsarbetsbelastningar. Vissa funktioner kanske inte stöds eller kan vara begränsade. Mer information finns i Kompletterande villkor för användning av Microsoft Azure-förhandsversioner.

När du kör azd ai agent init --infra eller azd ai agent init --infra=bicep, extraherar Azure Developer CLI (azd) redigerbar infrastruktur från dina Foundry-tjänstdeklarationer. Om ingen befintlig infrastruktur finns är standardsökvägen infra. Om du vill bevara befintlig programinfrastruktur lägger ejecteringen till ett Foundry-lager under infra/foundry. Att köra azd provision driftsätter den deklarerade infrastrukturen.

Vad etableras

Som standard azd ai agent init skapar inte infrastruktur-som-kod-filer. Använd --infra eller --infra=bicep för att mata ut Bicep. Använd --infra=terraform för att koppla från Terraform och registrera lagrets provider. Om projektet redan deklarerar Foundry-tjänster, anropa endast --infra; den sökvägen avvisar orelaterade initieringsindata.

Utmatade mallar kommer från tilläggets infrastruktursyntetiserare, inte från ett separat startrepo. För ett nytt projekt etablerar den genererade infrastrukturen det deklarerade Foundry-kontot, projektet och modellimplementeringarna. Ytterligare resurser beror på tjänstkonfigurationen:

Resource Purpose
Resursgrupp Organiserar Foundry-resurserna. Det genererade lagret binder sitt namn via azd-miljön.
AI Services-konto Microsoft Foundry-kontot.
Gjuteri projekt Är värd för agent- och AI-funktionerna.
Modellimplementeringar Modellerna som agenten använder, till exempel gpt-4.1-mini.
Azure Container Registry (containerregistertjänst från Azure) Lagrar images när en agentkonfiguration kräver ett registry. Driftsättning av källkod kräver det inte.
Hanterade identiteter Systemtilldelade identiteter på Foundry-kontot och projektet.

När projektet deklarerar nätverksisolering konfigurerar mallarna även undernät, en privat slutpunkt för kontot och privat DNS. Egressläge väljer injektion i kundnätverk eller ett Microsoft-hanterat nätverk.

De aktuella mallarna skapar inte automatiskt Application Insights, en Log Analytics-arbetsyta, Azure AI-sökning, ett lagringskonto eller en Bing Grounding-resurs. Deklarera och hantera ytterligare applikationsinfrastruktur separat i stället för att anta att en verktygsreferens skapar den.

Projekt-struktur

infra/
|-- main.bicep
|-- main.parameters.json
|-- abbreviations.json
\-- modules/

I det här exemplet visas standardutdata för Bicep utan befintlig infrastruktur. Ett projekt med befintlig applikationsinfrastruktur tar emot ett separat infra/foundry lager. Befintliga lagerkonfigurationer behåller sina deklarerade sökvägar. De exakta modulerna beror på om du skapar ett projekt eller ansluter till ett befintligt projekt. Terraform-utkastning skriver till .tf-filer och main.tfvars.json i stället.

Så här flödar parametrar

Den genererade main.parameters.json innehåller parameterbindningar och värden som härletts från azure.yaml. Ett Bicep-layer använder till exempel miljöassociationer som:

{
  "parameters": {
    "location": { "value": "${AZURE_LOCATION}" },
    "foundryProjectName": { "value": "${AZURE_AI_PROJECT_NAME=${AZURE_ENV_NAME}}" },
    "resourceTokenSalt": { "value": "${AZD_RESOURCE_TOKEN_SALT}" }
  }
}

Under azd provision löser azd upp dessa ${VAR}-referenser från miljön (.azure/<env>/.env) och skickar dem till Bicep-distributionen. Utdata från distribution, till exempel slutpunkten för Foundry-projektet och containerregistrets slutpunkt, skrivs tillbaka till miljön för användning av azd deploy, azd ai agent run och resurskommandona för azd ai.

Terraform-infrastruktur

För ett nytt projekt azd ai agent init --infra=terraform genererar filer som följande:

infra/
|-- main.tf
|-- provider.tf
|-- variables.tf
|-- outputs.tf
|-- main.tfvars.json
\-- .azd-foundry

Containerbaserade tjänster kan också generera container-registry.tf. Befintliga projekt kan behålla sin infrastruktur och ta emot ett separat Foundry-lager under infra/foundry/. Använd den faktiska genererade layouten i stället för att flytta filer mellan lager.

Terraform-konfigurationen etablerar Foundry-kontot, projektet, modelldistributioner och relaterade resurser som krävs av de valda tjänsterna. Skapande av containerregister beror på distributionsläget och avbildningskonfigurationen.

main.tfvars.json binder infrastrukturindata till azd-miljövärden. outputs.tf gör värden som slutpunkten för Foundry-projektet tillgängliga för azd efter provisioneringen. Dessa bindningar är en del av azd-arbetsflödet. anta inte att en genererad parameterfil fungerar oförändrad med en fristående terraform apply.

Om du vill anpassa Terraform-infrastrukturen redigerar du de genererade .tf filerna, bevarar de utdata som behövs av dina agenttjänster och kör azd provision. Granska Terraform-planen innan du tillämpar infrastrukturändringar.

Terraform-tillstånd och CI/CD

De genererade filerna startar inte en fjärrtillståndsserverdel. För teamdistributioner konfigurerar du Azure Storage-säkerhetskopierat tillstånd, separata tillståndsnycklar för varje miljö och nödvändiga serverdelsbehörigheter innan du konfigurerar CI/CD.

Se Konfigurera CI/CD med Terraform för distributionsflödet och Använd Terraform med azd för serverdelskonfiguration.

Terraform-utmatningsbegränsningar

Terraform-utmatningsvägen stöder inte konfiguration av tjänsten network: i det aktuella Foundry Agents-tillägget. Granska begränsningar för befintliga resurser innan du matar ut ett projekt som redan har infrastruktur. Ejection är inte en allmän migrering av tillstånd från Bicep till Terraform, och att ta bort produktionsresurser är inte en förutsättning för att börja använda Terraform.

Befintliga resurser

Om du vill återanvända ett befintligt Foundry-konto och projekt initierar du mot projektets resurs-ID:

azd ai agent init --project-id "<foundry-project-resource-id>"

Export för ett befintligt projekt refererar till kontot och projektet i stället för att skapa ersättningar. Den kan lägga till deklarerade modelldistributioner och skapa eller återanvända ett containerregister. För en befintlig ansluten registreringsenhet använder du --acr-connection under initieringen. Se Distribuera med ett privat containerregister.

Anpassa infrastrukturen

Katalogen infra/ är standardinfrastruktur azd. Så här lägger du till eller ändrar Bicep resurser:

  1. Redigera infra/main.bicep eller lägga till nya moduler under infra/modules/. För skiktad infrastruktur använder du Foundry-lagrets deklarerade sökväg.
  2. Lägg till nya parametrar i main.parameters.json med ${VAR} bindningar.
  3. Ange motsvarande azd miljövariabler med azd env set.
  4. Kör azd provision för att tillämpa ändringarna.

Ändringar i Bicep-filerna kvarstår mellan driftsättningar.

Regionbegränsningar

Den aktuella genererade main.bicep filen innehåller ingen lista över tillåtna regioner. Välj en region som stöder nödvändiga funktioner och modeller för värdbaserade agenter. Redigering av en mall aktiverar inte en tjänst i en region som inte stöds.