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
winget install Microsoft.AzureCLIorbrew install azure-cli - Authenticated: Run
az loginbefore using Azure commands - Subscription set: Use
az account set --subscription <name-or-id>to set default
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'
微信扫一扫