Subchapter 14.12
references/recipes/azd/README.mdMarkdown4 KBView on GitHub
Deploy to Azure using Azure Developer CLI (azd).
💡 Note: azd supports both Bicep and Terraform as IaC providers. The deployment workflow is identical regardless of which you use.
references/recipes/azd/8 filesazd CLI installed → Run mcp_azure_mcp_extension_cli_install with cli-type: azd if needed.azure/deployment-plan.md exists with status Validatedazure.yaml exists and validatedinfra/main.bicep, Terraform: infra/*.tf)| Step | Task | Command |
|---|---|---|
| 1 | Verify environment | azd env get-values — Confirm AZURE_SUBSCRIPTION_ID and AZURE_LOCATION set |
| 2 | Provision infrastructure | azd provision --no-prompt |
| 3 | RBAC health check (Container Apps + ACR only) | After provisioning, verify AcrPull role has propagated before deploying — see Pre-Deploy Checklist |
| 4 | Deploy application | azd deploy --no-prompt |
| 5 | Post-Deploy | Post-Deployment Steps — If using SQL + managed identity |
| 6 | Verify | See Verification |
| 7 | Report | Present deployed endpoint URLs to the user — see Verification Step 3 |
⚠️ Important: For Container Apps that use a managed identity to pull from ACR, always run
azd provisionandazd deployas separate steps (notazd up) and complete the RBAC health check between them. This ensures the managed identityAcrPullrole assignment has propagated before the Container App revision attempts to pull the image.
⚠️ Important: For .NET Aspire projects or projects using azd “limited mode” (no explicit
infra/folder), verify thatazd provisionpopulated all required environment variables. Ifazd deployfails with errors about missingAZURE_CONTAINER_REGISTRY_ENDPOINT,AZURE_CONTAINER_REGISTRY_MANAGED_IDENTITY_ID, orMANAGED_IDENTITY_CLIENT_ID, see Error Handling for the resolution.
| ❌ Wrong | Why It Fails |
|---|---|
azd up --location eastus2 | --location is not a valid flag for azd up |
azd up without azd env new | Prompts for input, fails with --no-prompt |
mkdir .azure then azd env new --no-prompt | Creates env folder structure incorrectly |
| Setting AZURE_LOCATION without checking RG | “Invalid resource group location” if RG exists elsewhere |
Ignoring azd-service-name tag conflicts in same RG | “found ‘2’ resources tagged with…” error |
language: html or language: static | Not valid - use language: js with dist: . for static sites |
⚠️
azd uptakes 5-15 min. Run with output streamed visibly to the user — do NOT run silently or suppress output. The user must see provisioning progress in real time.
Provisions infrastructure AND deploys application:
azd up --no-promptazd provision --no-promptDeploy code to existing infrastructure:
azd deploy --no-promptazd deploy api --no-prompt