Skip to content

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.