ADR-0004: Pulumi over Bicep for Infrastructure as Code¶
- Status: Accepted
- Date: 2026-01-01
- Deciders: Cloud Architect, DevOps Architect
- Tags: iac, devops, cloud
Context¶
The factory provisions its own infrastructure and the infrastructure of generated runtimes, and must re-provision in a secondary region for disaster recovery. Earlier specs referenced Bicep. The team prefers IaC authored in the same language as the platform (.NET/C#), with reusable components and strong testing.
Decision¶
Use Pulumi (.NET/C#) as the primary IaC tool, executed by the DevOps / GitOps IaCProvisioningService. Bicep is treated only as a legacy alternative.
Consequences¶
Positive¶
- IaC in C#: shared types, unit-testable infrastructure, reusable components aligned with generation.
- Multi-cloud-capable and consistent with the agent-generated programming model.
Negative / trade-offs¶
- Pulumi state backend must be managed; residual Bicep references reframed as legacy.
Neutral¶
- Provisioning runs through governed pipelines with approval gates.
Alternatives considered¶
| Alternative | Why not chosen |
|---|---|
| Bicep | Azure-only DSL; not aligned with C# generation and reuse model. Retained as legacy alternative. |
| Terraform (HCL) | Separate language/toolchain; less aligned with the .NET generation model. |