#software/infrastructure/terraform #software/infrastructure/cloudformation #software/infrastructure/arm #software/infrastructure/crossplane

Background

Infrastructure of code works well.

But does it work well enough?

The go-to-tool for infra-as-code is usually Terraform. Other options exist. There are cloud-provider-specific tools like CloudFormation for AWS, Bicep for Azure (or ARM templates for the traditionalists), and GCP has it's own thing.

Other coding tools are available that try to abstract the problem in other ways. E.g., Pulumi and the AWS CDK.

Terraform is the go-to though, and the one that I have the most experience in. (These days though, following the Terraform license change, I default to OpenTofu.)

Terraform challenges

These things are bothersome. And some of them apply to other infra-as-code tools as well.

Alternatives

I have been very interested in Crossplane recently. It installs an Operator on Kubernetes, and manages cloud provider infrastructure.

This article does a good job of elaborating on how Crossplane can help with some of the challenges traditionally associated with Infrastructure as code: Outgrowing Terraform and adopting control planes


  1. Separate repos for each module let's you version branch modules independently of other things. If you have a module monorepo then you can end up in tag management hell. ↩︎