Comprehensive Azure Cloud Platform management via command-line interface
Master the Azure command-line interface for cloud infrastructure management, automation, and DevOps workflows.
Azure CLI is Microsoft's powerful cross-platform command-line tool for managing Azure resources. This skill provides comprehensive knowledge of Azure CLI commands, authentication, resource management, and automation patterns.
macOS:
brew install azure-cli
Linux (Ubuntu/Debian):
curl -sL https://aka.ms/InstallAzureCliLinux | bash
Windows:
choco install azure-cli
# Or download MSI from https://aka.ms/InstallAzureCliWindowsMSI
Verify Installation:
az --version # Show version
az --help # Show general help
# 1. Login to Azure (opens browser for authentication)
az login
# 2. View your subscriptions
az account list
# 3. Set default subscription (optional)
az account set --subscription "My Subscription"
# 4. Create a resource group
az group create -g myResourceGroup -l eastus
# 5. List your resource groups
az group list
az login # Interactive login
az login --service-principal -u APP_ID -p PASSWORD -t TENANT_ID
az login --identity # Managed identity
az logout # Sign out
az account show # Current account
az account list # All accounts
az account set --subscription SUBSCRIPTION # Set default
--subscription ID # Target subscription
--resource-group -g RG # Target resource group
--output -o json|table|tsv|yaml # Output format
--query JMESPATH_QUERY # Filter/extract output
--verbose -v # Verbose output
--debug # Debug mode
--help -h # Command help
az group list # List all resource groups
az group create -g RG -l LOCATION # Create
az group delete -g RG # Delete
az group show -g RG # Get details
az group update -g RG --tags key=value # Update tags
az vm create -g RG -n VM_NAME --image UbuntuLTS
az vm list -g RG
az vm show -g RG -n VM_NAME
az vm start -g RG -n VM_NAME
az vm stop -g RG -n VM_NAME
az vm restart -g RG -n VM_NAME
az vm delete -g RG -n VM_NAME
az storage account create -g RG -n ACCOUNT --sku Standard_LRS
az storage account list
az storage container create --account-name ACCOUNT -n CONTAINER
az storage blob upload --account-name ACCOUNT -c CONTAINER -n BLOB -f LOCAL_FILE
az storage blob download --account-name ACCOUNT -c CONTAINER -n BLOB -f LOCAL_FILE
az aks create -g RG -n CLUSTER --node-count 2
az aks get-credentials -g RG -n CLUSTER
az aks list
az aks show -g RG -n CLUSTER
az aks delete -g RG -n CLUSTER
# Get only specific fields
az vm list --query "[].{name: name, state: powerState}"
# Get just the names
az vm list --query "[].name" -o tsv
# Filter and extract
az vm list --query "[?powerState=='VM running'].name"
#!/bin/bash
set -e # Exit on error
# Get VM ID
VM_ID=$(az vm create \
-g myRG \
-n myVM \
--image UbuntuLTS \
--query id \
--output tsv)
echo "Created VM: $VM_ID"
# Check provisioning state
az vm show --ids "$VM_ID" --query provisioningState
# Delete all VMs in a resource group
az vm list -g myRG -d --query "[].id" -o tsv | xargs az vm delete --ids
# List all resources by tag
az resource list --tag env=production
# Set defaults to reduce typing
az configure --defaults group=myRG subscription=mySubscription location=eastus
# Now commands are simpler
az vm create -n myVM --image UbuntuLTS # group, subscription, location inherited
This skill includes helper bash scripts for common operations:
Usage:
./scripts/azure-vm-status.sh -g myResourceGroup
./scripts/azure-storage-analysis.sh --subscription mySubscription
Azure CLI supports powerful output filtering using JMESPath:
# Sort results
az vm list --query "sort_by([], &name)"
# Complex filtering
az vm list --query "[?location=='eastus' && powerState=='VM running'].name"
# Aggregation
az vm list --query "length([])" # Count VMs
# Check exit codes
az vm create -g RG -n VM --image UbuntuLTS
if [ $? -eq 0 ]; then
echo "VM created successfully"
else
echo "Failed to create VM"
exit 1
fi
Service Principal (Automation):
az login --service-principal \
--username $AZURE_CLIENT_ID \
--password $AZURE_CLIENT_SECRET \
--tenant $AZURE_TENANT_ID
Managed Identity (Azure Resources):
# On an Azure VM or Container Instance
az login --identity
Token-based (CI/CD):
echo "$AZURE_ACCESS_TOKEN" | az login --service-principal -u $AZURE_CLIENT_ID --password-stdin --tenant $AZURE_TENANT_ID
Enable Tab Completion:
# macOS with Homebrew
eval "$(az completion init zsh)"
# Linux (bash)
eval "$(az completion init bash)"
Find Commands Quickly:
az find "create virtual machine" # Search for commands
Use --no-wait for Long Operations:
az vm create -g RG -n VM --image UbuntuLTS --no-wait
# Check status later with az vm show
Save Frequently Used Parameters:
az configure --defaults group=myRG location=eastus
Combine with Other Tools:
# Use with jq for advanced JSON processing
az vm list | jq '.[] | select(.powerState == "VM running") | .name'
# Use with xargs for batch operations
az storage account list --query "[].name" -o tsv | xargs -I {} az storage account show -g RG -n {}
scripts/ directoryVersion: 1.0.0
License: MIT
Compatible with: Azure CLI v2.50+, Azure Subscription