Skip to content

RFC: IaC strategy — Pulumi integration vs first-party IaC primitive #286

Description

@ChrisonSimtian

Part of the Continuous Delivery Vision (#8). The strategic fork for the infrastructure-as-code pillar identified in the taxonomy RFC (#285).

The fork

For the IaC side of CD, two broad directions:

A) Pulumi integration

Lean on Pulumi (already C#-native, multi-cloud, mature provider ecosystem) and give Fallout a clean integration surface. Users who want IaC bring Pulumi; Fallout orchestrates it.

  • ➕ Massive provider coverage for free; no reinventing cloud APIs.
  • ➕ Lowest maintenance; users can already do this themselves today.
  • ➖ External dependency + runtime; another tool/state backend in the chain.
  • ➖ Less "code-first Fallout-native" feel.

B) First-party IaC primitive ("be cheeky and write our own")

A Fallout-native declare/plan/apply primitive (cf. #249 Fallout.Reconcile), with provider adapters tested against the emulators (Topaz/LocalStack/GCP emulators) and Proxmox.

  • ➕ Fully code-first, single tool, consistent with Fallout's C#-native ethos.
  • ➕ Tight fit with our plan/apply + CD primitives.
  • ➖ Enormous surface to build and maintain (cloud APIs, drift, state).
  • ➖ Competing with Pulumi/Terraform on their home turf.

Probably not binary

A middle path exists: ship the integration (A) as the pragmatic near-term answer and build a narrow first-party primitive (B) for the targets where we control the emulator cheaply (Proxmox/on-prem first?). This RFC is where we decide the sequencing.

Open questions

Design issue — no implementation commitment.

Metadata

Metadata

Assignees

No one assigned

    Labels

    RFCDesign discussion / RFC. Comment with feedback; consensus shapes the implementation.enhancementNew feature or requesttarget/vNextTargets the next calendar-version

    Type

    No type

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions