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
networkCidrAzure Table is used for inventory. All configuration comes from AppSettings (no separate Azure Table for config).