OK - Trigger warning… I started looking at Pulumi ...
# general
g
OK - Trigger warning… I started looking at Pulumi as an alternative to Terraform, with a strong preference for Python…. I had high hopes for a cloud agnostic toolset that I could wrap into Python TDD/best practices… I’ve been watching & contributing to conversations around Pulumi where possible, but I’m fast coming to the conclusion its not worth the additional layers of complication and specific code nuances - lambda’s to access config - really…..? Has what started out as a great concept, just ended up too complex…? It seems the added complication of Pulumi specific syntax/code is a bigger challenge than TF or just using native IaC with Cloud vendor specific coding… What am I missing?
c
Are you referring to needing to handle pulumi.Outputs when you really want a string?
g
Partially, but overall its the additional complications. With TF, you just define resources and handle them logically - it makes sense - same with Python/boto3. With Pulumi, there’s additional coding needed to handle logic that should be hidden from the user. The ‘smarts’ should be in the tooling, not in the coding skills of the user/consumer. I should just be able to define my requirements & the tooling manages the complications behind the delivery…
c
You'd have to be more specific with an example.. if you're talking about the classic AWS provider - its pretty much 1:1 to terraform in terms of resources required.
b
yeah this seems like a lazy take:
overall its the additional complications
What additional complications?
With TF, you just define resources and handle them logically
Until you need to use a language construct like
dynamic
for example. Or you need to omit a resource from the graph
worth the additional layers of complication and specific code nuances
is there an actual example of this?
Pulumi specific syntax
The only Pulumi specific syntax is the
Output
method, otherwise the logic is handled specifically by the language interpreter
same with Python/boto3
boto3 requires thousands of lines of handler code to deal with building a resource graph and imperative actions. This statement makes zero sense
i
Paul, the easiest way to resolve this would be to provide an example with code. I've used both Terraform and Pulumi and find Pulumi to be much more powerful and practical, especially having access to the best practices that have been codified into Pulumi assets by the community.
g
Thanks for responses. I’ll prep something by way of further clarity (I’m offline ill atm). This will be helpful for me to understand the actual issues around outputs etc anyways. One area of concern is knowing when/where I can use what I’d call native refs such as my_bucket.id vs when I actually need to use apply etc. I’m still very much a noob, so my knowledge gaps may be part of the issue…