Azure CLI

Caution
DevOps & Cloud

Comprehensive Azure Cloud Platform management via command-line interface.

SKILL.md

# Azure CLI Skill **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. ## What You'll Learn ### Core Concepts - Azure subscription and resource group architecture - Authentication methods and credential management - Resource Provider organization and registration - Global parameters, output formatting, and query syntax - Automation scripting and error handling ### Major Service Areas (66 command modules) - **Compute:** Virtual Machines, Scale Sets, Kubernetes (AKS), Containers - **Networking:** Virtual Networks, Load Balancers, CDN, Traffic Manager - **Storage & Data:** Storage Accounts, Data Lake, Cosmos DB, Databases - **Application Services:** App Service, Functions, Container Apps - **Databases:** SQL Server, MySQL, PostgreSQL, CosmosDB - **Integration & Messaging:** Event Hubs, Service Bus, Logic Apps - **Monitoring & Management:** Azure Monitor, Policy, RBAC, Cost Management - **AI & Machine Learning:** Cognitive Services, Machine Learning - **DevOps:** Azure DevOps, Pipelines, Extensions ## Quick Start ### Installation **macOS:** ```bash brew install azure-cli ``` **Linux (Ubuntu/Debian):** ```bash curl -sL https://aka.ms/InstallAzureCliLinux | bash ``` **Windows:** ```powershell choco install azure-cli # Or download MSI from https://aka.ms/InstallAzureCliWindowsMSI ``` **Verify Installation:** ```bash az --version # Show version az --help # Show general help ``` ### First Steps ```bash # 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 ``` ## Essential Commands ### Authentication & Accounts ```bash 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 ``` ### Global Flags (Use with Any Command) ```bash --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 ``` ### Resource Groups ```bash 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 ``` ### Virtual Machines (Compute) ```bash 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 ``` ### Storage Operations ```bash 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 ``` ### Azure Kubernetes Service (AKS) ```bash 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 ``` ## Common Patterns ### Pattern 1: Output Formatting ```bash # 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" ``` ### Pattern 2: Automation & Scripting ```bash #!/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 ``` ### Pattern 3: Batch Operations ```bash # 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 ``` ### Pattern 4: Using Defaults ```bash # 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 ``` ## Helper Scripts This skill includes helper bash scripts for common operations: - **azure-vm-status.sh** — Check VM status across subscription - **azure-resource-cleanup.sh** — Identify and remove unused resources - **azure-storage-analysis.sh** — Analyze storage account usage and costs - **azure-subscription-info.sh** — Get subscription quotas and limits - **azure-rg-deploy.sh** — Deploy infrastructure with monitoring **Usage:** ```bash ./scripts/azure-vm-status.sh -g myResourceGroup ./scripts/azure-storage-analysis.sh --subscription mySubscription ``` ## Advanced Topics ### Output Querying with JMESPath Azure CLI supports powerful output filtering using JMESPath: ```bash # 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 ``` ### Error Handling ```bash # 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 ``` ### Authentication Methods **Service Principal (Automation):** ```bash az login --service-principal \ --username $AZURE_CLIENT_ID \ --password $AZURE_CLIENT_SECRET \ --tenant $AZURE_TENANT_ID ``` **Managed Identity (Azure Resources):** ```bash # On an Azure VM or Container Instance az login --identity ``` **Token-based (CI/CD):** ```bash echo "$AZURE_ACCESS_TOKEN" | az login --service-principal -u $AZURE_CLIENT_ID --password-stdin --tenant $AZURE_TENANT_ID ``` ## Key Resources - **Official Documentation:** https://learn.microsoft.com/en-us/cli/azure/ - **Command Reference:** https://learn.microsoft.com/en-us/cli/azure/reference-index - **GitHub Repository:** https://github.com/Azure/azure-cli - **Comprehensive Guide:** See [references/REFERENCE.md](references/REFERENCE.md) - **Release Notes:** https://github.com/Azure/azure-cli/releases ## Tips & Tricks 1. **Enable Tab Completion:** ```bash # macOS with Homebrew eval "$(az completion init zsh)" # Linux (bash) eval "$(az completion init bash)" ``` 2. **Find Commands Quickly:** ```bash az find "create virtual machine" # Search for commands ``` 3. **Use --no-wait for Long Operations:** ```bash az vm create -g RG -n VM --image UbuntuLTS --no-wait # Check status later with az vm show ``` 4. **Save Frequently Used Parameters:** ```bash az configure --defaults group=myRG location=eastus ``` 5. **Combine with Other Tools:** ```bash # 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 {} ``` ## Next Steps - Review [references/REFERENCE.md](references/REFERENCE.md) for comprehensive command documentation - Explore helper scripts in the `scripts/` directory - Practice with non-production resources first - Review Azure best practices and cost optimization strategies --- **Version:** 1.0.0 **License:** MIT **Compatible with:** Azure CLI v2.50+, Azure Subscription

More in DevOps & Cloud