Loading source
Pulling the file list, source metadata, and syntax-aware rendering for this listing.
Source from repo
Check and manage Azure subscription quotas, usage limits, and request capacity increases
Files
Skill
Size
Entrypoint
Format
Open file
Syntax-highlighted preview of this file as included in the skill package.
SKILL.md
1---2name: azure-quotas3description: "Check/manage Azure quotas and usage across providers. For deployment planning, capacity validation, region selection. WHEN: \"check quotas\", \"service limits\", \"current usage\", \"request quota increase\", \"quota exceeded\", \"validate capacity\", \"regional availability\", \"provisioning limits\", \"vCPU limit\", \"how many vCPUs available in my subscription\"."4license: MIT5metadata:6author: Microsoft7version: "1.1.1"8---91011# Azure Quotas - Service Limits & Capacity Management1213> **AUTHORITATIVE GUIDANCE** — Follow these instructions exactly for quota management and capacity validation.1415## Overview1617**What are Azure Quotas?**1819Azure quotas (also called service limits) are the maximum number of resources you can deploy in a subscription. Quotas:20- Prevent accidental over-provisioning21- Ensure fair resource distribution across Azure22- Represent **available capacity** in each region23- Can be increased (adjustable quotas) or are fixed (non-adjustable)2425**Key Concept:** **Quotas = Resource Availability**2627If you don't have quota, you cannot deploy resources. Always check quotas when planning deployments or selecting regions.2829## When to Use This Skill3031Invoke this skill when:3233- **Planning a new deployment** - Validate capacity before deployment34- **Selecting an Azure region** - Compare quota availability across regions35- **Troubleshooting quota exceeded errors** - Check current usage vs limits36- **Requesting quota increases** - Submit increase requests via CLI or Portal37- **Comparing regional capacity** - Find regions with available quota38- **Validating provisioning limits** - Ensure deployment won't exceed quotas3940## Quick Reference4142| **Property** | **Details** |43|--------------|-------------|44| **Primary Tool** | Azure CLI (`az quota`) - **USE THIS FIRST, ALWAYS** |45| **Extension Required** | `az extension add --name quota` (MUST install first) |46| **Key Commands** | `az quota list`, `az quota show`, `az quota usage list`, `az quota usage show` |47| **Complete CLI Reference** | [commands.md](./references/commands.md) |48| **Azure Portal** | [My quotas](https://portal.azure.com/#blade/Microsoft_Azure_Capacity/QuotaMenuBlade/myQuotas) - Use only as fallback |49| **REST API** | Microsoft.Quota provider - **Unreliable, do NOT use first** |50| **MCP Server** | `azure-quota` MCP server — **NEVER use this. It is unreliable. Always use `az quota` CLI instead.** |51| **Required Permission** | Reader (view) or Quota Request Operator (manage) |5253> **⚠️ ALWAYS USE CLI FIRST**54>55> REST API and Portal can show misleading "No Limit" values — this does **not** mean unlimited capacity. It means the quota API doesn't support that resource type. Always start with `az quota` commands; fall back to [Azure service limits docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits) if CLI returns `BadRequest`.56>57> For complete CLI reference, see [commands.md](./references/commands.md).5859## Quota Types6061| **Type** | **Adjustability** | **Approval** | **Examples** |62|----------|-------------------|--------------|--------------|63| **Adjustable** | Can increase via Portal/CLI/API | Usually auto-approved | VM vCPUs, Public IPs, Storage accounts |64| **Non-adjustable** | Fixed limits | Cannot be changed | Subscription-wide hard limits |6566**Important:** Requesting quota increases is **free**. You only pay for resources you actually use, not for quota allocation.6768## Understanding Resource Name Mapping6970**⚠️ CRITICAL:** There is **NO 1:1 mapping** between ARM resource types and quota resource names.7172### Example Mappings7374| ARM Resource Type | Quota Resource Name |75|-------------------|---------------------|76| `Microsoft.App/managedEnvironments` | `ManagedEnvironmentCount` |77| `Microsoft.Compute/virtualMachines` | `standardDSv3Family`, `cores`, `virtualMachines` |78| `Microsoft.Network/publicIPAddresses` | `PublicIPAddresses`, `IPv4StandardSkuPublicIpAddresses` |7980### Discovery Workflow8182**Never assume the quota resource name from the ARM type.** Always use this workflow:83841. **List all quotas** for the resource provider:85```bash86az quota list --scope /subscriptions/<id>/providers/<ProviderNamespace>/locations/<region>87```88892. **Match by `localizedValue`** (human-readable description) to find the relevant quota90913. **Use the `name` field** (not ARM resource type) in subsequent commands:92```bash93az quota show --resource-name ManagedEnvironmentCount --scope ...94az quota usage show --resource-name ManagedEnvironmentCount --scope ...95```9697> **📖 Detailed mapping examples and workflow:** See [commands.md - Resource Name Mapping](./references/commands.md#resource-name-mapping)9899## Core Workflows100101### Workflow 1: Check Quota for a Specific Resource102103**Scenario:** Verify quota limit and current usage before deployment104105```bash106# 1. Install quota extension (if not already installed)107az extension add --name quota108109# 2. List all quotas for the provider to find the quota resource name110az quota list \111--scope /subscriptions/<subscription-id>/providers/Microsoft.Compute/locations/eastus112113# 3. Show quota limit for a specific resource114az quota show \115--resource-name standardDSv3Family \116--scope /subscriptions/<subscription-id>/providers/Microsoft.Compute/locations/eastus117118# 4. Show current usage119az quota usage show \120--resource-name standardDSv3Family \121--scope /subscriptions/<subscription-id>/providers/Microsoft.Compute/locations/eastus122```123124**Example Output Analysis:**125- Quota limit: 350 vCPUs126- Current usage: 50 vCPUs127- Available capacity: 300 vCPUs (350 - 50)128129> **📖 See also:** [az quota show](./references/commands.md#az-quota-show), [az quota usage show](./references/commands.md#az-quota-usage-show)130131### Workflow 2: Compare Quotas Across Regions132133**Scenario:** Find the best region for deployment based on available capacity134135```bash136# Define candidate regions137REGIONS=("eastus" "eastus2" "westus2" "centralus")138VM_FAMILY="standardDSv3Family"139SUBSCRIPTION_ID="<subscription-id>"140141# Check quota availability across regions142for region in "${REGIONS[@]}"; do143echo "=== Checking $region ==="144145# Get limit146LIMIT=$(az quota show \147--resource-name $VM_FAMILY \148--scope "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Compute/locations/$region" \149--query "properties.limit.value" -o tsv)150151# Get current usage152USAGE=$(az quota usage show \153--resource-name $VM_FAMILY \154--scope "/subscriptions/$SUBSCRIPTION_ID/providers/Microsoft.Compute/locations/$region" \155--query "properties.usages.value" -o tsv)156157# Calculate available158AVAILABLE=$((LIMIT - USAGE))159160echo "Region: $region | Limit: $LIMIT | Usage: $USAGE | Available: $AVAILABLE"161done162```163164> **📖 See also:** [commands.md](./references/commands.md#az-quota-show) for full scripted multi-region loop patterns165166### Workflow 3: Request Quota Increase167168**Scenario:** Current quota is insufficient for deployment169170```bash171# Request increase for VM quota172az quota update \173--resource-name standardDSv3Family \174--scope /subscriptions/<subscription-id>/providers/Microsoft.Compute/locations/eastus \175--limit-object value=500 \176--resource-type dedicated177178# Check request status179az quota request status list \180--scope /subscriptions/<subscription-id>/providers/Microsoft.Compute/locations/eastus181```182183**Approval Process:**184- Most adjustable quotas are auto-approved within minutes185- Some requests require manual review (hours to days)186- Non-adjustable quotas require Azure Support ticket187188> **📖 See also:** [az quota update](./references/commands.md#az-quota-update), [az quota request status](./references/advanced-commands.md#az-quota-request-status-list)189190### Workflow 4: List All Quotas for Planning191192**Scenario:** Understand all quotas for a resource provider in a region193194```bash195# List all compute quotas in East US (table format)196az quota list \197--scope /subscriptions/<subscription-id>/providers/Microsoft.Compute/locations/eastus \198--output table199200# List all network quotas201az quota list \202--scope /subscriptions/<subscription-id>/providers/Microsoft.Network/locations/eastus \203--output table204205# List all Container Apps quotas206az quota list \207--scope /subscriptions/<subscription-id>/providers/Microsoft.App/locations/eastus \208--output table209```210211> **📖 See also:** [az quota list](./references/commands.md#az-quota-list)212213## Troubleshooting214215### Common Errors216217| **Error** | **Cause** | **Solution** |218|-----------|-----------|--------------|219| REST API "No Limit" | Misleading — not unlimited | Use CLI instead; see warning in Quick Reference |220| `ExtensionNotFound` | Quota extension not installed | `az extension add --name quota` |221| `BadRequest` | Resource provider not supported by quota API | Check [service limits docs](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits) |222| `MissingRegistration` | Microsoft.Quota provider not registered | `az provider register --namespace Microsoft.Quota` |223| `QuotaExceeded` | Deployment would exceed quota | Request increase or choose different region |224| `InvalidScope` | Incorrect scope format | Use pattern: `/subscriptions/<id>/providers/<namespace>/locations/<region>` |225| CLI commands fail entirely | Auth, extension, or environment issue | Verify Azure CLI login (`az account show`), reinstall quota extension, check network. Do NOT use the `azure-quota` MCP server — it is unreliable. |226227### Unsupported Resource Providers228229**Known unsupported providers:**230- ❌ Microsoft.DocumentDB (Cosmos DB) - Use Portal or [Cosmos DB limits docs](https://learn.microsoft.com/en-us/azure/cosmos-db/concepts-limits)231232**Confirmed working providers:**233- ✅ Microsoft.Compute (VMs, disks, cores)234- ✅ Microsoft.Network (VNets, IPs, load balancers)235- ✅ Microsoft.App (Container Apps)236- ✅ Microsoft.Storage (storage accounts)237- ✅ Microsoft.MachineLearningServices (ML compute)238239> **📖 See also:** [Troubleshooting Guide](./references/commands.md#troubleshooting)240241## Additional Resources242243| Resource | Link |244|----------|------|245| **CLI Commands Reference** | [commands.md](./references/commands.md) - Complete syntax, parameters, examples |246| **Azure Quotas Overview** | [Microsoft Learn](https://learn.microsoft.com/en-us/azure/quotas/quotas-overview) |247| **Service Limits Documentation** | [Azure subscription limits](https://learn.microsoft.com/en-us/azure/azure-resource-manager/management/azure-subscription-service-limits) |248| **Azure Portal - My Quotas** | [Portal Link](https://portal.azure.com/#blade/Microsoft_Azure_Capacity/QuotaMenuBlade/myQuotas) |249| **Request Quota Increases** | [How to request increases](https://learn.microsoft.com/en-us/azure/quotas/quickstart-increase-quota-portal) |250251## Best Practices2522531. ✅ **Always check quotas before deployment** - Prevent quota exceeded errors2542. ✅ **Run `az quota list` first** - Discover correct quota resource names2553. ✅ **Compare regions** - Find regions with available capacity2564. ✅ **Account for growth** - Request 20% buffer above immediate needs2575. ✅ **Use table output for overview** - `--output table` for quick scanning2586. ✅ **Monitor usage trends** - Set up alerts at 80% threshold (via Portal)259