Important
本文中標示為預覽的項目目前仍在預覽中。 此預覽版未簽訂服務等級協議,Microsoft 不建議用於生產工作負載。 某些功能可能不被支援或功能受限。 欲了解更多資訊,請參閱 Microsoft Azure 預覽版補充使用條款。
Azure 開發者 CLI(azd)可從 中azure.yaml宣告的服務產生 Bicep 或 Terraform 基礎架構。 選擇 Terraform 與 azd ai agent init --infra=terraform,或 Bicep 與 --infra=bicep。 執行 azd provision 會套用所選的基礎架構。
基礎設施配置與代理部署是分開的。 Terraform 或 Bicep 會管理支援性 Azure 資源;azd deploy 會建立代管代理程式的資料平面版本。 若想用 Terraform 而非 azd 管理代理程式本身,請參見 「部署託管代理與 Terraform」。
哪些會被佈建
預設情況下, azd ai agent init 不會建立基礎設施即程式碼檔案。 使用 --infra 或 --infra=bicep 新增 Bicep 基礎結構。 使用 --infra=terraform 來新增 Terraform 基礎設施並設定 infra.provider: terraform。
當你新增 Bicep 基礎設施時,範本是基於 azd-ai-starter-basic 儲存庫,並建立以下 Azure 資源:
| Resource | Purpose |
|---|---|
| 資源群組 | 整理所有資源。 名為 rg-<agent-name>。 |
| AI 服務帳號 | Microsoft Foundry 帳號。 |
| 鑄造廠計畫 | 承載代理程式和 AI 功能。 |
| 模型部署 | 代理人所使用的模型,例如 gpt-4.1-mini。 |
| Azure Container Registry | 儲存代理容器影像。 |
| Application Insights | 代理程式效能監控與遙測。 |
| Log Analytics 工作區 | 集中式日誌收集。 |
| 受管理的識別 | 專案的系統指派身分識別,用來向 Microsoft Entra ID 驗證代理程式身分識別藍圖,並具備平台角色指派。 |
範本會根據在 azure.yaml 中宣告的服務與相依性,有條件地建立更多的資源:
- 代理能力設定——宣告持有代理狀態、向量資料和檔案的 Azure 資源。 當你需要代理人使用你擁有的儲存空間時,就設定它們。
- Grounding with Bing 或 Grounding with Bing Custom Search——用於網頁搜尋工具。
- Azure AI 搜尋服務 —— 作為搜尋依據。
- Azure 儲存體 -- 用於檔案操作。
專案結構
對於 Bicep,生成的專案結構如下:
infra/
|-- main.bicep # Main deployment template (subscription-scoped)
|-- main.parameters.json # Parameter bindings to azd environment variables
|-- abbreviations.json # Naming convention abbreviations
\-- core/
|-- ai/ # Foundry account, project, and connections
|-- host/ # Container registry
|-- monitor/ # Application Insights and Log Analytics
|-- search/ # Azure AI Search (conditional)
\-- storage/ # Azure Storage (conditional)
參數的流動方式
對於 Bicep,該main.parameters.json檔案會將環境變數映射azd到參數:
{
"environmentName": { "value": "${AZURE_ENV_NAME}" },
"location": { "value": "${AZURE_LOCATION}" },
"aiFoundryResourceName": { "value": "${AZURE_AI_ACCOUNT_NAME}" },
"aiProjectDeploymentsJson": { "value": "${AI_PROJECT_DEPLOYMENTS=[]}" }
}
在 azd provision 期間,azd 會從環境 (${VAR}) 解析這些 .azure/<env>/.env 參考,並將其傳遞給 Bicep 部署。 部署的輸出內容,例如 Foundry 專案端點、模型部署名稱和容器登錄端點,會回寫至環境中,供 azd deploy、azd ai agent run 和 azd ai 資源命令使用。
Terraform 基礎設施
建立新專案時,azd ai agent init --infra=terraform 會產生如下檔案:
infra/
|-- main.tf
|-- provider.tf
|-- variables.tf
|-- outputs.tf
|-- main.tfvars.json
\-- .azd-foundry
基於容器的服務也能產生 container-registry.tf。 現有專案可保留其原有基礎架構,並在 infra/foundry/ 下取得獨立的 Foundry 層。 使用實際產生的版面配置,而不是在圖層間移動檔案。
Terraform 設定提供 Foundry 帳號、專案、模型部署及所選服務所需的相關資源。 容器登錄檔的建立取決於部署模式與映像設定。
main.tfvars.json 將基礎設施輸入綁定於 AZD 環境值。
outputs.tf 在配置後,將像 Foundry 專案端點這類的值暴露給 azd。 這些繫結是 azd 工作流程的一部分;不要假設產生的參數檔可以原封不動地在獨立的 terraform apply 中使用。
要自訂 Terraform 基礎架構,請編輯產生 .tf 的檔案、保留代理服務所需的輸出,並執行 azd provision。 在實施基礎設施變更前,請先檢視 Terraform 計畫。
Terraform 狀態與 CI/CD
產生的檔案不會啟動遠端狀態後端。 對於團隊部署,請先設定以 Azure 儲存體 為後端的狀態、各環境各自的狀態金鑰,以及所需的後端權限,再進行 CI/CD 設定。
請參閱「 使用 Terraform 設定 CI/CD 」來了解部署流程,並 使用 Terraform 搭配 azd 進行後端設定。
Terraform 退出限制
Terraform 退出路徑在目前的 Foundry Agent 擴充功能中,不支援服務network:設定。 在退出已有基礎設施的專案前,請檢視現有資源限制。 退出不是一般 Bicep 到 Terraform 的狀態移轉,且刪除生產資源並不是採用 Terraform 的先決條件。
現有資源
Bicep 範本支援連接現有的 Azure 資源,而非建立新的資源。 這對於團隊已經有共用基礎設施特別有用。
| 現有資源 | 設定環境變數 |
|---|---|
| AI 服務帳號 | AZURE_AI_ACCOUNT_NAME |
| 容器登錄檔 |
AZURE_CONTAINER_REGISTRY_RESOURCE_ID 與 AZURE_CONTAINER_REGISTRY_ENDPOINT |
| Application Insights |
APPLICATIONINSIGHTS_CONNECTION_STRING 與 APPLICATIONINSIGHTS_RESOURCE_ID |
在執行azd env set前,先將這些變數設定為 azd provision 。
客製化基礎設施
目錄 infra/ 是標準 azd 的基礎設施。 新增或更改 Bicep 資源:
- 編輯
infra/main.bicep或在infra/core/下方新增模組。 - 將新參數加入
main.parameters.json,並使用${VAR}綁定。 - 將對應
azd的環境變數設為azd env set。 - 執行
azd provision以套用變更。
Bicep 檔案的變更會保存在各個部署。
區域限制
該 main.bicep 範本限制 location 於支援託管代理的區域。 如果你需要部署到不在允許清單中的區域,請在 @allowed 中更新 main.bicep 裝飾器。