Terraform Is Not the Golden Hammer

This page summarizes the projects mentioned and recommended in the original post on news.ycombinator.com

Our great sponsors
  • InfluxDB - Power Real-Time Data Analytics at Scale
  • WorkOS - The modern identity platform for B2B SaaS
  • SaaSHub - Software Alternatives and Reviews
  • terraform

    Terraform enables you to safely and predictably create, change, and improve infrastructure. It is a source-available tool that codifies APIs into declarative configuration files that can be shared amongst team members, treated as code, edited, reviewed, and versioned.

  • I wish Terraform were less opinionated. It has a very clear set of rules you have to adhere to, and if you try to do anything remotely complex you will encounter barriers left and right.

    An example is the fact that `for_each` is not supported on providers [1], an issue with 230 likes which has been since January 2019. This had me resort to a Python scripts which generates a `.tf.json` file, definitely not ideal. Infrastructure as code sounds great, but in practice it's closer to "infrastructure as a non-standard markup language".

    [1]: https://github.com/hashicorp/terraform/issues/19932

  • terraform-provider-minio

    Terraform provider for the Minio object storage.

  • I recently wrote a very simple custom provider for Minio (the object storage server) in an afternoon. [1]

    Getting a functional provider is really not that hard.

    But there are indeed a lot of difficulties in dealing with the many edge cases, state divergence, upstream version changes, properly testing everything...

    I always prefer to things that have an official Terraform provider.

    [1] https://github.com/refaktory/terraform-provider-minio

  • InfluxDB

    Power Real-Time Data Analytics at Scale. Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.

    InfluxDB logo
  • terraform-provider-restapi

    A terraform provider to manage objects in a RESTful API

  • I've used https://github.com/Mastercard/terraform-provider-restapi successfully with a cloud provider which provides a suitable HTTP API. There was a bit of fiddling with JSON formatting and their API docs, but it wasn't too hard all in all.

    But like you say - now I've done that, I want to do it for every UI that I'm forced to log in to!

  • terraform-cdk

    Define infrastructure resources using programming constructs and provision them using HashiCorp Terraform

  • Terraform is also working on allowing actual code: https://github.com/hashicorp/terraform-cdk

  • crossplane

    The Cloud Native Control Plane

  • There are a lot of developments around using Kubernetes as an IaC platform for the reasons in your comment. The combination of a standard API model in CRDs + the controller model maps nicely to managing infrastructure and exposing resources to developers.

    <https://crossplane.io> just graduated to CNCF Incubation and each of the cloud providers are working on K8s controllers and code generators (like Amazon Controllers for Kubernetes, Google Config Connector, and the Azure service operator).

  • WorkOS

    The modern identity platform for B2B SaaS. The APIs are flexible and easy-to-use, supporting authentication, user identity, and complex enterprise features like SSO and SCIM provisioning.

    WorkOS logo
NOTE: The number of mentions on this list indicates mentions on common posts plus user suggested alternatives. Hence, a higher number means a more popular project.

Suggest a related project

Related posts