Skip to main content
Version: 1.0.0

Infrastructure Standards

Canonical reference: Infrastructure Standards (full)
Applies to: All AzureLocal repositories
Last Updated: 2026-04-02


Overview

Standards for Infrastructure as Code (IaC), Terraform state management, and deployment processes for AzureLocal solutions.


Infrastructure Types

All infrastructure is classified by type. These are the only valid infrastructure types, defined in the master registry:

TypeDescriptionRepository
azure_localAzure Local hyper-converged clustersazurelocal-toolkit
avd_azureAzure Virtual Desktop in Azure cloudazurelocal-avd
avd_azure_localAzure Virtual Desktop on Azure Localazurelocal-avd
sofs_azure_localScale-Out File Server on Azure Localazurelocal-sofs-fslogix
aks_azure_localAzure Kubernetes Service on Azure Localazurelocal-toolkit
loadtoolsPerformance and load testing toolsazurelocal-loadtools
vm_conversionVM generation conversion toolkitazurelocal-vm-conversion-toolkit
copilotAI-assisted operationsazurelocal-copilot

Infrastructure Pipeline

flowchart LR
A[Generate Variables] --> B[Validate Config]
B --> C[Plan Infrastructure]
C --> D[Review Changes]
D --> E[Apply Changes]
E --> F[Update State]

State Management

PrincipleRule
Remote stateStore Terraform state in Azure Storage Account
State lockingEnable locking during all operations
BackupRegular state file backups before destructive operations
Naming<solution>-<env>.tfstate (e.g., platform-prod.tfstate)

IaC Tool Parity

All tools must produce identical infrastructure when given the same configuration values:

ToolPrimary FormatState Management
Terraform.tf / .tfvarsRemote state in Azure Storage
Bicep.bicep / .bicepparamARM deployment history
ARM.jsonARM deployment history
PowerShell.ps1Config-driven, logged
Ansible.ymlInventory-based

Deployment Phases

PhaseScopeTools
Phase 1: Azure FoundationResource groups, networking, Key Vault, storageTerraform, Bicep, ARM
Phase 2: Compute & WorkloadVMs, clusters, workload deploymentTerraform, PowerShell
Phase 3: ConfigurationGuest config, monitoring, policiesPowerShell, Ansible

Toolkit Repository Structure

The azurelocal-toolkit repository is the reference implementation. All other repos follow the same top-level layout where applicable.

azurelocal-toolkit/
├── config/
│ ├── azure/ # ARM templates, discovery, iDRAC, service principals, utilities
│ └── variables/ # Variable system (see Variable Standards)
│ ├── variables.example.yml # Template (committed)
│ ├── variables.yml # Your config (gitignored)
│ ├── reports/ # Generated validation reports
│ ├── schema/ # JSON Schema, master registry, alias/drift policy files
│ └── scripts/ # Validation and generation scripts
├── docs/ # Repo-local documentation
├── logs/ # Runtime logs (gitignored)
├── pipelines/ # CI/CD pipeline definitions
├── project_management/ # Planning docs, ADRs, decision logs
├── scripts/
│ ├── common/ # Shared modules: ansible, arm-templates, bicep, terraform
│ ├── deploy/ # Task scripts — mirrors docs/implementation structure (see below)
│ ├── handover/
│ │ ├── customer-transfer/ # Handover checklists and artifacts
│ │ └── documentation/ # Generated customer-facing docs
│ ├── lifecycle/
│ │ ├── operations/ # Day-2 operational scripts
│ │ └── updates/ # Patch and update automation
│ ├── tools/ # Contributor tooling (script templates, install helpers)
│ └── validation/ # Health checks and test suites
│ ├── arc-tests/
│ ├── cluster-health/
│ ├── network-tests/
│ ├── storage-tests/
│ └── workload-tests/
├── src/ # IaC source: ansible, arm-templates, bicep, terraform
├── styles/ # Shared style/lint config
├── tests/ # Automated test harness
└── tools/ # Repo-level tools (Generate-SolutionConfig.ps1, planning/)

scripts/deploy/ Task Contract

Every task folder under scripts/deploy/ mirrors the path of its corresponding doc in docs/implementation/ and contains exactly three subdirectories:

scripts/deploy/<part>/<phase>/<task>/
├── azurecli/ # Azure CLI scripts (.ps1 using az commands, or .sh)
├── bash/ # Pure Bash scripts (.sh)
└── powershell/ # PowerShell scripts (.ps1)

Top-level parts and their phases:

PartPhases
01-cicd-infraphase-01-cicd-setup
02-azure-foundationphase-01-landing-zones, phase-02-resource-providers, phase-03-rbac-permissions, phase-04-azure-management-infrastructure, phase-05-identity-security
03-onprem-readinessphase-01-active-directory, phase-02-enterprise-readiness, phase-03-network-infrastructure
04-cluster-deploymentphase-01-hardware-provisioning, phase-02-os-installation, phase-03-os-configuration, phase-04-arc-registration, phase-05-cluster-deployment, phase-06-post-deployment
05-operational-foundationsphase-01-sdn-deployment, phase-02-monitoring-observability, phase-03-backup-dr, phase-04-security-governance, phase-05-licensing-telemetry
06-testing-validation(tasks directly under part)
07-validation-handover(tasks directly under part)