Skip to content

Prerequisites

An active Azure subscription with permission to create:

  • Resource groups
  • Virtual networks and subnets
  • Network security groups
  • Public IP addresses
  • Virtual machines (Standard_D16s_v3 — 16 vCPU, 64 GiB RAM for 41-container workloads)

Install and authenticate the Azure CLI:

Terminal window
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash
az login
az account show --query '{name:name, id:id}' -o table

Terraform >= 1.5 is required:

Terminal window
terraform version

If not installed, use the HashiCorp APT repository:

Terminal window
wget -O- https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform

Your Azure AD account must have User.Read permissions. The deployer identifier (used in resource naming) is automatically derived from your Azure AD profile. For service principal or managed identity authentication, set the deployer Terraform variable explicitly.

An SSH key pair for VM access:

Terminal window
ssh-keygen -t ed25519 -f ~/.ssh/origin-server-key -N ""
ResourceSKU
Ubuntu 24.04 VMStandard_D16s_v3 (16 vCPU, 64 GiB)
Public IPStandard, Static
OS Disk60 GiB Premium SSD
VNet + NSGDefault

See the Azure pricing calculator for current costs. Use terraform destroy when the lab is not in use to stop charges. See Teardown for the procedure.