This repository implements an atomic design approach for Azure infrastructure-as-code using Bicep. It is organized into two main categories:
Located in the bicep/modules/ directory, these are small, reusable Bicep modules representing individual Azure resources (e.g., storage accounts, key vaults, app services). Each module is designed to be composable and independently deployable.
Located in the bicep/templates/ directory, these are higher-level Bicep templates that combine multiple modules (atoms) to define more complex Azure solutions or environments. Organisms orchestrate the deployment of multiple resources as a cohesive unit.
- Atomic Design: Promotes reusability, maintainability, and clarity by separating infrastructure into atoms (modules) and organisms (templates).
- Validation: Supports validation of deployments using Azure's deployment group what-if operation, allowing you to preview changes before applying them.
- Deployment: Deploys resources using
az deployment group createfor robust, repeatable, and auditable infrastructure provisioning.
Preview the impact of a deployment without making changes:
az deployment group what-if \
--resource-group <your-resource-group> \
--template-file <path-to-template.bicep> \
--parameters <parameters-file>Deploy a Bicep template (organism) to your Azure resource group:
az deployment group create \
--resource-group <your-resource-group> \
--template-file <path-to-template.bicep> \
--parameters <parameters-file>bicep/modules/— Atomic Bicep modules (atoms)bicep/templates/— Composite Bicep templates (organisms)bicep/variables/— Environment-specific.bicepparamfiles for templatesscripts/— PowerShell and CLI scripts for automationvariables/— Parameter and variable files
This repository includes a standalone Azure AI Foundry deployment path that avoids private networking and enterprise landing-zone dependencies.
- Module:
bicep/modules/aif-foundry.bicep - Template:
bicep/templates/landingzone-standalone-ai-foundry.bicep - Variables:
bicep/variables/landingzone-standalone-ai-foundry-dev.bicepparam
- Deploys Azure AI Foundry hub (
Microsoft.CognitiveServices/accounts, kindAIServices). - Deploys Azure AI Foundry project resource.
- Deploys a configurable model deployment.
- Outputs endpoint and deployment identifiers for provider integration.
az deployment group what-if \
--resource-group <your-resource-group> \
--template-file bicep/templates/landingzone-standalone-ai-foundry.bicep \
--parameters bicep/variables/landingzone-standalone-ai-foundry-dev.bicepparamaz deployment group create \
--resource-group <your-resource-group> \
--template-file bicep/templates/landingzone-standalone-ai-foundry.bicep \
--parameters bicep/variables/landingzone-standalone-ai-foundry-dev.bicepparamUse deployment outputs with your provider abstraction:
{
"AgentProvider": {
"Provider": "Foundry",
"Endpoint": "<foundry-endpoint>",
"Deployment": "default"
}
}- Local/self-hosted option: Ollama
- Managed cloud option: Azure AI Foundry
- Existing managed option: Azure OpenAI
Switching providers should remain configuration-driven through your AgentProviderOptions pattern.
This repository includes a standalone Ollama deployment path using Azure Container Apps with internal ingress and persistent model storage.
- Module:
bicep/modules/aca-ollama.bicep - Template:
bicep/templates/platform-standalone-ai-ollama.bicep - Variables:
bicep/variables/platform-standalone-ai-ollama-dev.bicepparam
- Deploys Azure Container Apps managed environment.
- Deploys Azure Container App running
ollama/ollama. - Configures internal-only ingress (
external: false). - Pulls configured model at startup.
- Persists downloaded models to Azure Files mounted into the container.
az deployment group what-if \
--resource-group <your-resource-group> \
--template-file bicep/templates/platform-standalone-ai-ollama.bicep \
--parameters bicep/variables/platform-standalone-ai-ollama-dev.bicepparamaz deployment group create \
--resource-group <your-resource-group> \
--template-file bicep/templates/platform-standalone-ai-ollama.bicep \
--parameters bicep/variables/platform-standalone-ai-ollama-dev.bicepparamAzure-hosted Ollama:
{
"AgentProvider": {
"Provider": "Ollama",
"Endpoint": "http://<ollama-internal-fqdn>",
"Model": "phi4"
}
}Local development:
{
"AgentProvider": {
"Provider": "Ollama",
"Endpoint": "http://localhost:11434",
"Model": "phi4"
}
}Both use the same provider shape and differ only by environment-specific configuration values.
Contributions are welcome! Please ensure new modules and templates follow the atomic design principles and include documentation and sample parameters.
This project is licensed under the MIT License. See the LICENSE file for details.