Skip to content

Create master variables registry to standardize variables across all repos #4

@kristopherjturner

Description

@kristopherjturner

Problem

Variables across all Azure Local repos are not standardized. Each repo defines its own variables.example.yml with inconsistent naming, types, and defaults. When two repos need to reference the same concept (e.g., FSLogix share paths, Azure Local infrastructure IDs, subscription details), the variable names and structures diverge.

Examples of current mismatches:

  • AVD repo uses fslogix.share_path format; SOFS repo uses sofs.share_name — these refer to the same SMB share
  • Both repos define azure_local.custom_location_id, azure_local.logical_network_id but with slightly different structures
  • keyvault:// URI patterns are used in both but documented differently

Proposal: Master Variables Registry

Create a centralized master variables registry that serves as the single source of truth for all variable definitions across the Azure Local organization.

Requirements

  1. Registry format — A structured YAML/JSON schema file that defines every variable used across all repos
  2. Meta-tagging — Each variable should be tagged with:
    • repos: Which repos use this variable (e.g., [avd, sofs, toolkit])
    • scope: Whether it's global, solution-specific, or environment-specific
    • type: Data type and validation rules
    • canonical_name: The standardized name all repos must use
    • description: Human-readable purpose
    • default: Default value if applicable
  3. Validation tooling — CI check that validates each repo's variables.example.yml against the master registry
  4. Code generation — Optionally auto-generate per-repo variable schemas from the master registry
  5. Breaking change detection — Flag when a repo introduces a variable that conflicts with the registry

Proposed Location

azurelocal-toolkit/config/registry/variables-registry.yml — hosted in the toolkit repo as a cross-cutting concern.

Example Registry Entry

variables:
  azure_local.custom_location_id:
    canonical_name: azure_local.custom_location_id
    type: string
    format: azure_resource_id
    description: "ARM resource ID of the Azure Local custom location"
    repos: [avd, sofs, toolkit, loadtools]
    scope: global
    required: true

  fslogix.topology:
    canonical_name: fslogix.topology
    type: enum
    values: [single, split, cloud_cache]
    description: "FSLogix share topology strategy"
    repos: [avd, sofs]
    scope: solution
    default: single

Acceptance Criteria

  • Audit all variables.example.yml files across all 6 repos
  • Define master registry schema
  • Create initial registry with all discovered variables
  • Add meta-tagging for repos, scope, type
  • Create CI validation action that runs on PR to any repo
  • Document the registry in azurelocal-toolkit README
  • Migrate existing repos to use canonical variable names (breaking change plan)

Affected Repos

All repos: azurelocal-avd, azurelocal-sofs-fslogix, azurelocal-toolkit, azurelocal-loadtools, azurelocal-vm-conversion-toolkit, azurelocal.github.io

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions