prehistoric-egg-84122
12/31/2025, 1:38 AMprehistoric-egg-84122
12/31/2025, 1:39 AMrequest
→ IDP (generate or modify git-based Pulumi code)
→ IDP (clone & apply via Automation API)
Which implies:
• The IDP generates or modifies Pulumi programs (e.g. index.ts)
• Those programs live in Git
• Pulumi executes them via Automation API
• The same repo can be operated via CLI when needed
This works—but it feels heavy, and I'm not fully confident it's the right abstraction boundary.
What I'd really like feedback on
My core concern is this:
Is it the right approach for an IDP to generate and modify programming language code (e.g. TypeScript) to persist infrastructure definitions in Git?
If it were YAML, parsing and modifying would be straightforward. But generating and modifying actual programming language code from an IDP feels fundamentally more complex and fragile.
• Is this a common or accepted pattern for Pulumi-based IDPs?
• Is this an inevitable outcome of using Pulumi "correctly", or a sign we're overcomplicating things?
• Are there simpler or more established patterns people use in practice for this problem?
Any insights, war stories, or references would be hugely appreciated. Thanks in advance 🙏chilly-sunset-85353
12/31/2025, 3:05 AMchilly-sunset-85353
12/31/2025, 3:05 AMchilly-sunset-85353
12/31/2025, 3:11 AMchilly-sunset-85353
12/31/2025, 3:14 AMbrave-planet-10645
12/31/2025, 8:39 AMprehistoric-egg-84122
01/02/2026, 2:28 AMComponentResource that represents our canonical application setup, and the IDP consumes these ComponentResources to execute them as inline programs.
That said, we still find ourselves with the concerns I described earlier, which is why I wanted to ask this question more explicitly.
What IaC should guarantee (in our view)
Regardless of tool choice, we believe IaC should ensure:
• Infrastructure configuration always leaves artifacts (code + state remain for inspection, recovery, and audit)
• The same infrastructure code must be operable via: ◦ CLI (for import, migration, emergency fixes) ◦ API / Automation (CI, IDP)
• Common infrastructure patterns should be reusable and modular
• Git should remain the source of truth
Additional context on our approach
To summarize my thinking, the code that lives in Git would ideally look something like this:
// base workload
new CustomEcs()
// optional capabilities
new CustomS3()
new CustomRds()
new CustomKinesis()
new CustomRedis()
In other words, the core dilemma I'm grappling with is inline programs (constructing the Pulumi program purely in memory and discarding it) versus using Git as the system of record.
When I mentioned "generating code" earlier, I was referring specifically to generating code like the above—just the control logic for invoking reusable components, nothing more.
• This naturally raises another important question for us:
• what is the safest and most maintainable way to generate or manage this kind of application-level Pulumi code?
â—¦ ex. using pulumi cli like pulumi new..~~
Any additional perspective—especially based on real-world experience—would be extremely helpful. Thanks again!