Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Prepare Azure environments for new workloads—subscriptions, networking, identity, and landing zones
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
references/recipe-selection.md
1# Recipe Selection23Choose the deployment recipe based on project needs and existing tooling.45## ⛔ Special Cases: Detect First67**Before selecting a recipe, check for these special project types:**89| Project Type | Detection | Recipe Selection |10|--------------|-----------|------------------|11| **.NET Aspire** | `*.AppHost.csproj` or `Aspire.Hosting` package | **AZD (auto via `azd init --from-code`)** → [aspire.md](aspire.md) |1213> 💡 **Tip:** .NET Aspire projects always use AZD recipe with auto-generated configuration. Do not manually select recipe or create artifacts.1415## Quick Decision1617**Default: AZD** unless specific requirements indicate otherwise.1819> 💡 **Tip:** azd supports both Bicep and Terraform as IaC providers. When Terraform is mentioned for Azure deployment, **default to azd+Terraform** for the best developer experience.2021## Decision Criteria2223| Choose | When |24|--------|------|25| **AZD (Bicep)** | New projects, multi-service apps, want simplest deployment (`azd up`) |26| **AZD (Terraform)** | **DEFAULT for Terraform** - Want Terraform IaC + azd simplicity, Azure deployment with Terraform |27| **AZCLI** | Existing az scripts, need imperative control, custom pipelines, AKS |28| **Bicep** | IaC-first approach, no CLI wrapper needed, direct ARM deployment |29| **Terraform** | Multi-cloud deployments (non-Azure-first), complex TF workflows incompatible with azd, explicitly requested |3031## Auto-Detection3233| Found in Workspace | Suggested Recipe |34|--------------------|------------------|35| `azure.yaml` with `infra.provider: terraform` | AZD (Terraform) |36| `azure.yaml` (Bicep or no provider specified) | AZD (Bicep) |37| `*.tf` files (no azure.yaml) | **AZD (Terraform) - DEFAULT** (unless multi-cloud) |38| `infra/*.bicep` (no azure.yaml) | Bicep or AZCLI |39| Existing `az` scripts | AZCLI |40| None | AZD (Bicep) - default |4142## Recipe Comparison4344| Feature | AZD (Bicep) | AZD (Terraform) | AZCLI | Bicep | Terraform |45|---------|-------------|-----------------|-------|-------|-----------|46| Config file | azure.yaml | azure.yaml + *.tf | scripts | *.bicep | *.tf |47| IaC language | Bicep | Terraform | N/A | Bicep | Terraform |48| Deploy command | `azd up` | `azd up` | `az` commands | `az deployment` | `terraform apply` |49| Dockerfile gen | Auto | Auto | Manual | Manual | Manual |50| Environment mgmt | Built-in | Built-in | Manual | Manual | Workspaces |51| CI/CD gen | Built-in | Built-in | Manual | Manual | Manual |52| Multi-cloud | No | Yes | No | No | Yes |53| Learning curve | Low | Low-Medium | Medium | Medium | Medium |5455## Record Selection5657Document in `.azure/deployment-plan.md`:5859```markdown60## Recipe: AZD (Terraform)6162**Rationale:**63- Team has Terraform expertise64- Want multi-cloud IaC flexibility65- But prefer azd's simple deployment workflow66- Multi-service app (API + Web)67```6869Or for pure Terraform:7071```markdown72## Recipe: Terraform7374**Rationale:**75- Multi-cloud deployment (AWS + Azure)76- Complex Terraform modules incompatible with azd conventions77- Existing Terraform CI/CD pipeline78```7980## Recipe References8182- [AZD Recipe](recipes/azd/README.md)83- [AZCLI Recipe](recipes/azcli/README.md)84- [Bicep Recipe](recipes/bicep/README.md)85- [Terraform Recipe](recipes/terraform/README.md)86