Microsoft Azure CLI Cheat Sheet¶
A comprehensive reference for Azure CLI commands covering essential services for cloud certification and daily operations.
Table of Contents¶
- Configuration & Setup
- Virtual Machines
- Storage
- Azure AD (Active Directory)
- Virtual Network (VNet)
- AKS (Azure Kubernetes Service)
- Azure Functions
- SQL Database
- App Service
- Key Vault
- Azure Monitor
- Additional Services
Configuration & Setup¶
Login and Configuration¶
# Login to Azure
az login
# Login with service principal
az login --service-principal --username APP_ID --password PASSWORD --tenant TENANT_ID
# Login with device code (for headless systems)
az login --use-device-code
# List accounts
az account list
# Show current account
az account show
# Set subscription
az account set --subscription "My Subscription"
# Get subscription ID
az account show --query id --output tsv
# List locations
az account list-locations
# List available resource skus
az vm list-skus --location eastus
# Set default location
az config set defaults.location=eastus
# Set default resource group
az config set defaults.group=myResourceGroup
# View configuration
az config get
# Clear configuration
az config unset defaults.location
CLI Management¶
# Check CLI version
az version
# Update CLI
az upgrade
# Install extension
az extension add --name azure-devops
# List extensions
az extension list
# Update extension
az extension update --name azure-devops
# Remove extension
az extension remove --name azure-devops
# Get help
az --help
# Get command help
az vm create --help
# Find commands
az find "virtual machine"
Virtual Machines¶
VM Management¶
# List VMs
az vm list
# List VMs in table format
az vm list --output table
# List VMs in specific resource group
az vm list --resource-group myResourceGroup
# Show VM details
az vm show --resource-group myResourceGroup --name myVM
# Create VM (quick)
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image UbuntuLTS \
--admin-username azureuser \
--generate-ssh-keys
# Create VM with specific size
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image UbuntuLTS \
--size Standard_DS2_v2 \
--admin-username azureuser \
--generate-ssh-keys
# Create Windows VM
az vm create \
--resource-group myResourceGroup \
--name myWinVM \
--image Win2019Datacenter \
--admin-username azureuser \
--admin-password MyPassword123!
# Create VM with existing NIC
az vm create \
--resource-group myResourceGroup \
--name myVM \
--nics myNIC \
--image UbuntuLTS
# Create VM with public IP
az vm create \
--resource-group myResourceGroup \
--name myVM \
--image UbuntuLTS \
--public-ip-address myPublicIP \
--admin-username azureuser \
--generate-ssh-keys
# Start VM
az vm start --resource-group myResourceGroup --name myVM
# Stop VM (deallocate)
az vm deallocate --resource-group myResourceGroup --name myVM
# Stop VM (without deallocate)
az vm stop --resource-group myResourceGroup --name myVM
# Restart VM
az vm restart --resource-group myResourceGroup --name myVM
# Delete VM
az vm delete --resource-group myResourceGroup --name myVM --yes
# Get VM IP addresses
az vm list-ip-addresses --resource-group myResourceGroup --name myVM
# Get instance view
az vm get-instance-view --resource-group myResourceGroup --name myVM
# Resize VM
az vm resize --resource-group myResourceGroup --name myVM --size Standard_DS3_v2
# Convert VM to managed disks
az vm convert --resource-group myResourceGroup --name myVM
VM Images¶
# List VM images
az vm image list
# List all images from publisher
az vm image list --publisher Canonical --all
# List popular images
az vm image list --output table
# Show image details
az vm image show --location eastus --publisher Canonical --offer UbuntuServer --sku 18.04-LTS --version latest
# List offers
az vm image list-offers --location eastus --publisher Canonical
# List SKUs
az vm image list-skus --location eastus --publisher Canonical --offer UbuntuServer
# Accept image terms
az vm image accept-terms --publisher microsoft-ads --offer linux-data-science-vm-ubuntu --plan linuxdsvmubuntu
Disks¶
# List disks
az disk list
# List disks in resource group
az disk list --resource-group myResourceGroup
# Show disk details
az disk show --resource-group myResourceGroup --name myDisk
# Create empty disk
az disk create \
--resource-group myResourceGroup \
--name myDisk \
--size-gb 128 \
--sku Standard_LRS
# Create disk from snapshot
az disk create \
--resource-group myResourceGroup \
--name myDisk \
--source mySnapshot
# Attach disk to VM
az vm disk attach \
--resource-group myResourceGroup \
--vm-name myVM \
--name myDisk
# Detach disk from VM
az vm disk detach \
--resource-group myResourceGroup \
--vm-name myVM \
--name myDisk
# Update disk size
az disk update \
--resource-group myResourceGroup \
--name myDisk \
--size-gb 256
# Delete disk
az disk delete --resource-group myResourceGroup --name myDisk --yes
# Create snapshot
az snapshot create \
--resource-group myResourceGroup \
--name mySnapshot \
--source myDisk
# List snapshots
az snapshot list
# Delete snapshot
az snapshot delete --resource-group myResourceGroup --name mySnapshot --yes
VM Extensions¶
# List VM extensions
az vm extension list --resource-group myResourceGroup --vm-name myVM
# Set VM extension
az vm extension set \
--resource-group myResourceGroup \
--vm-name myVM \
--name customScript \
--publisher Microsoft.Azure.Extensions \
--settings '{"fileUris": ["https://example.com/script.sh"],"commandToExecute": "./script.sh"}'
# Delete VM extension
az vm extension delete \
--resource-group myResourceGroup \
--vm-name myVM \
--name customScript
# Show extension image
az vm extension image list --location eastus
VM Scale Sets¶
# List VM scale sets
az vmss list
# Create VM scale set
az vmss create \
--resource-group myResourceGroup \
--name myScaleSet \
--image UbuntuLTS \
--upgrade-policy-mode automatic \
--instance-count 3 \
--admin-username azureuser \
--generate-ssh-keys
# Show scale set details
az vmss show --resource-group myResourceGroup --name myScaleSet
# List instances
az vmss list-instances --resource-group myResourceGroup --name myScaleSet
# Scale out
az vmss scale \
--resource-group myResourceGroup \
--name myScaleSet \
--new-capacity 5
# Update instances
az vmss update-instances \
--resource-group myResourceGroup \
--name myScaleSet \
--instance-ids "*"
# Start instances
az vmss start --resource-group myResourceGroup --name myScaleSet
# Stop instances
az vmss deallocate --resource-group myResourceGroup --name myScaleSet
# Delete scale set
az vmss delete --resource-group myResourceGroup --name myScaleSet
Availability Sets¶
# List availability sets
az vm availability-set list
# Create availability set
az vm availability-set create \
--resource-group myResourceGroup \
--name myAvailabilitySet \
--platform-fault-domain-count 2 \
--platform-update-domain-count 5
# Show availability set
az vm availability-set show \
--resource-group myResourceGroup \
--name myAvailabilitySet
# Delete availability set
az vm availability-set delete \
--resource-group myResourceGroup \
--name myAvailabilitySet
Storage¶
Storage Account Management¶
# List storage accounts
az storage account list
# Create storage account
az storage account create \
--name mystorageaccount \
--resource-group myResourceGroup \
--location eastus \
--sku Standard_LRS
# Create storage account with specific replication
az storage account create \
--name mystorageaccount \
--resource-group myResourceGroup \
--location eastus \
--sku Standard_GRS
# Show storage account
az storage account show \
--name mystorageaccount \
--resource-group myResourceGroup
# Update storage account
az storage account update \
--name mystorageaccount \
--resource-group myResourceGroup \
--sku Standard_GRS
# Get storage account keys
az storage account keys list \
--account-name mystorageaccount \
--resource-group myResourceGroup
# Regenerate storage account key
az storage account keys renew \
--account-name mystorageaccount \
--resource-group myResourceGroup \
--key primary
# Get connection string
az storage account show-connection-string \
--name mystorageaccount \
--resource-group myResourceGroup
# Delete storage account
az storage account delete \
--name mystorageaccount \
--resource-group myResourceGroup --yes
Blob Storage¶
# List containers
az storage container list --account-name mystorageaccount
# Create container
az storage container create \
--name mycontainer \
--account-name mystorageaccount
# Delete container
az storage container delete \
--name mycontainer \
--account-name mystorageaccount
# List blobs
az storage blob list \
--container-name mycontainer \
--account-name mystorageaccount
# Upload blob
az storage blob upload \
--container-name mycontainer \
--file ./myfile.txt \
--name myfile.txt \
--account-name mystorageaccount
# Upload directory
az storage blob upload-batch \
--destination mycontainer \
--source ./myfolder \
--account-name mystorageaccount
# Download blob
az storage blob download \
--container-name mycontainer \
--name myfile.txt \
--file ./downloaded.txt \
--account-name mystorageaccount
# Download directory
az storage blob download-batch \
--destination ./myfolder \
--source mycontainer \
--account-name mystorageaccount
# Copy blob
az storage blob copy start \
--destination-container destcontainer \
--destination-blob destfile.txt \
--source-container mycontainer \
--source-blob myfile.txt \
--account-name mystorageaccount
# Delete blob
az storage blob delete \
--container-name mycontainer \
--name myfile.txt \
--account-name mystorageaccount
# Generate SAS token
az storage blob generate-sas \
--container-name mycontainer \
--name myfile.txt \
--permissions r \
--expiry 2024-12-31 \
--account-name mystorageaccount
# Set blob tier
az storage blob set-tier \
--container-name mycontainer \
--name myfile.txt \
--tier Cool \
--account-name mystorageaccount
File Shares¶
# List file shares
az storage share list --account-name mystorageaccount
# Create file share
az storage share create \
--name myshare \
--account-name mystorageaccount
# Delete file share
az storage share delete \
--name myshare \
--account-name mystorageaccount
# List files
az storage file list \
--share-name myshare \
--account-name mystorageaccount
# Upload file
az storage file upload \
--share-name myshare \
--source ./myfile.txt \
--path myfile.txt \
--account-name mystorageaccount
# Download file
az storage file download \
--share-name myshare \
--path myfile.txt \
--dest ./downloaded.txt \
--account-name mystorageaccount
# Delete file
az storage file delete \
--share-name myshare \
--path myfile.txt \
--account-name mystorageaccount
Queue Storage¶
# List queues
az storage queue list --account-name mystorageaccount
# Create queue
az storage queue create \
--name myqueue \
--account-name mystorageaccount
# Delete queue
az storage queue delete \
--name myqueue \
--account-name mystorageaccount
Table Storage¶
# List tables
az storage table list --account-name mystorageaccount
# Create table
az storage table create \
--name mytable \
--account-name mystorageaccount
# Delete table
az storage table delete \
--name mytable \
--account-name mystorageaccount
Azure AD (Active Directory)¶
User Management¶
# List users
az ad user list
# Show user
az ad user show --id user@example.com
# Create user
az ad user create \
--display-name "John Doe" \
--password MyPassword123! \
--user-principal-name john@example.onmicrosoft.com
# Update user
az ad user update \
--id john@example.onmicrosoft.com \
--display-name "John Smith"
# Delete user
az ad user delete --id john@example.onmicrosoft.com
# Get signed-in user
az ad signed-in-user show
# List user's group memberships
az ad user get-member-groups --id john@example.onmicrosoft.com
Group Management¶
# List groups
az ad group list
# Show group
az ad group show --group myGroup
# Create group
az ad group create \
--display-name myGroup \
--mail-nickname myGroup
# Delete group
az ad group delete --group myGroup
# Add member to group
az ad group member add \
--group myGroup \
--member-id <user-object-id>
# Remove member from group
az ad group member remove \
--group myGroup \
--member-id <user-object-id>
# List group members
az ad group member list --group myGroup
Service Principal Management¶
# List service principals
az ad sp list
# Show service principal
az ad sp show --id <app-id>
# Create service principal
az ad sp create-for-rbac --name myServicePrincipal
# Create service principal with role
az ad sp create-for-rbac \
--name myServicePrincipal \
--role Contributor \
--scopes /subscriptions/<subscription-id>/resourceGroups/myResourceGroup
# Reset credentials
az ad sp credential reset --id <app-id>
# Delete service principal
az ad sp delete --id <app-id>
Application Management¶
# List applications
az ad app list
# Show application
az ad app show --id <app-id>
# Create application
az ad app create --display-name myApplication
# Update application
az ad app update --id <app-id> --homepage https://example.com
# Delete application
az ad app delete --id <app-id>
Virtual Network (VNet)¶
VNet Management¶
# List virtual networks
az network vnet list
# Create virtual network
az network vnet create \
--resource-group myResourceGroup \
--name myVNet \
--address-prefix 10.0.0.0/16
# Create virtual network with subnet
az network vnet create \
--resource-group myResourceGroup \
--name myVNet \
--address-prefix 10.0.0.0/16 \
--subnet-name mySubnet \
--subnet-prefix 10.0.1.0/24
# Show virtual network
az network vnet show \
--resource-group myResourceGroup \
--name myVNet
# Update virtual network
az network vnet update \
--resource-group myResourceGroup \
--name myVNet \
--dns-servers 8.8.8.8 8.8.4.4
# Delete virtual network
az network vnet delete \
--resource-group myResourceGroup \
--name myVNet
Subnet Management¶
# List subnets
az network vnet subnet list \
--resource-group myResourceGroup \
--vnet-name myVNet
# Create subnet
az network vnet subnet create \
--resource-group myResourceGroup \
--vnet-name myVNet \
--name mySubnet \
--address-prefix 10.0.2.0/24
# Show subnet
az network vnet subnet show \
--resource-group myResourceGroup \
--vnet-name myVNet \
--name mySubnet
# Update subnet
az network vnet subnet update \
--resource-group myResourceGroup \
--vnet-name myVNet \
--name mySubnet \
--network-security-group myNSG
# Delete subnet
az network vnet subnet delete \
--resource-group myResourceGroup \
--vnet-name myVNet \
--name mySubnet
Network Security Groups (NSG)¶
# List NSGs
az network nsg list
# Create NSG
az network nsg create \
--resource-group myResourceGroup \
--name myNSG
# Show NSG
az network nsg show \
--resource-group myResourceGroup \
--name myNSG
# Delete NSG
az network nsg delete \
--resource-group myResourceGroup \
--name myNSG
# List NSG rules
az network nsg rule list \
--resource-group myResourceGroup \
--nsg-name myNSG
# Create NSG rule (allow SSH)
az network nsg rule create \
--resource-group myResourceGroup \
--nsg-name myNSG \
--name allow-ssh \
--priority 1000 \
--source-address-prefixes '*' \
--source-port-ranges '*' \
--destination-address-prefixes '*' \
--destination-port-ranges 22 \
--access Allow \
--protocol Tcp
# Create NSG rule (allow HTTP)
az network nsg rule create \
--resource-group myResourceGroup \
--nsg-name myNSG \
--name allow-http \
--priority 1001 \
--destination-port-ranges 80 \
--access Allow \
--protocol Tcp
# Update NSG rule
az network nsg rule update \
--resource-group myResourceGroup \
--nsg-name myNSG \
--name allow-ssh \
--priority 1100
# Delete NSG rule
az network nsg rule delete \
--resource-group myResourceGroup \
--nsg-name myNSG \
--name allow-ssh
Network Interface Cards (NIC)¶
# List NICs
az network nic list
# Create NIC
az network nic create \
--resource-group myResourceGroup \
--name myNIC \
--vnet-name myVNet \
--subnet mySubnet
# Show NIC
az network nic show \
--resource-group myResourceGroup \
--name myNIC
# Update NIC
az network nic update \
--resource-group myResourceGroup \
--name myNIC \
--network-security-group myNSG
# Delete NIC
az network nic delete \
--resource-group myResourceGroup \
--name myNIC
Public IP Addresses¶
# List public IPs
az network public-ip list
# Create public IP
az network public-ip create \
--resource-group myResourceGroup \
--name myPublicIP
# Create static public IP
az network public-ip create \
--resource-group myResourceGroup \
--name myPublicIP \
--allocation-method Static
# Show public IP
az network public-ip show \
--resource-group myResourceGroup \
--name myPublicIP
# Get IP address
az network public-ip show \
--resource-group myResourceGroup \
--name myPublicIP \
--query ipAddress \
--output tsv
# Delete public IP
az network public-ip delete \
--resource-group myResourceGroup \
--name myPublicIP
Load Balancer¶
# List load balancers
az network lb list
# Create load balancer
az network lb create \
--resource-group myResourceGroup \
--name myLoadBalancer \
--sku Standard \
--vnet-name myVNet \
--subnet mySubnet \
--frontend-ip-name myFrontEnd \
--backend-pool-name myBackEndPool
# Show load balancer
az network lb show \
--resource-group myResourceGroup \
--name myLoadBalancer
# Create health probe
az network lb probe create \
--resource-group myResourceGroup \
--lb-name myLoadBalancer \
--name myHealthProbe \
--protocol tcp \
--port 80
# Create load balancer rule
az network lb rule create \
--resource-group myResourceGroup \
--lb-name myLoadBalancer \
--name myLoadBalancerRule \
--protocol tcp \
--frontend-port 80 \
--backend-port 80 \
--frontend-ip-name myFrontEnd \
--backend-pool-name myBackEndPool \
--probe-name myHealthProbe
# Delete load balancer
az network lb delete \
--resource-group myResourceGroup \
--name myLoadBalancer
VPN Gateway¶
# Create VPN gateway
az network vnet-gateway create \
--resource-group myResourceGroup \
--name myVPNGateway \
--vnet myVNet \
--gateway-type Vpn \
--vpn-type RouteBased \
--sku VpnGw1
# List VPN gateways
az network vnet-gateway list
# Show VPN gateway
az network vnet-gateway show \
--resource-group myResourceGroup \
--name myVPNGateway
# Delete VPN gateway
az network vnet-gateway delete \
--resource-group myResourceGroup \
--name myVPNGateway
VNet Peering¶
# Create VNet peering
az network vnet peering create \
--resource-group myResourceGroup \
--name myVNet1-to-myVNet2 \
--vnet-name myVNet1 \
--remote-vnet myVNet2 \
--allow-vnet-access
# List VNet peerings
az network vnet peering list \
--resource-group myResourceGroup \
--vnet-name myVNet1
# Show VNet peering
az network vnet peering show \
--resource-group myResourceGroup \
--name myVNet1-to-myVNet2 \
--vnet-name myVNet1
# Delete VNet peering
az network vnet peering delete \
--resource-group myResourceGroup \
--name myVNet1-to-myVNet2 \
--vnet-name myVNet1
AKS (Azure Kubernetes Service)¶
Cluster Management¶
# List AKS clusters
az aks list
# Create AKS cluster
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 3 \
--generate-ssh-keys
# Create AKS cluster with specific version
az aks create \
--resource-group myResourceGroup \
--name myAKSCluster \
--kubernetes-version 1.25.6 \
--node-count 3
# Show AKS cluster
az aks show \
--resource-group myResourceGroup \
--name myAKSCluster
# Get credentials
az aks get-credentials \
--resource-group myResourceGroup \
--name myAKSCluster
# Get credentials for admin
az aks get-credentials \
--resource-group myResourceGroup \
--name myAKSCluster \
--admin
# List available Kubernetes versions
az aks get-versions --location eastus
# Scale cluster
az aks scale \
--resource-group myResourceGroup \
--name myAKSCluster \
--node-count 5
# Upgrade cluster
az aks upgrade \
--resource-group myResourceGroup \
--name myAKSCluster \
--kubernetes-version 1.26.0
# Stop cluster
az aks stop \
--resource-group myResourceGroup \
--name myAKSCluster
# Start cluster
az aks start \
--resource-group myResourceGroup \
--name myAKSCluster
# Delete cluster
az aks delete \
--resource-group myResourceGroup \
--name myAKSCluster --yes
Node Pool Management¶
# List node pools
az aks nodepool list \
--resource-group myResourceGroup \
--cluster-name myAKSCluster
# Add node pool
az aks nodepool add \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mynodepool \
--node-count 3
# Show node pool
az aks nodepool show \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mynodepool
# Scale node pool
az aks nodepool scale \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mynodepool \
--node-count 5
# Delete node pool
az aks nodepool delete \
--resource-group myResourceGroup \
--cluster-name myAKSCluster \
--name mynodepool
Add-ons¶
# Enable monitoring add-on
az aks enable-addons \
--resource-group myResourceGroup \
--name myAKSCluster \
--addons monitoring
# Enable HTTP application routing
az aks enable-addons \
--resource-group myResourceGroup \
--name myAKSCluster \
--addons http_application_routing
# Disable add-on
az aks disable-addons \
--resource-group myResourceGroup \
--name myAKSCluster \
--addons http_application_routing
Azure Functions¶
Function App Management¶
# List function apps
az functionapp list
# Create function app
az functionapp create \
--resource-group myResourceGroup \
--name myFunctionApp \
--storage-account mystorageaccount \
--consumption-plan-location eastus \
--runtime node \
--runtime-version 14 \
--functions-version 4
# Create function app on Linux
az functionapp create \
--resource-group myResourceGroup \
--name myFunctionApp \
--storage-account mystorageaccount \
--consumption-plan-location eastus \
--runtime python \
--runtime-version 3.9 \
--functions-version 4 \
--os-type Linux
# Show function app
az functionapp show \
--resource-group myResourceGroup \
--name myFunctionApp
# Delete function app
az functionapp delete \
--resource-group myResourceGroup \
--name myFunctionApp
# Start function app
az functionapp start \
--resource-group myResourceGroup \
--name myFunctionApp
# Stop function app
az functionapp stop \
--resource-group myResourceGroup \
--name myFunctionApp
# Restart function app
az functionapp restart \
--resource-group myResourceGroup \
--name myFunctionApp
Function App Configuration¶
# List app settings
az functionapp config appsettings list \
--resource-group myResourceGroup \
--name myFunctionApp
# Set app setting
az functionapp config appsettings set \
--resource-group myResourceGroup \
--name myFunctionApp \
--settings KEY1=value1 KEY2=value2
# Delete app setting
az functionapp config appsettings delete \
--resource-group myResourceGroup \
--name myFunctionApp \
--setting-names KEY1
# Update connection strings
az functionapp config connection-string set \
--resource-group myResourceGroup \
--name myFunctionApp \
--connection-string-type SQLAzure \
--settings MyConnection="Server=..."
Deployment¶
# Deploy from zip
az functionapp deployment source config-zip \
--resource-group myResourceGroup \
--name myFunctionApp \
--src app.zip
# Configure continuous deployment
az functionapp deployment source config \
--resource-group myResourceGroup \
--name myFunctionApp \
--repo-url https://github.com/user/repo \
--branch main \
--manual-integration
# Sync deployment
az functionapp deployment source sync \
--resource-group myResourceGroup \
--name myFunctionApp
SQL Database¶
SQL Server Management¶
# List SQL servers
az sql server list
# Create SQL server
az sql server create \
--resource-group myResourceGroup \
--name mysqlserver \
--admin-user myadmin \
--admin-password MyPassword123!
# Show SQL server
az sql server show \
--resource-group myResourceGroup \
--name mysqlserver
# Update SQL server
az sql server update \
--resource-group myResourceGroup \
--name mysqlserver \
--admin-password NewPassword456!
# Delete SQL server
az sql server delete \
--resource-group myResourceGroup \
--name mysqlserver --yes
Firewall Rules¶
# List firewall rules
az sql server firewall-rule list \
--resource-group myResourceGroup \
--server mysqlserver
# Create firewall rule
az sql server firewall-rule create \
--resource-group myResourceGroup \
--server mysqlserver \
--name AllowMyIP \
--start-ip-address 203.0.113.1 \
--end-ip-address 203.0.113.1
# Allow Azure services
az sql server firewall-rule create \
--resource-group myResourceGroup \
--server mysqlserver \
--name AllowAzureServices \
--start-ip-address 0.0.0.0 \
--end-ip-address 0.0.0.0
# Delete firewall rule
az sql server firewall-rule delete \
--resource-group myResourceGroup \
--server mysqlserver \
--name AllowMyIP
Database Management¶
# List databases
az sql db list \
--resource-group myResourceGroup \
--server mysqlserver
# Create database
az sql db create \
--resource-group myResourceGroup \
--server mysqlserver \
--name myDatabase \
--service-objective S0
# Show database
az sql db show \
--resource-group myResourceGroup \
--server mysqlserver \
--name myDatabase
# Update database
az sql db update \
--resource-group myResourceGroup \
--server mysqlserver \
--name myDatabase \
--service-objective S1
# Delete database
az sql db delete \
--resource-group myResourceGroup \
--server mysqlserver \
--name myDatabase --yes
# Export database
az sql db export \
--resource-group myResourceGroup \
--server mysqlserver \
--name myDatabase \
--admin-user myadmin \
--admin-password MyPassword123! \
--storage-key-type StorageAccessKey \
--storage-key <key> \
--storage-uri https://mystorageaccount.blob.core.windows.net/exports/export.bacpac
# Import database
az sql db import \
--resource-group myResourceGroup \
--server mysqlserver \
--name myDatabase \
--admin-user myadmin \
--admin-password MyPassword123! \
--storage-key-type StorageAccessKey \
--storage-key <key> \
--storage-uri https://mystorageaccount.blob.core.windows.net/exports/export.bacpac
App Service¶
App Service Plan Management¶
# List app service plans
az appservice plan list
# Create app service plan
az appservice plan create \
--resource-group myResourceGroup \
--name myAppServicePlan \
--sku B1
# Create Linux app service plan
az appservice plan create \
--resource-group myResourceGroup \
--name myAppServicePlan \
--sku B1 \
--is-linux
# Show app service plan
az appservice plan show \
--resource-group myResourceGroup \
--name myAppServicePlan
# Update app service plan
az appservice plan update \
--resource-group myResourceGroup \
--name myAppServicePlan \
--sku S1
# Delete app service plan
az appservice plan delete \
--resource-group myResourceGroup \
--name myAppServicePlan --yes
Web App Management¶
# List web apps
az webapp list
# Create web app
az webapp create \
--resource-group myResourceGroup \
--plan myAppServicePlan \
--name myWebApp
# Create web app with runtime
az webapp create \
--resource-group myResourceGroup \
--plan myAppServicePlan \
--name myWebApp \
--runtime "NODE|14-lts"
# Show web app
az webapp show \
--resource-group myResourceGroup \
--name myWebApp
# Delete web app
az webapp delete \
--resource-group myResourceGroup \
--name myWebApp
# Start web app
az webapp start \
--resource-group myResourceGroup \
--name myWebApp
# Stop web app
az webapp stop \
--resource-group myResourceGroup \
--name myWebApp
# Restart web app
az webapp restart \
--resource-group myResourceGroup \
--name myWebApp
# Browse web app
az webapp browse \
--resource-group myResourceGroup \
--name myWebApp
Web App Configuration¶
# List app settings
az webapp config appsettings list \
--resource-group myResourceGroup \
--name myWebApp
# Set app settings
az webapp config appsettings set \
--resource-group myResourceGroup \
--name myWebApp \
--settings KEY1=value1 KEY2=value2
# Delete app setting
az webapp config appsettings delete \
--resource-group myResourceGroup \
--name myWebApp \
--setting-names KEY1
# Configure connection strings
az webapp config connection-string set \
--resource-group myResourceGroup \
--name myWebApp \
--connection-string-type SQLAzure \
--settings DefaultConnection="Server=..."
Deployment¶
# Deploy from zip
az webapp deployment source config-zip \
--resource-group myResourceGroup \
--name myWebApp \
--src app.zip
# Configure Git deployment
az webapp deployment source config \
--resource-group myResourceGroup \
--name myWebApp \
--repo-url https://github.com/user/repo \
--branch main \
--manual-integration
# List deployment credentials
az webapp deployment list-publishing-credentials \
--resource-group myResourceGroup \
--name myWebApp
# Get deployment logs
az webapp log tail \
--resource-group myResourceGroup \
--name myWebApp
# Download logs
az webapp log download \
--resource-group myResourceGroup \
--name myWebApp \
--log-file logs.zip
Key Vault¶
Key Vault Management¶
# List key vaults
az keyvault list
# Create key vault
az keyvault create \
--resource-group myResourceGroup \
--name myKeyVault \
--location eastus
# Show key vault
az keyvault show \
--name myKeyVault
# Delete key vault
az keyvault delete \
--name myKeyVault
# Purge deleted key vault
az keyvault purge \
--name myKeyVault
# Recover deleted key vault
az keyvault recover \
--name myKeyVault
Secret Management¶
# Set secret
az keyvault secret set \
--vault-name myKeyVault \
--name mySecret \
--value "MySecretValue"
# Get secret
az keyvault secret show \
--vault-name myKeyVault \
--name mySecret
# Get secret value
az keyvault secret show \
--vault-name myKeyVault \
--name mySecret \
--query value \
--output tsv
# List secrets
az keyvault secret list \
--vault-name myKeyVault
# Delete secret
az keyvault secret delete \
--vault-name myKeyVault \
--name mySecret
# List deleted secrets
az keyvault secret list-deleted \
--vault-name myKeyVault
# Recover deleted secret
az keyvault secret recover \
--vault-name myKeyVault \
--name mySecret
Key Management¶
# Create key
az keyvault key create \
--vault-name myKeyVault \
--name myKey \
--protection software
# List keys
az keyvault key list \
--vault-name myKeyVault
# Show key
az keyvault key show \
--vault-name myKeyVault \
--name myKey
# Delete key
az keyvault key delete \
--vault-name myKeyVault \
--name myKey
Certificate Management¶
# Create certificate
az keyvault certificate create \
--vault-name myKeyVault \
--name myCertificate \
--policy "$(az keyvault certificate get-default-policy)"
# List certificates
az keyvault certificate list \
--vault-name myKeyVault
# Show certificate
az keyvault certificate show \
--vault-name myKeyVault \
--name myCertificate
# Download certificate
az keyvault certificate download \
--vault-name myKeyVault \
--name myCertificate \
--file certificate.pem
# Delete certificate
az keyvault certificate delete \
--vault-name myKeyVault \
--name myCertificate
Access Policies¶
# Set access policy
az keyvault set-policy \
--name myKeyVault \
--upn user@example.com \
--secret-permissions get list set delete
# Set access policy for service principal
az keyvault set-policy \
--name myKeyVault \
--spn <service-principal-id> \
--key-permissions get list
# Delete access policy
az keyvault delete-policy \
--name myKeyVault \
--upn user@example.com
Azure Monitor¶
Log Analytics¶
# List workspaces
az monitor log-analytics workspace list
# Create workspace
az monitor log-analytics workspace create \
--resource-group myResourceGroup \
--workspace-name myWorkspace
# Show workspace
az monitor log-analytics workspace show \
--resource-group myResourceGroup \
--workspace-name myWorkspace
# Delete workspace
az monitor log-analytics workspace delete \
--resource-group myResourceGroup \
--workspace-name myWorkspace --yes
# Query logs
az monitor log-analytics query \
--workspace myWorkspaceId \
--analytics-query "AzureActivity | limit 10"
Metrics¶
# List metric definitions
az monitor metrics list-definitions \
--resource /subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM
# Get metrics
az monitor metrics list \
--resource /subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM \
--metric "Percentage CPU"
# Get metrics with time range
az monitor metrics list \
--resource /subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM \
--metric "Percentage CPU" \
--start-time 2024-01-01T00:00:00Z \
--end-time 2024-01-02T00:00:00Z
Alerts¶
# List alert rules
az monitor metrics alert list
# Create metric alert
az monitor metrics alert create \
--name myAlert \
--resource-group myResourceGroup \
--scopes /subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM \
--condition "avg Percentage CPU > 80" \
--description "Alert when CPU exceeds 80%"
# Update alert
az monitor metrics alert update \
--name myAlert \
--resource-group myResourceGroup \
--enabled false
# Delete alert
az monitor metrics alert delete \
--name myAlert \
--resource-group myResourceGroup
Diagnostic Settings¶
# List diagnostic settings
az monitor diagnostic-settings list \
--resource /subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM
# Create diagnostic setting
az monitor diagnostic-settings create \
--name myDiagnostic \
--resource /subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM \
--workspace myWorkspaceId \
--logs '[{"category": "Administrative","enabled": true}]' \
--metrics '[{"category": "AllMetrics","enabled": true}]'
# Delete diagnostic setting
az monitor diagnostic-settings delete \
--name myDiagnostic \
--resource /subscriptions/<subscription-id>/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVM
Additional Services¶
Resource Groups¶
# List resource groups
az group list
# Create resource group
az group create \
--name myResourceGroup \
--location eastus
# Show resource group
az group show \
--name myResourceGroup
# Update resource group tags
az group update \
--name myResourceGroup \
--tags Environment=Production Team=Backend
# Delete resource group
az group delete \
--name myResourceGroup --yes
# Export resource group template
az group export \
--name myResourceGroup \
--output-file template.json
Container Instances¶
# List container groups
az container list
# Create container
az container create \
--resource-group myResourceGroup \
--name mycontainer \
--image mcr.microsoft.com/azuredocs/aci-helloworld \
--dns-name-label mycontainer \
--ports 80
# Show container
az container show \
--resource-group myResourceGroup \
--name mycontainer
# Get logs
az container logs \
--resource-group myResourceGroup \
--name mycontainer
# Attach to container
az container attach \
--resource-group myResourceGroup \
--name mycontainer
# Delete container
az container delete \
--resource-group myResourceGroup \
--name mycontainer --yes
Container Registry¶
# List registries
az acr list
# Create registry
az acr create \
--resource-group myResourceGroup \
--name myregistry \
--sku Basic
# Show registry
az acr show \
--name myregistry
# Login to registry
az acr login --name myregistry
# List repositories
az acr repository list --name myregistry
# List tags
az acr repository show-tags \
--name myregistry \
--repository myimage
# Delete registry
az acr delete \
--name myregistry \
--resource-group myResourceGroup --yes
Service Bus¶
# List namespaces
az servicebus namespace list
# Create namespace
az servicebus namespace create \
--resource-group myResourceGroup \
--name myServiceBusNamespace \
--location eastus
# Create queue
az servicebus queue create \
--resource-group myResourceGroup \
--namespace-name myServiceBusNamespace \
--name myQueue
# Create topic
az servicebus topic create \
--resource-group myResourceGroup \
--namespace-name myServiceBusNamespace \
--name myTopic
# Create subscription
az servicebus topic subscription create \
--resource-group myResourceGroup \
--namespace-name myServiceBusNamespace \
--topic-name myTopic \
--name mySubscription
Cosmos DB¶
# List accounts
az cosmosdb list
# Create account
az cosmosdb create \
--resource-group myResourceGroup \
--name mycosmosdbaccount
# Show account
az cosmosdb show \
--resource-group myResourceGroup \
--name mycosmosdbaccount
# List keys
az cosmosdb keys list \
--resource-group myResourceGroup \
--name mycosmosdbaccount
# Delete account
az cosmosdb delete \
--resource-group myResourceGroup \
--name mycosmosdbaccount --yes
Tips and Best Practices¶
Query and Filter¶
# Use JMESPath queries
az vm list --query "[?storageProfile.osDisk.osType=='Linux'].{Name:name, Location:location}" --output table
# Filter by tag
az resource list --tag Environment=Production
# Get specific value
az vm show --resource-group myResourceGroup --name myVM --query "osProfile.adminUsername" --output tsv
Output Formats¶
# JSON output (default)
az vm list --output json
# Table output
az vm list --output table
# TSV output
az vm list --output tsv
# YAML output
az vm list --output yaml
Batch Operations¶
# Delete multiple resources
az vm delete --ids $(az vm list --resource-group myResourceGroup --query "[].id" --output tsv) --yes
# Start multiple VMs
az vm start --ids $(az vm list --resource-group myResourceGroup --query "[].id" --output tsv)
Interactive Mode¶
# Enter interactive mode
az interactive
# Enable auto-completion
az interactive --style friendly
This cheat sheet covers the most commonly used Azure CLI commands for certification preparation and daily operations. Practice these commands regularly to build proficiency with Microsoft Azure.