Skip to main content
Version: 2604 (Preview)

Automation Guide

Runbook Azure

DOCUMENT CATEGORY: Runbook SCOPE: Infrastructure-as-Code, CI/CD platform setup, and automation tooling PURPOSE: Organize Azure Local automation guidance into a reader-friendly structure aligned to the implementation guide MASTER REFERENCE: Microsoft Learn - Azure Local

Status: Active

This guide centralizes the automation assets used to deliver Azure Local in a repeatable way. It is structured to mirror the implementation guide: start with orientation, move into CI/CD platform setup, then choose the pipeline platform and tooling that match your operating model.

Start Here​

StepPurposeLink
1Understand the guide's boundaries and intended readerPurpose and Scope
2Learn how to navigate between automation and implementation docsHow to Use This Guide
3Build the CI/CD foundationPart 1: CI/CD Infrastructure
4Choose a delivery platformPart 2: CI/CD Pipelines
5Use the tool-specific guidesPart 3: Automation Guides

Deployment Paths​

PathAzure ResourcesOn-Premises / Guest ConfigurationBest For
Terraform + PowerShellTerraformPowerShell scriptsTeams with existing PowerShell operational workflows
Terraform + AnsibleTerraformAnsible playbooksTeams preferring declarative configuration management
Ansible Onlyazure.azcollectionAnsible playbooksTeams standardizing on Ansible across cloud and on-premises

Why the Guide Is Split into Sections​

  • CI/CD Infrastructure covers the platform you must build first: source control project, environments, variables, and runners.
  • CI/CD Pipelines covers the delivery engine you choose to run on that platform: GitLab, GitHub Actions, or Azure DevOps.
  • Automation Guides covers the technical assets those pipelines call: Terraform, Ansible, Bicep, and PowerShell.

This separation keeps platform setup, delivery orchestration, and tool implementation from being mixed together on the same level of the sidebar.

Architecture​

┌─────────────────────────────────────────────────────────────────────┐
│ variables.yml │
│ (Single Source of Truth — 970+ variables) │
└────────────┬───────────────────┬──────────────────┬─────────────────┘
│ │ │
Export-TerraformTfvars Export-AnsibleVars Export-BicepParams
│ │ │
▼ ▼ ▼
terraform.tfvars group_vars/all.yml *.bicepparam
│ │
▼ ▼
┌─────────────┐ ┌───────────────┐
│ Terraform │ │ Ansible │
│ Modules │ │ Roles │
├─────────────┤ ├───────────────┤
│ landing-zone│ │ ad-preparation│
│ networking │ │ os-config │
│ identity │ │ arc-register │
│ monitoring │ │ monitoring │
│ security │ │ domain-ctrl │
│ compute │ │ wac-server │
└──────┬──────┘ │ syslog │
│ └───────┬───────┘
▼ ▼
Azure Resources On-Prem Config

Section Overview​

SectionWhat You Get
Purpose and ScopeReader expectations, deployment paths, scope boundaries
How to Use This GuideReading order and how to combine this guide with the implementation guide
Part 1: CI/CD InfrastructureRunner deployment, project setup, environments, and variables
Part 2: CI/CD PipelinesPlatform-specific delivery pipeline models
Part 3: Automation GuidesTool-specific guidance for Terraform, Ansible, Bicep, and PowerShell

Variable System​

All automation consumes the central config/variables/variables.yml file. Export functions transform YAML into tool-specific formats:

. scripts/common/utilities/helpers/config-loader.ps1
$config = Get-Config -ConfigPath "config/variables/variables.yml"

Export-TerraformTfvars -Config $config -OutputPath "src/terraform/environments/azure-local/terraform.tfvars"
Export-AnsibleVars -Config $config -OutputPath "src/ansible/inventory/group_vars/all.yml"

Repository​

All automation code lives in the azurelocal-toolkit repository:

DirectoryContents
src/terraform/Terraform modules and root environment
src/ansible/Ansible roles, playbooks, and inventory
pipelines/CI/CD pipeline definitions
scripts/deploy/PowerShell deployment scripts
config/variables/Central variable system