Skip to content

Comment on Rethinking Infrastructure as Code from Scratchparent

Comments

Why not Bicep?

https://learn.microsoft.com/en-us/azure/azure-resource-manag...

I have found it quite joyful to use with Azure.

Looks to me like a vendor specific language with limited capabilities compared to others. Just use Pulumi TypeScript (self hosted). I'm not affiliated with Pulumi, it's just that unjustified vendor lock-in infuriates me.

Bicep has limitations which makes it non-declarative even though it is marketed as declarative: https://learn.microsoft.com/en-us/azure/azure-resource-manag...

MSFT is trying to add features to make this better, but it is not in production yet: https://github.com/Azure/bicep/issues/10460

Additionally, Bicep does not support interacting with Azure Active Directory: https://github.com/Azure/bicep/issues/7724

So it really is not very useful. Terraform is better in almost every single conceivable way.

We use it in our company to provision all our cloud resources. Granted, you can't create app registrations and such with it (yet) like you mentioned, and there are rough spots, but I think that is quite far from "not very useful".

I also worked for a company that used it, but the reasons they used it seemed almost entirely political.

Also, the issues I highlighted are quite old, I don't think deployment stacks will exist before 2024.

And not deleting resources, including role assignments, when they are deleted from your IAC source files makes it sub-optimal by Microsoft's own reckoning https://learn.microsoft.com/en-us/devops/deliver/what-is-inf...

IaC should use declarative definition files if possible.

Bicep just is not good. It may be better than nothing, but there are better alternatives.

AboutSource Built by g1lg1l

Hackerly is an independent reader for Hacker News, built on the public HN API. Not affiliated with Y Combinator.