Claude-skill-registry azure-mcp
Comprehensive Azure cloud management skill using Azure CLI. Manage 40+ Azure services including storage, databases, containers, monitoring, security, AI services, messaging, and infrastructure. Triggers on Azure, cloud, blob, cosmos, keyvault, AKS, kubernetes, monitor, SQL, postgres, mysql, event grid, service bus, functions, app service, resource group, subscription.
install
source · Clone the upstream repo
git clone https://github.com/majiayu000/claude-skill-registry
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/majiayu000/claude-skill-registry "$T" && mkdir -p ~/.claude/skills && cp -r "$T/skills/data/azure-mcp" ~/.claude/skills/majiayu000-claude-skill-registry-azure-mcp-c76005 && rm -rf "$T"
manifest:
skills/data/azure-mcp/SKILL.mdsource content
Azure Cloud Management Skill
Comprehensive skill for managing Azure cloud services using Azure CLI (
az). This skill provides natural language interaction with 40+ Azure services - no additional setup beyond Azure CLI required.
Prerequisites
- Azure CLI installed: Install via
orwinget install Microsoft.AzureCLIbrew install azure-cli - Authenticated: Run
before using Azure commandsaz login - Subscription set: Use
to set defaultaz account set --subscription <name-or-id>
Quick Authentication Check
Before running Azure commands, verify authentication:
az account show --query "{name:name, id:id, user:user.name}" -o table
Core Patterns
Output Formats
Always use
-o table for human-readable output, -o json for parsing, -o tsv for scripting:
az <command> -o table # Human readable az <command> -o json # Full details, parseable az <command> -o tsv # Tab-separated for scripts
Common Query Patterns
Use
--query with JMESPath to filter output:
az vm list --query "[].{Name:name, RG:resourceGroup, State:powerState}" -o table
Resource Management
Subscriptions
# List all subscriptions az account list -o table # Show current subscription az account show -o table # Set active subscription az account set --subscription "<name-or-id>" # List available locations/regions az account list-locations -o table --query "[].{Name:name, DisplayName:displayName}"
Resource Groups
# List all resource groups az group list -o table # List resources in a group az resource list --resource-group <rg-name> -o table # Create resource group az group create --name <name> --location <region> # Delete resource group az group delete --name <name> --yes --no-wait # Show resource group details az group show --name <name>
Generic Resource Operations
# List all resources in subscription az resource list -o table # Get resource by ID az resource show --ids <resource-id> # Delete resource by ID az resource delete --ids <resource-id> # List resource providers az provider list -o table # Show resource tags az resource show --ids <resource-id> --query "tags"
Storage
Storage Accounts
# List storage accounts az storage account list -o table # List in resource group az storage account list --resource-group <rg> -o table # Create storage account az storage account create \ --name <account-name> \ --resource-group <rg> \ --location <region> \ --sku Standard_LRS \ --kind StorageV2 # Show storage account az storage account show --name <account> --resource-group <rg> # Get connection string az storage account show-connection-string --name <account> --resource-group <rg> -o tsv # Get storage account keys az storage account keys list --account-name <account> --resource-group <rg> -o table # Delete storage account az storage account delete --name <account> --resource-group <rg> --yes
Blob Containers
# List containers (with account key) az storage container list --account-name <account> --account-key <key> -o table # List containers (with connection string) az storage container list --connection-string "<conn-string>" -o table # Create container az storage container create --name <container> --account-name <account> --account-key <key> # Delete container az storage container delete --name <container> --account-name <account> --account-key <key> # Show container properties az storage container show --name <container> --account-name <account> --account-key <key> # Set container access level az storage container set-permission --name <container> --public-access blob --account-name <account>
Blobs
# List blobs in container az storage blob list --container-name <container> --account-name <account> --account-key <key> -o table # Upload blob az storage blob upload \ --container-name <container> \ --name <blob-name> \ --file <local-path> \ --account-name <account> \ --account-key <key> # Upload directory az storage blob upload-batch \ --destination <container> \ --source <local-dir> \ --account-name <account> \ --account-key <key> # Download blob az storage blob download \ --container-name <container> \ --name <blob-name> \ --file <local-path> \ --account-name <account> \ --account-key <key> # Delete blob az storage blob delete --container-name <container> --name <blob-name> --account-name <account> # Get blob URL az storage blob url --container-name <container> --name <blob-name> --account-name <account> # Generate SAS token for blob az storage blob generate-sas \ --container-name <container> \ --name <blob-name> \ --account-name <account> \ --permissions r \ --expiry <datetime> \ --https-only
File Shares
# List file shares az storage share list --account-name <account> --account-key <key> -o table # Create file share az storage share create --name <share-name> --account-name <account> --account-key <key> # List files in share az storage file list --share-name <share> --account-name <account> -o table # Upload file az storage file upload --share-name <share> --source <local-file> --account-name <account> # Download file az storage file download --share-name <share> --path <remote-path> --dest <local-path> --account-name <account>
Tables & Queues
# List tables az storage table list --account-name <account> --account-key <key> -o table # Create table az storage table create --name <table-name> --account-name <account> # List queues az storage queue list --account-name <account> --account-key <key> -o table # Create queue az storage queue create --name <queue-name> --account-name <account>
Databases
Azure SQL
# List SQL servers az sql server list -o table # List SQL servers in resource group az sql server list --resource-group <rg> -o table # Create SQL server az sql server create \ --name <server-name> \ --resource-group <rg> \ --location <region> \ --admin-user <username> \ --admin-password <password> # Show server details az sql server show --name <server> --resource-group <rg> # Delete SQL server az sql server delete --name <server> --resource-group <rg> --yes # List databases on server az sql db list --server <server> --resource-group <rg> -o table # Create database az sql db create \ --server <server> \ --resource-group <rg> \ --name <db-name> \ --service-objective S0 # Show database details az sql db show --server <server> --resource-group <rg> --name <db-name> # Delete database az sql db delete --server <server> --resource-group <rg> --name <db-name> --yes # List elastic pools az sql elastic-pool list --server <server> --resource-group <rg> -o table # Configure firewall rule az sql server firewall-rule create \ --server <server> \ --resource-group <rg> \ --name <rule-name> \ --start-ip-address <start-ip> \ --end-ip-address <end-ip> # Allow Azure services az sql server firewall-rule create \ --server <server> \ --resource-group <rg> \ --name AllowAzureServices \ --start-ip-address 0.0.0.0 \ --end-ip-address 0.0.0.0 # List firewall rules az sql server firewall-rule list --server <server> --resource-group <rg> -o table # Delete firewall rule az sql server firewall-rule delete --server <server> --resource-group <rg> --name <rule-name> # Get connection string az sql db show-connection-string --server <server> --name <db-name> --client ado.net
Azure Cosmos DB
# List Cosmos DB accounts az cosmosdb list -o table # List in resource group az cosmosdb list --resource-group <rg> -o table # Create Cosmos DB account (SQL API) az cosmosdb create \ --name <account-name> \ --resource-group <rg> \ --kind GlobalDocumentDB \ --locations regionName=<region> failoverPriority=0 # Show account details az cosmosdb show --name <account> --resource-group <rg> # Get connection strings az cosmosdb keys list --name <account> --resource-group <rg> --type connection-strings # Get keys az cosmosdb keys list --name <account> --resource-group <rg> # List SQL databases az cosmosdb sql database list --account-name <account> --resource-group <rg> -o table # Create SQL database az cosmosdb sql database create \ --account-name <account> \ --resource-group <rg> \ --name <db-name> # Delete SQL database az cosmosdb sql database delete --account-name <account> --resource-group <rg> --name <db-name> --yes # List containers in database az cosmosdb sql container list \ --account-name <account> \ --resource-group <rg> \ --database-name <db-name> \ -o table # Create container az cosmosdb sql container create \ --account-name <account> \ --resource-group <rg> \ --database-name <db-name> \ --name <container-name> \ --partition-key-path "/partitionKey" # Show container details az cosmosdb sql container show \ --account-name <account> \ --resource-group <rg> \ --database-name <db-name> \ --name <container-name> # Delete container az cosmosdb sql container delete \ --account-name <account> \ --resource-group <rg> \ --database-name <db-name> \ --name <container-name> \ --yes
Azure Database for PostgreSQL
# List PostgreSQL servers (flexible) az postgres flexible-server list -o table # List in resource group az postgres flexible-server list --resource-group <rg> -o table # Create PostgreSQL server az postgres flexible-server create \ --name <server-name> \ --resource-group <rg> \ --location <region> \ --admin-user <username> \ --admin-password <password> \ --sku-name Standard_B1ms \ --tier Burstable \ --storage-size 32 # Show server details az postgres flexible-server show --name <server> --resource-group <rg> # Delete server az postgres flexible-server delete --name <server> --resource-group <rg> --yes # List databases az postgres flexible-server db list --server-name <server> --resource-group <rg> -o table # Create database az postgres flexible-server db create \ --server-name <server> \ --resource-group <rg> \ --database-name <db-name> # Delete database az postgres flexible-server db delete \ --server-name <server> \ --resource-group <rg> \ --database-name <db-name> \ --yes # Configure firewall rule az postgres flexible-server firewall-rule create \ --server-name <server> \ --resource-group <rg> \ --name <rule-name> \ --start-ip-address <ip> \ --end-ip-address <ip> # List firewall rules az postgres flexible-server firewall-rule list --server-name <server> --resource-group <rg> -o table # Show server configuration az postgres flexible-server parameter list --server-name <server> --resource-group <rg> -o table # Update configuration parameter az postgres flexible-server parameter set \ --server-name <server> \ --resource-group <rg> \ --name <param-name> \ --value <value> # Connect and run query (requires psql) # az postgres flexible-server connect -n <server> -u <user> -p <password> -d <database>
Azure Database for MySQL
# List MySQL servers (flexible) az mysql flexible-server list -o table # List in resource group az mysql flexible-server list --resource-group <rg> -o table # Create MySQL server az mysql flexible-server create \ --name <server-name> \ --resource-group <rg> \ --location <region> \ --admin-user <username> \ --admin-password <password> \ --sku-name Standard_B1ms \ --tier Burstable \ --storage-size 32 # Show server details az mysql flexible-server show --name <server> --resource-group <rg> # Delete server az mysql flexible-server delete --name <server> --resource-group <rg> --yes # List databases az mysql flexible-server db list --server-name <server> --resource-group <rg> -o table # Create database az mysql flexible-server db create \ --server-name <server> \ --resource-group <rg> \ --database-name <db-name> # Configure firewall az mysql flexible-server firewall-rule create \ --server-name <server> \ --resource-group <rg> \ --name <rule-name> \ --start-ip-address <ip> \ --end-ip-address <ip> # List firewall rules az mysql flexible-server firewall-rule list --server-name <server> --resource-group <rg> -o table # Show configuration az mysql flexible-server parameter list --server-name <server> --resource-group <rg> -o table
Azure Cache for Redis
# List Redis caches az redis list -o table # List in resource group az redis list --resource-group <rg> -o table # Create Redis cache az redis create \ --name <cache-name> \ --resource-group <rg> \ --location <region> \ --sku Basic \ --vm-size c0 # Show cache details az redis show --name <cache> --resource-group <rg> # Get access keys az redis list-keys --name <cache> --resource-group <rg> # Delete cache az redis delete --name <cache> --resource-group <rg> --yes # Regenerate key az redis regenerate-keys --name <cache> --resource-group <rg> --key-type Primary
Containers & Compute
Azure Kubernetes Service (AKS)
# List AKS clusters az aks list -o table # List in resource group az aks list --resource-group <rg> -o table # Create AKS cluster az aks create \ --name <cluster-name> \ --resource-group <rg> \ --node-count 3 \ --node-vm-size Standard_DS2_v2 \ --generate-ssh-keys # Show cluster details az aks show --name <cluster> --resource-group <rg> # Get credentials (configure kubectl) az aks get-credentials --name <cluster> --resource-group <rg> # Delete cluster az aks delete --name <cluster> --resource-group <rg> --yes --no-wait # Scale cluster az aks scale --name <cluster> --resource-group <rg> --node-count 5 # Upgrade cluster az aks upgrade --name <cluster> --resource-group <rg> --kubernetes-version <version> # List available Kubernetes versions az aks get-versions --location <region> -o table # Show nodepool details az aks nodepool list --cluster-name <cluster> --resource-group <rg> -o table # Add nodepool az aks nodepool add \ --cluster-name <cluster> \ --resource-group <rg> \ --name <pool-name> \ --node-count 3 \ --node-vm-size Standard_DS2_v2 # Scale nodepool az aks nodepool scale \ --cluster-name <cluster> \ --resource-group <rg> \ --name <pool-name> \ --node-count 5 # Delete nodepool az aks nodepool delete --cluster-name <cluster> --resource-group <rg> --name <pool-name> # Browse dashboard az aks browse --name <cluster> --resource-group <rg>
Azure Container Registry (ACR)
# List container registries az acr list -o table # List in resource group az acr list --resource-group <rg> -o table # Create container registry az acr create \ --name <registry-name> \ --resource-group <rg> \ --sku Basic \ --admin-enabled true # Show registry details az acr show --name <registry> --resource-group <rg> # Get login credentials az acr credential show --name <registry> # Login to registry az acr login --name <registry> # List repositories az acr repository list --name <registry> -o table # List tags in repository az acr repository show-tags --name <registry> --repository <repo-name> -o table # Delete repository az acr repository delete --name <registry> --repository <repo-name> --yes # Delete specific image tag az acr repository delete --name <registry> --image <repo>:<tag> --yes # Import image from Docker Hub az acr import --name <registry> --source docker.io/library/nginx:latest --image nginx:latest # Build image in ACR az acr build --registry <registry> --image <image-name>:<tag> . # Show repository manifests az acr repository show-manifests --name <registry> --repository <repo-name>
Azure Container Instances (ACI)
# List container instances az container list -o table # List in resource group az container list --resource-group <rg> -o table # Create container instance az container create \ --name <container-name> \ --resource-group <rg> \ --image <image> \ --cpu 1 \ --memory 1.5 \ --ports 80 # Show container details az container show --name <container> --resource-group <rg> # Get container logs az container logs --name <container> --resource-group <rg> # Stream logs az container logs --name <container> --resource-group <rg> --follow # Execute command in container az container exec --name <container> --resource-group <rg> --exec-command "/bin/bash" # Delete container az container delete --name <container> --resource-group <rg> --yes # Restart container az container restart --name <container> --resource-group <rg> # Stop container az container stop --name <container> --resource-group <rg> # Start container az container start --name <container> --resource-group <rg>
Azure Container Apps
# List Container Apps environments az containerapp env list -o table # Create Container Apps environment az containerapp env create \ --name <env-name> \ --resource-group <rg> \ --location <region> # List Container Apps az containerapp list -o table # Create Container App az containerapp create \ --name <app-name> \ --resource-group <rg> \ --environment <env-name> \ --image <image> \ --target-port 80 \ --ingress external # Show Container App az containerapp show --name <app> --resource-group <rg> # Update Container App az containerapp update \ --name <app> \ --resource-group <rg> \ --image <new-image> # Delete Container App az containerapp delete --name <app> --resource-group <rg> --yes # Get logs az containerapp logs show --name <app> --resource-group <rg> # Scale Container App az containerapp update --name <app> --resource-group <rg> --min-replicas 1 --max-replicas 10
Web & Functions
Azure App Service
# List App Service plans az appservice plan list -o table # Create App Service plan az appservice plan create \ --name <plan-name> \ --resource-group <rg> \ --sku B1 \ --is-linux # List web apps az webapp list -o table # List web apps in resource group az webapp list --resource-group <rg> -o table # Create web app az webapp create \ --name <app-name> \ --resource-group <rg> \ --plan <plan-name> \ --runtime "PYTHON:3.9" # Show web app details az webapp show --name <app> --resource-group <rg> # Delete web app az webapp delete --name <app> --resource-group <rg> # Get web app URL az webapp show --name <app> --resource-group <rg> --query "defaultHostName" -o tsv # Browse web app az webapp browse --name <app> --resource-group <rg> # Restart web app az webapp restart --name <app> --resource-group <rg> # Stop web app az webapp stop --name <app> --resource-group <rg> # Start web app az webapp start --name <app> --resource-group <rg> # Deploy from zip az webapp deployment source config-zip \ --name <app> \ --resource-group <rg> \ --src <file.zip> # Configure app settings az webapp config appsettings set \ --name <app> \ --resource-group <rg> \ --settings KEY1=VALUE1 KEY2=VALUE2 # List app settings az webapp config appsettings list --name <app> --resource-group <rg> -o table # Delete app setting az webapp config appsettings delete --name <app> --resource-group <rg> --setting-names KEY1 # Configure connection strings az webapp config connection-string set \ --name <app> \ --resource-group <rg> \ --connection-string-type SQLAzure \ --settings MyDb="<connection-string>" # Get logs az webapp log tail --name <app> --resource-group <rg> # Download logs az webapp log download --name <app> --resource-group <rg> # List deployment slots az webapp deployment slot list --name <app> --resource-group <rg> -o table # Create deployment slot az webapp deployment slot create --name <app> --resource-group <rg> --slot staging # Swap slots az webapp deployment slot swap --name <app> --resource-group <rg> --slot staging # Enable continuous deployment az webapp deployment container config \ --name <app> \ --resource-group <rg> \ --enable-cd true
Azure Functions
# List function apps az functionapp list -o table # List in resource group az functionapp list --resource-group <rg> -o table # Create function app (consumption plan) az functionapp create \ --name <app-name> \ --resource-group <rg> \ --storage-account <storage-account> \ --consumption-plan-location <region> \ --runtime python \ --runtime-version 3.9 \ --functions-version 4 # Create function app (dedicated plan) az functionapp create \ --name <app-name> \ --resource-group <rg> \ --storage-account <storage-account> \ --plan <app-service-plan> \ --runtime node \ --runtime-version 18 # Show function app details az functionapp show --name <app> --resource-group <rg> # Delete function app az functionapp delete --name <app> --resource-group <rg> # Restart function app az functionapp restart --name <app> --resource-group <rg> # Stop function app az functionapp stop --name <app> --resource-group <rg> # Start function app az functionapp start --name <app> --resource-group <rg> # List functions in app az functionapp function list --name <app> --resource-group <rg> -o table # Show function details az functionapp function show --name <app> --resource-group <rg> --function-name <func> # Get function app settings az functionapp config appsettings list --name <app> --resource-group <rg> -o table # Set function app settings az functionapp config appsettings set \ --name <app> \ --resource-group <rg> \ --settings KEY1=VALUE1 # Deploy function app az functionapp deployment source config-zip \ --name <app> \ --resource-group <rg> \ --src <function.zip> # Get deployment credentials az functionapp deployment list-publishing-credentials --name <app> --resource-group <rg>
Security
Azure Key Vault
# List key vaults az keyvault list -o table # List in resource group az keyvault list --resource-group <rg> -o table # Create key vault az keyvault create \ --name <vault-name> \ --resource-group <rg> \ --location <region> # Show key vault details az keyvault show --name <vault> # Delete key vault az keyvault delete --name <vault> --resource-group <rg> # Purge deleted vault (if soft-delete enabled) az keyvault purge --name <vault> # List deleted vaults az keyvault list-deleted -o table ### Secrets ### # List secrets az keyvault secret list --vault-name <vault> -o table # Set secret az keyvault secret set --vault-name <vault> --name <secret-name> --value "<value>" # Get secret value az keyvault secret show --vault-name <vault> --name <secret-name> --query "value" -o tsv # Delete secret az keyvault secret delete --vault-name <vault> --name <secret-name> # List secret versions az keyvault secret list-versions --vault-name <vault> --name <secret-name> -o table # Recover deleted secret az keyvault secret recover --vault-name <vault> --name <secret-name> ### Keys ### # List keys az keyvault key list --vault-name <vault> -o table # Create key az keyvault key create --vault-name <vault> --name <key-name> --kty RSA --size 2048 # Show key az keyvault key show --vault-name <vault> --name <key-name> # Delete key az keyvault key delete --vault-name <vault> --name <key-name> # Backup key az keyvault key backup --vault-name <vault> --name <key-name> --file <backup-file> ### Certificates ### # List certificates az keyvault certificate list --vault-name <vault> -o table # Create self-signed certificate az keyvault certificate create \ --vault-name <vault> \ --name <cert-name> \ --policy "$(az keyvault certificate get-default-policy)" # Import certificate az keyvault certificate import \ --vault-name <vault> \ --name <cert-name> \ --file <cert-file.pfx> \ --password <pfx-password> # Download certificate az keyvault certificate download \ --vault-name <vault> \ --name <cert-name> \ --file <output-file> # Delete certificate az keyvault certificate delete --vault-name <vault> --name <cert-name> ### Access Policies ### # Set access policy for user/service principal az keyvault set-policy \ --name <vault> \ --object-id <object-id> \ --secret-permissions get list set delete \ --key-permissions get list create delete \ --certificate-permissions get list create delete # Remove access policy az keyvault delete-policy --name <vault> --object-id <object-id>
Role-Based Access Control (RBAC)
# List role assignments for resource group az role assignment list --resource-group <rg> -o table # List role assignments for subscription az role assignment list --all -o table # List role assignments for user az role assignment list --assignee <user-email> -o table # List available role definitions az role definition list -o table --query "[].{Name:roleName, Description:description}" # Create role assignment az role assignment create \ --assignee <user-email-or-object-id> \ --role "Contributor" \ --scope /subscriptions/<sub-id>/resourceGroups/<rg> # Delete role assignment az role assignment delete \ --assignee <user-email-or-object-id> \ --role "Contributor" \ --scope /subscriptions/<sub-id>/resourceGroups/<rg> # Show role definition az role definition list --name "Contributor"
Microsoft Entra ID (Azure AD)
# Get current user info az ad signed-in-user show # List users az ad user list -o table --query "[].{Name:displayName, UPN:userPrincipalName, Id:id}" # Show user details az ad user show --id <user-id-or-upn> # List groups az ad group list -o table --query "[].{Name:displayName, Id:id}" # List group members az ad group member list --group <group-name-or-id> -o table # List service principals az ad sp list --all -o table --query "[].{Name:displayName, AppId:appId, Id:id}" # Create service principal az ad sp create-for-rbac --name <sp-name> --role Contributor --scopes /subscriptions/<sub-id> # Show service principal az ad sp show --id <app-id> # Delete service principal az ad sp delete --id <app-id> # Reset service principal credentials az ad sp credential reset --id <app-id> # List app registrations az ad app list -o table --query "[].{Name:displayName, AppId:appId}"
Monitoring & Diagnostics
Azure Monitor
# List Log Analytics workspaces az monitor log-analytics workspace list -o table # Create Log Analytics workspace az monitor log-analytics workspace create \ --workspace-name <name> \ --resource-group <rg> \ --location <region> # Show workspace details az monitor log-analytics workspace show --workspace-name <name> --resource-group <rg> # Get workspace ID az monitor log-analytics workspace show --workspace-name <name> --resource-group <rg> --query "customerId" -o tsv # Get workspace key az monitor log-analytics workspace get-shared-keys --workspace-name <name> --resource-group <rg> # Delete workspace az monitor log-analytics workspace delete --workspace-name <name> --resource-group <rg> --yes # Query logs (requires workspace ID) az monitor log-analytics query \ --workspace <workspace-id> \ --analytics-query "AzureActivity | take 10" \ -o table # List tables in workspace az monitor log-analytics workspace table list \ --workspace-name <name> \ --resource-group <rg> \ -o table
Metrics
# List metric definitions for a resource az monitor metrics list-definitions \ --resource <resource-id> \ -o table # Query metrics az monitor metrics list \ --resource <resource-id> \ --metric "Percentage CPU" \ --interval PT1H \ --start-time <start-datetime> \ --end-time <end-datetime> # Query multiple metrics az monitor metrics list \ --resource <resource-id> \ --metric "Percentage CPU" "Network In" "Network Out" \ --interval PT5M
Activity Logs
# List activity logs az monitor activity-log list -o table # List activity logs for resource group az monitor activity-log list --resource-group <rg> -o table # List activity logs for time range az monitor activity-log list \ --start-time <datetime> \ --end-time <datetime> \ -o table # List activity logs for specific resource az monitor activity-log list \ --resource-id <resource-id> \ -o table
Alerts
# List metric alerts az monitor metrics alert list -o table # Create metric alert az monitor metrics alert create \ --name <alert-name> \ --resource-group <rg> \ --scopes <resource-id> \ --condition "avg Percentage CPU > 80" \ --description "CPU usage alert" # Delete metric alert az monitor metrics alert delete --name <alert-name> --resource-group <rg> # List action groups az monitor action-group list -o table # Create action group az monitor action-group create \ --name <group-name> \ --resource-group <rg> \ --short-name <short-name> \ --action email <email-name> <email@example.com>
Application Insights
# List Application Insights components az monitor app-insights component list -o table # Create Application Insights az monitor app-insights component create \ --app <name> \ --resource-group <rg> \ --location <region> # Show Application Insights details az monitor app-insights component show --app <name> --resource-group <rg> # Get instrumentation key az monitor app-insights component show --app <name> --resource-group <rg> --query "instrumentationKey" -o tsv # Get connection string az monitor app-insights component show --app <name> --resource-group <rg> --query "connectionString" -o tsv # Query Application Insights az monitor app-insights query \ --app <name> \ --resource-group <rg> \ --analytics-query "requests | take 10" # Delete Application Insights az monitor app-insights component delete --app <name> --resource-group <rg>
Resource Health
# Get resource health az resource show \ --ids <resource-id> \ --query "properties.provisioningState" # List resources with health status (via REST API pattern) az rest --method get \ --url "https://management.azure.com/subscriptions/{sub-id}/providers/Microsoft.ResourceHealth/availabilityStatuses?api-version=2020-05-01"
Messaging & Integration
Azure Event Grid
# List Event Grid topics az eventgrid topic list -o table # List in resource group az eventgrid topic list --resource-group <rg> -o table # Create Event Grid topic az eventgrid topic create \ --name <topic-name> \ --resource-group <rg> \ --location <region> # Show topic details az eventgrid topic show --name <topic> --resource-group <rg> # Get topic endpoint az eventgrid topic show --name <topic> --resource-group <rg> --query "endpoint" -o tsv # Get topic key az eventgrid topic key list --name <topic> --resource-group <rg> # Delete topic az eventgrid topic delete --name <topic> --resource-group <rg> # List event subscriptions for topic az eventgrid event-subscription list --source-resource-id <topic-resource-id> -o table # Create event subscription az eventgrid event-subscription create \ --name <subscription-name> \ --source-resource-id <topic-resource-id> \ --endpoint <webhook-url> # Delete event subscription az eventgrid event-subscription delete \ --name <subscription-name> \ --source-resource-id <topic-resource-id> # List system topics az eventgrid system-topic list -o table # Create system topic for storage az eventgrid system-topic create \ --name <topic-name> \ --resource-group <rg> \ --source <storage-account-resource-id> \ --topic-type Microsoft.Storage.StorageAccounts \ --location <region>
Azure Event Hubs
# List Event Hubs namespaces az eventhubs namespace list -o table # Create Event Hubs namespace az eventhubs namespace create \ --name <namespace-name> \ --resource-group <rg> \ --location <region> \ --sku Standard # Show namespace details az eventhubs namespace show --name <namespace> --resource-group <rg> # Get connection string az eventhubs namespace authorization-rule keys list \ --namespace-name <namespace> \ --resource-group <rg> \ --name RootManageSharedAccessKey # Delete namespace az eventhubs namespace delete --name <namespace> --resource-group <rg> # List event hubs in namespace az eventhubs eventhub list --namespace-name <namespace> --resource-group <rg> -o table # Create event hub az eventhubs eventhub create \ --name <hub-name> \ --namespace-name <namespace> \ --resource-group <rg> \ --partition-count 4 # Show event hub details az eventhubs eventhub show --name <hub> --namespace-name <namespace> --resource-group <rg> # Delete event hub az eventhubs eventhub delete --name <hub> --namespace-name <namespace> --resource-group <rg> # List consumer groups az eventhubs eventhub consumer-group list \ --eventhub-name <hub> \ --namespace-name <namespace> \ --resource-group <rg> \ -o table # Create consumer group az eventhubs eventhub consumer-group create \ --name <group-name> \ --eventhub-name <hub> \ --namespace-name <namespace> \ --resource-group <rg>
Azure Service Bus
# List Service Bus namespaces az servicebus namespace list -o table # Create Service Bus namespace az servicebus namespace create \ --name <namespace-name> \ --resource-group <rg> \ --location <region> \ --sku Standard # Show namespace details az servicebus namespace show --name <namespace> --resource-group <rg> # Get connection string az servicebus namespace authorization-rule keys list \ --namespace-name <namespace> \ --resource-group <rg> \ --name RootManageSharedAccessKey # Delete namespace az servicebus namespace delete --name <namespace> --resource-group <rg> ### Queues ### # List queues az servicebus queue list --namespace-name <namespace> --resource-group <rg> -o table # Create queue az servicebus queue create \ --name <queue-name> \ --namespace-name <namespace> \ --resource-group <rg> # Show queue details az servicebus queue show --name <queue> --namespace-name <namespace> --resource-group <rg> # Delete queue az servicebus queue delete --name <queue> --namespace-name <namespace> --resource-group <rg> ### Topics ### # List topics az servicebus topic list --namespace-name <namespace> --resource-group <rg> -o table # Create topic az servicebus topic create \ --name <topic-name> \ --namespace-name <namespace> \ --resource-group <rg> # Show topic details az servicebus topic show --name <topic> --namespace-name <namespace> --resource-group <rg> # Delete topic az servicebus topic delete --name <topic> --namespace-name <namespace> --resource-group <rg> # List subscriptions for topic az servicebus topic subscription list \ --topic-name <topic> \ --namespace-name <namespace> \ --resource-group <rg> \ -o table # Create subscription az servicebus topic subscription create \ --name <subscription-name> \ --topic-name <topic> \ --namespace-name <namespace> \ --resource-group <rg> # Delete subscription az servicebus topic subscription delete \ --name <subscription-name> \ --topic-name <topic> \ --namespace-name <namespace> \ --resource-group <rg>
AI & Cognitive Services
Azure Cognitive Services
# List Cognitive Services accounts az cognitiveservices account list -o table # Create Cognitive Services account az cognitiveservices account create \ --name <account-name> \ --resource-group <rg> \ --kind CognitiveServices \ --sku S0 \ --location <region> # Show account details az cognitiveservices account show --name <account> --resource-group <rg> # Get keys az cognitiveservices account keys list --name <account> --resource-group <rg> # Get endpoint az cognitiveservices account show --name <account> --resource-group <rg> --query "properties.endpoint" -o tsv # Delete account az cognitiveservices account delete --name <account> --resource-group <rg> # List available kinds az cognitiveservices account list-kinds -o table # List SKUs for a kind az cognitiveservices account list-skus --kind OpenAI --location <region> -o table
Azure OpenAI
# Create Azure OpenAI resource az cognitiveservices account create \ --name <account-name> \ --resource-group <rg> \ --kind OpenAI \ --sku S0 \ --location <region> # List deployments az cognitiveservices account deployment list \ --name <account> \ --resource-group <rg> \ -o table # Create deployment az cognitiveservices account deployment create \ --name <account> \ --resource-group <rg> \ --deployment-name <deployment-name> \ --model-name gpt-4 \ --model-version "0613" \ --model-format OpenAI \ --sku-capacity 10 \ --sku-name Standard # Show deployment az cognitiveservices account deployment show \ --name <account> \ --resource-group <rg> \ --deployment-name <deployment> # Delete deployment az cognitiveservices account deployment delete \ --name <account> \ --resource-group <rg> \ --deployment-name <deployment> # List available models az cognitiveservices account list-models --name <account> --resource-group <rg> -o table
Azure AI Search (Cognitive Search)
# List search services az search service list -o table # Create search service az search service create \ --name <service-name> \ --resource-group <rg> \ --sku basic \ --location <region> # Show search service az search service show --name <service> --resource-group <rg> # Get admin keys az search admin-key show --service-name <service> --resource-group <rg> # Get query keys az search query-key list --service-name <service> --resource-group <rg> -o table # Delete search service az search service delete --name <service> --resource-group <rg> --yes
Networking
Virtual Networks
# List virtual networks az network vnet list -o table # Create virtual network az network vnet create \ --name <vnet-name> \ --resource-group <rg> \ --location <region> \ --address-prefixes 10.0.0.0/16 # Show virtual network az network vnet show --name <vnet> --resource-group <rg> # Delete virtual network az network vnet delete --name <vnet> --resource-group <rg> # List subnets az network vnet subnet list --vnet-name <vnet> --resource-group <rg> -o table # Create subnet az network vnet subnet create \ --name <subnet-name> \ --vnet-name <vnet> \ --resource-group <rg> \ --address-prefixes 10.0.1.0/24 # Delete subnet az network vnet subnet delete --name <subnet> --vnet-name <vnet> --resource-group <rg>
Network Security Groups (NSG)
# List NSGs az network nsg list -o table # Create NSG az network nsg create --name <nsg-name> --resource-group <rg> --location <region> # Show NSG az network nsg show --name <nsg> --resource-group <rg> # List NSG rules az network nsg rule list --nsg-name <nsg> --resource-group <rg> -o table # Create NSG rule az network nsg rule create \ --nsg-name <nsg> \ --resource-group <rg> \ --name Allow-HTTP \ --priority 100 \ --access Allow \ --direction Inbound \ --protocol Tcp \ --destination-port-ranges 80 # Delete NSG rule az network nsg rule delete --nsg-name <nsg> --resource-group <rg> --name <rule-name> # Delete NSG az network nsg delete --name <nsg> --resource-group <rg>
Public IP Addresses
# List public IPs az network public-ip list -o table # Create public IP az network public-ip create \ --name <ip-name> \ --resource-group <rg> \ --sku Standard \ --allocation-method Static # Show public IP az network public-ip show --name <ip> --resource-group <rg> # Get IP address value az network public-ip show --name <ip> --resource-group <rg> --query "ipAddress" -o tsv # Delete public IP az network public-ip delete --name <ip> --resource-group <rg>
Load Balancers
# List load balancers az network lb list -o table # Create load balancer az network lb create \ --name <lb-name> \ --resource-group <rg> \ --sku Standard \ --frontend-ip-name <frontend-name> \ --backend-pool-name <backend-pool-name> \ --public-ip-address <public-ip-name> # Show load balancer az network lb show --name <lb> --resource-group <rg> # Delete load balancer az network lb delete --name <lb> --resource-group <rg> # List backend pools az network lb address-pool list --lb-name <lb> --resource-group <rg> -o table
DNS Zones
# List DNS zones az network dns zone list -o table # Create DNS zone az network dns zone create --name <zone-name> --resource-group <rg> # Show DNS zone az network dns zone show --name <zone> --resource-group <rg> # List DNS records az network dns record-set list --zone-name <zone> --resource-group <rg> -o table # Create A record az network dns record-set a add-record \ --zone-name <zone> \ --resource-group <rg> \ --record-set-name <record-name> \ --ipv4-address <ip-address> # Delete DNS zone az network dns zone delete --name <zone> --resource-group <rg> --yes
Private Endpoints
# List private endpoints az network private-endpoint list -o table # Create private endpoint az network private-endpoint create \ --name <endpoint-name> \ --resource-group <rg> \ --vnet-name <vnet> \ --subnet <subnet> \ --private-connection-resource-id <resource-id> \ --group-id <group-id> \ --connection-name <connection-name> # Show private endpoint az network private-endpoint show --name <endpoint> --resource-group <rg> # Delete private endpoint az network private-endpoint delete --name <endpoint> --resource-group <rg>
Virtual Machines
VM Operations
# List VMs az vm list -o table # List VMs in resource group az vm list --resource-group <rg> -o table # List VMs with status az vm list --resource-group <rg> --show-details -o table # Create VM az vm create \ --name <vm-name> \ --resource-group <rg> \ --image Ubuntu2204 \ --size Standard_DS2_v2 \ --admin-username azureuser \ --generate-ssh-keys # Show VM details az vm show --name <vm> --resource-group <rg> # Get VM instance view (power state) az vm get-instance-view --name <vm> --resource-group <rg> --query "instanceView.statuses[1].displayStatus" -o tsv # Start VM az vm start --name <vm> --resource-group <rg> # Stop VM (deallocate) az vm deallocate --name <vm> --resource-group <rg> # Restart VM az vm restart --name <vm> --resource-group <rg> # Delete VM az vm delete --name <vm> --resource-group <rg> --yes # Resize VM az vm resize --name <vm> --resource-group <rg> --size Standard_DS3_v2 # List available VM sizes az vm list-sizes --location <region> -o table # List available VM images az vm image list --all --offer Ubuntu -o table # Run command on VM az vm run-command invoke \ --name <vm> \ --resource-group <rg> \ --command-id RunShellScript \ --scripts "hostname && uptime"
VM Scale Sets
# List VM scale sets az vmss list -o table # Create VM scale set az vmss create \ --name <vmss-name> \ --resource-group <rg> \ --image Ubuntu2204 \ --instance-count 3 \ --vm-sku Standard_DS2_v2 \ --admin-username azureuser \ --generate-ssh-keys # Show VM scale set az vmss show --name <vmss> --resource-group <rg> # Scale out/in az vmss scale --name <vmss> --resource-group <rg> --new-capacity 5 # List instances az vmss list-instances --name <vmss> --resource-group <rg> -o table # Delete VM scale set az vmss delete --name <vmss> --resource-group <rg>
Managed Disks
# List managed disks az disk list -o table # Create managed disk az disk create \ --name <disk-name> \ --resource-group <rg> \ --size-gb 128 \ --sku Premium_LRS # Show disk az disk show --name <disk> --resource-group <rg> # Delete disk az disk delete --name <disk> --resource-group <rg> --yes # Attach disk to VM az vm disk attach --vm-name <vm> --resource-group <rg> --name <disk-name> # Detach disk from VM az vm disk detach --vm-name <vm> --resource-group <rg> --name <disk-name>
DevOps & Infrastructure as Code
ARM/Bicep Deployments
# Deploy ARM template az deployment group create \ --resource-group <rg> \ --template-file <template.json> \ --parameters <parameters.json> # Deploy Bicep template az deployment group create \ --resource-group <rg> \ --template-file <template.bicep> \ --parameters param1=value1 # Validate template az deployment group validate \ --resource-group <rg> \ --template-file <template.json> # List deployments az deployment group list --resource-group <rg> -o table # Show deployment az deployment group show --resource-group <rg> --name <deployment-name> # Delete deployment az deployment group delete --resource-group <rg> --name <deployment-name> # What-if deployment az deployment group what-if \ --resource-group <rg> \ --template-file <template.bicep> # Export resource group as template az group export --name <rg> > template.json # Deploy at subscription level az deployment sub create \ --location <region> \ --template-file <template.bicep>
Azure DevOps
# Configure Azure DevOps CLI az devops configure --defaults organization=https://dev.azure.com/<org> project=<project> # List projects az devops project list -o table # List repos az repos list -o table # List pipelines az pipelines list -o table # Run pipeline az pipelines run --name <pipeline-name> # List pipeline runs az pipelines runs list -o table
Cost Management
Cost Analysis
# Show current usage/spending (requires Cost Management Reader role) az consumption usage list \ --start-date <start> \ --end-date <end> \ -o table # List budgets az consumption budget list -o table # Create budget az consumption budget create \ --budget-name <name> \ --amount 1000 \ --category Cost \ --time-grain Monthly \ --start-date <start-date> \ --end-date <end-date>
Reservations
# List reservations az reservations reservation list --reservation-order-id <order-id> -o table # List reservation orders az reservations reservation-order list -o table
Tips & Best Practices
Performance Tips
# Use --no-wait for async operations az vm create --name myvm --resource-group myrg --image Ubuntu2204 --no-wait # Use --query to reduce output az vm list --query "[].{name:name, rg:resourceGroup}" -o table # Use --only-show-errors to reduce noise az vm list --only-show-errors
Common Patterns
# Get resource ID RESOURCE_ID=$(az <resource> show --name <name> --resource-group <rg> --query id -o tsv) # Loop through resources for vm in $(az vm list --query "[].name" -o tsv); do echo "Processing $vm" done # Check if resource exists if az group show --name <rg> &>/dev/null; then echo "Resource group exists" fi
Useful Aliases
# Add to shell profile alias azls='az account list -o table' alias azrg='az group list -o table' alias azvm='az vm list --show-details -o table'