
I don’t agree with statements like “Pulumi is good, Terraform is bad!”
Because these infrastructure-as-code tools that handle many providers rely on community contributions for each of them and they are usually not done by the same community. The quality of each of these providers or connectors varies.
For example, I find the Azure Pulumi provider for creating AKS clusters pretty bad. Creating an AKS cluster seems to come with weird defaults you cannot change and makes working with it a tough experience. On the opposite side are the AWS Pulumi providers (yes, plural) which work pretty well. The documentation is not that exhaustive, having to dig into the source code every now and then, but other than that it’s ok.
Some time ago when I was using Terraform with the vSphere module I had a lot of headaches with it with a strange timeout bug when setting up VMs, even though the other modules worked well. Ended up using Ansible for vSphere, because their module didn’t have that issue.
Does this make one tool or the other bad or good? No, these statements need more context.
Sure, some features (or lack of) might make one tool or the other incompatible with our needs in the moment, but in general all these statements should be more nuanced.
Ok, I confess, if there is one tool I will break this rule for is AWS CDK. I find it inconsistent. Case in point: try to tag all the resources you normally need when creating an EKS cluster using the L2 constructs.
Originally posted on LinkedIn.