Skip to main content

Lab setup

Every challenge requires an Azure subscription and command-line tools. This page walks you through both setup options.

The fastest way to get started | everything is pre-installed.

Open in GitHub Codespaces

Your Codespace comes pre-configured with:

  • Azure CLI (latest) with Bicep support
  • Azure PowerShell (Az module)
  • jq and yq for JSON/YAML manipulation
  • Git and GitHub CLI

GitHub Free accounts get 60 hours/month of Codespaces | more than enough to complete all challenges.

After opening Codespaces, log in to Azure:

# Login to Azure (opens a browser window)
az login --use-device-code

# Verify your subscription
az account show --output table

# Set your default subscription (if you have multiple)
az account set --subscription "YOUR_SUBSCRIPTION_NAME"

Option 2: local setup

If you prefer to work locally, install these tools:

ToolInstall CommandPurpose
Azure CLIInstall guidePrimary CLI tool
Bicepaz bicep installInfrastructure as Code
PowerShell 7+Install guideAlternative CLI
Az PowerShell ModuleInstall-Module -Name Az -ForceAzure PowerShell cmdlets
jqInstall guideJSON processing

Verify your setup:

az --version
az bicep version
pwsh --version
jq --version

Azure Subscription

You need an Azure subscription for all challenges except Challenge 07 (ARM/Bicep can be validated locally).

Free options

OptionCreditDurationCredit Card Required?
Azure Free Account$20030 daysYes (not charged)
Azure for Students$10012 monthsNo
Visual Studio Subscription$50-150/moMonthlyDepends on tier
Cost Management

All challenges include cleanup scripts. Always run cleanup after each challenge to avoid unexpected charges. Total cost for all 28 challenges is estimated at ~$5 with proper cleanup.

Resource naming convention

We use a consistent naming convention across all challenges:

rg-az104-challenge-XX # Resource group per challenge
staz104chXXxxxx # Storage accounts (globally unique)
vm-az104-XX # Virtual machines
vnet-az104-XX # Virtual networks

Quick setup script

Run this once to set up common variables used across all challenges:

# Set your preferred region
export LOCATION="eastus"

# Create a base resource group for shared resources
az group create --name rg-az104-shared --location $LOCATION

# Verify
az group list --output table
PowerShell equivalent
$Location = "eastus"
New-AzResourceGroup -Name "rg-az104-shared" -Location $Location
Get-AzResourceGroup | Format-Table

Setup complete? Start with Challenge 01: Entra ID Users & Groups.