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