Skip to content

Configuration

This document tracks every App Setting, environment variable, or configuration toggle that the IPAM Function App requires. Update this file in the same commit that introduces or changes a setting.

Application Settings

All configuration should be externalized as application settings (environment variables) to avoid redeployment for changes. Maintain this master list and update it whenever new settings are added.

IMPORTANT: No hardcoded configuration values are permitted in source code. All settings listed as "Required" must be configured or the function will fail to start. Default values shown in the "Example Value" column are for reference only and must be explicitly configured.

Setting Name Description Example Value Required
MANAGER_TIMER_SCHEDULE Timer trigger schedule for Function A (Manager) 0 */15 * * * * (every 15 minutes) Yes
CIDR_SIZE_MIN Minimum valid CIDR prefix length 20 Yes
CIDR_SIZE_MAX Maximum valid CIDR prefix length 26 Yes
CIDR_SIZE_DEFAULT Default CIDR prefix length when not specified 22 Yes
LEASE_DURATION_HOURS Lease expiration duration in hours 4 Yes
SUPERNETS_CONFIG JSON configuration defining subscription/region/supernet scopes See configuration structure below Yes
SCOPE_CONFIG_MANIFEST JSON configuration defining the allocation manifest (which partitions, how many networks) See manifest structure below Yes
AzureWebJobsStorage Storage account connection string (Standard Azure Functions setting) Yes
APPLICATIONINSIGHTS_CONNECTION_STRING Application Insights connection string (Standard Azure Functions setting) Yes

Note: Add to local.settings.json if the key needs to be set for testing locally.

Configuration Structures

Supernet Configuration (SUPERNETS_CONFIG)

The configuration is a JSON array defining subscription/region/supernet mappings. Each subscription can have multiple regions, each with its own Supernet scope. This enables multi-region support within a single subscription (standard Azure Landing Zone pattern).

[
  {
    "SubscriptionId": "${ProdSubscriptionId}",
    "Scopes": [
      {
        "Region": "westus2",
        "Supernet": "10.220.0.0/16"
      },
      {
        "Region": "westcentralus",
        "Supernet": "10.120.0.0/16"
      }
    ]
  },
  {
    "SubscriptionId": "${DevSubscriptionId}",
    "Scopes": [
      {
        "Region": "westus2",
        "Supernet": "10.221.0.0/16"
      }
    ]
  }
]

Manifest Configuration (SCOPE_CONFIG_MANIFEST)

The manifest defines the business logic for network allocation - which partitions to query and how many networks to allocate from each. This is the "bundle definition" that determines what a single request returns.

{
  "default": [
    {
      "SubscriptionGuid": "b0b0b0b0-0000-0000-0000-000000000000",
      "Description": "Networks for Dev and Qa environments.",
      "Supernet": "10.221.0.0/16",
      "Region": "westus2",
      "Size": 22,
      "Count": 2
    },
    {
      "SubscriptionGuid": "a0a0a0a0-0000-0000-0000-000000000000",
      "Description": "Networks for Uat and Prod environments.",
      "Supernet": "10.220.0.0/16",
      "Region": "westus2",
      "Size": 22,
      "Count": 2
    },
    {
      "SubscriptionGuid": "a0a0a0a0-0000-0000-0000-000000000000",
      "Description": "Network for the future Prod DR environment.",
      "Supernet": "10.219.0.0/16",
      "Region": "westcentralus",
      "Size": 22,
      "Count": 1
    }
  ]
}

Configuration Notes:

  • The Supernet is the unit of management, not the Subscription.
  • Multiple regions in one subscription are supported (standard Azure Landing Zone pattern).
  • Each region/scope is processed independently.
  • Adding new regions or subscriptions only requires updating the JSON configuration.
  • The Manifest can be stored in AppSettings or as a JSON file in the repo (loaded on function startup).
  • Storage: Only the networkCidr Azure Table is used for inventory. All configuration comes from AppSettings (no separate Azure Table for config).