Terraform 1.0 Release

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

SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
  1. 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.

    Yes, however this will work (typically) if the cluster already exists (a previous run), but typically not if you creating the cluster, and kubernetes provider, as part of the same run.

    IIRC you'll end up with a kubernetes provider without auth (typically pointing at your local machine), which is 1, not helpful, and 2) can be actively bad.

    I believe the core issue here is that providers don't have the ability to specify a `depends_on` relation: https://github.com/hashicorp/terraform/issues/2430

  2. SaaSHub

    SaaSHub - Software Alternatives and Reviews. SaaSHub helps you find the best software and product alternatives

    SaaSHub logo
  3. Pulumi

    Pulumi - Infrastructure as Code in any programming language 🚀

    You may be interested in Pulumi: https://www.pulumi.com/

    Basically it's Terraform but instead of declaring your resources in HCL, you declare them in a real programming language. You're still producing a declarative config that the engine then diffs, applies etc. In fact, it's compatible with existing terraform providers, so it has a surprisingly large selection of things you can use it for.

    Note their docs will try to guide you towards using their hosted service which basically does nothing except host the state file, but you can use an S3 or GCS bucket instead and it works fine.

    It's definitely not without its own problems, but I'd say it's overall an improvement.

  4. terragrunt

    Terragrunt is a flexible orchestration tool that allows Infrastructure as Code written in OpenTofu/Terraform to scale.

    Have you tried Terragrunt [0]? It helps a lot with managing a set of related stacks. Still feels like a bandaid on a broken model, but it is what we have.

    [0] https://terragrunt.gruntwork.io/

    Regarding performance, last time I looked, Hashicorp's documentation implied there was no limit to the size of a Terraform stack. I think they meant theoretically in a science fiction universe where humanity had converted all of the sun's output to performing terraform plan and apply...

  5. terraform-cdk

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

    People mention pulumi but hashicorp are creating something similar with https://github.com/hashicorp/terraform-cdk. But all the existing terraform providers work with it afaik.

  6. mazzle

    Discontinued run server for building large and complicated consistent environments http://devops-pipeline.com

    I use a tool I wrote to layer my infrastructure with layers called components and I configure it with a Graphviz file.

    My tool, called mazzle (previously devops-pipeline) would run parts of the graph that can run in parallel in parallel. It can also run parts of the build on SSH workers. You bring up the workers at the beginning of the build.

    Here's an example of a graph generated from graphviz file: https://github.com/samsquire/mazzle/blob/master/docs/archite...

    This graph brings up a hashicorp vault server, Java application, bastion proxy etc.

    here's the graphviz file: https://github.com/samsquire/mazzle-starter/blob/master/arch...

    It describes the ordering of the infrastructure, the invocation of Ansible, packer, shell scripts to set up vault etc.

    The idea is to be able to bring up a new environment by changing one parameter. There's a React GUI too.

    https://devops-pipeline.com

  7. mazzle-starter

    Discontinued infrastructure built using devops-pipeline

    I use a tool I wrote to layer my infrastructure with layers called components and I configure it with a Graphviz file.

    My tool, called mazzle (previously devops-pipeline) would run parts of the graph that can run in parallel in parallel. It can also run parts of the build on SSH workers. You bring up the workers at the beginning of the build.

    Here's an example of a graph generated from graphviz file: https://github.com/samsquire/mazzle/blob/master/docs/archite...

    This graph brings up a hashicorp vault server, Java application, bastion proxy etc.

    here's the graphviz file: https://github.com/samsquire/mazzle-starter/blob/master/arch...

    It describes the ordering of the infrastructure, the invocation of Ansible, packer, shell scripts to set up vault etc.

    The idea is to be able to bring up a new environment by changing one parameter. There's a React GUI too.

    https://devops-pipeline.com

  8. terraform-provider-spacelift

    Terraform provider to interact with Spacelift

    We have a big amount of available resources inside of our Spacelift provider[0] weights ~20 MB.

    It'll probably mostly depend on the libraries you use.

    [0]:https://github.com/spacelift-io/terraform-provider-spacelift...

  9. dhall-lang

    Maintainable configuration files

    This would be great. Perhaps it could be based on https://dhall-lang.org/

  10. aws-cloudformation-resource-providers-rds

    The CloudFormation Resource Provider Package For Amazon Relational Database Service

    Merely as the technical answer to your question, not as advocacy: CFN has custom providers [0] and they've started publishing quite a few implementations on GH (but I haven't tried them to know if they're for real): e.g. https://github.com/aws-cloudformation/aws-cloudformation-res...

    As far as I know, it is possible to bridge terraform providers into a CFN stack using that mechanism, similar to how Pulumi works

    0: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGui...

  11. Merely as the technical answer to your question, not as advocacy: CFN has custom providers [0] and they've started publishing quite a few implementations on GH (but I haven't tried them to know if they're for real): e.g. https://github.com/aws-cloudformation/aws-cloudformation-res...

    As far as I know, it is possible to bridge terraform providers into a CFN stack using that mechanism, similar to how Pulumi works

    0: https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGui...

  12. governance

    Documentation and automation for the Concourse project governance model. (by concourse)

    Terraform is such an underappreciated tool. It seems like so much of the hate surrounds HCL1 (back in Terraform before 0.12) and doesn't reflect modern Terraform.

    For example, after introducing `for_each` and dynamic blocks, it's possible to nearly entirely ditch variables files and local modules, and just add more infrastructure by editing a local YAML file. The only variables your Terraform code should have should be credentials / other secrets that are not loaded from environment variables by providers. A great public example of this usage pattern is supplied by https://github.com/concourse/governance to manage their GitHub repositories.

  13. cue

    Discontinued CUE has moved to https://github.com/cue-lang/cue (by cuelang)

  14. dhall-terraform

    Generate dhall records from terraform resouces, data_sources & providers

  15. pulumi-provider-boilerplate

    Boilerplate showing how to create a native Pulumi provider

  16. pulumi-provider-boilerplate-openapi

    Boilerplate showing how to create a native Pulumi provider using an Open API specification

  17. pulumi-terraform-bridge

    A library allowing Terraform providers to be bridged into Pulumi.

    > If Pulumi didn't bless it, it doesn't exist in Pulumi's world.

    That has not been my experience. I have personally ported a Sentry TF provider into Pulumi, and I will grant you that their docs and examples are bordering on active user hatred for exercising the process, but it does work:

    https://github.com/pulumi/pulumi-terraform-bridge#adapting-a...

    https://github.com/pulumi/pulumi-tf-provider-boilerplate#rea...

    What mystifies me about that situation is that I do actually appreciate the amount of silliness that is required to avoid using Pulumi cloud: they are not financially incentivized to make that easy, but I'd guess a lot more folks would nope right out if they didn't make it possible

    However, I would think they'd want to make ingesting a TF provider into Pulumi as smooth and reliable as possible, so they don't have people close their browser tab when they don't find a supported provider for Pulumi but it exists in TF

  18. pulumi-tf-provider-boilerplate

    Boilerplate code for Terraform provider-backed Pulumi packages

    > If Pulumi didn't bless it, it doesn't exist in Pulumi's world.

    That has not been my experience. I have personally ported a Sentry TF provider into Pulumi, and I will grant you that their docs and examples are bordering on active user hatred for exercising the process, but it does work:

    https://github.com/pulumi/pulumi-terraform-bridge#adapting-a...

    https://github.com/pulumi/pulumi-tf-provider-boilerplate#rea...

    What mystifies me about that situation is that I do actually appreciate the amount of silliness that is required to avoid using Pulumi cloud: they are not financially incentivized to make that easy, but I'd guess a lot more folks would nope right out if they didn't make it possible

    However, I would think they'd want to make ingesting a TF provider into Pulumi as smooth and reliable as possible, so they don't have people close their browser tab when they don't find a supported provider for Pulumi but it exists in TF

  19. coc.nvim

    Nodejs extension host for vim & neovim, load extensions like VSCode and host language servers.

  20. vim-lsp

    async language server protocol plugin for vim and neovim

  21. nvim-lspconfig

    Quickstart configs for Nvim LSP

  22. terraform-lsp

    Language Server Protocol for Terraform

  23. terraform-ls

    Terraform Language Server

    https://github.com/hashicorp/terraform-ls

    These are both fairly limited but you can see every editor (except intellij) uses this under the hood.

    I've used them at companies with 300+ terraform repos and have never had much of an issue navigating/understanding TF through Vim.

  24. magic-modules

    Add Google Cloud Platform support to Terraform

    For GCP, both ansible modules and terraform modules are actually generated from https://github.com/GoogleCloudPlatform/magic-modules, so their "production readiness" are the same.

    I understand that mitchellh himself personally created a bunch of cloud modules for terraform at the beginning, and those were likely of higher quality than whatever created by some internal developers assigned by Google/Microsoft, and might be slightly better than the AWS modules maintained by community.

    Anyway, when it comes to ansible versus terraform, we shall move the discourse to states management instead. With ansible, you don't have to deal with states, but will need to clean up the cloud resources separately. With terraform, you can use the tool to clean up the cloud resources easily, but then you also have the headache of managing states. Plus, whenever you change something, there is always the nagging feeling that it will do a destroy/recreate instead of an in-place update.

  25. porter

    Porter enables you to package your application artifact, client tools, configuration and deployment logic together as an installer that you can distribute, and install with a single command. (by getporter)

    I'm closely tracking an effort by Microsoft that aims to do a lot of what you're describing since I find myself bridging between these tools and deploying stacks that span tools and roles. [CNAB](https://cnab.io/) and the front-running implementation, [Porter](https://porter.sh/), enable one-step infra deployments, packaged as a single OCI-compatible container, with any number of steps, using the best tools for each of those steps. Think of using aws-cli for some initialization step (create or verify presence of a state bucket), applying some terraform to create infra, and finishing with a helm chart to complete deployment of app components. Each stage in a bundle packages not only the code to run it but also the execution binary of the tool that runs it. The spec and porter are still a moving target but it's a promising space and a nice adjacent evolution of the current state of tooling.

  26. cnab-spec

    Cloud Native Application Bundle Specification

    I'm closely tracking an effort by Microsoft that aims to do a lot of what you're describing since I find myself bridging between these tools and deploying stacks that span tools and roles. [CNAB](https://cnab.io/) and the front-running implementation, [Porter](https://porter.sh/), enable one-step infra deployments, packaged as a single OCI-compatible container, with any number of steps, using the best tools for each of those steps. Think of using aws-cli for some initialization step (create or verify presence of a state bucket), applying some terraform to create infra, and finishing with a helm chart to complete deployment of app components. Each stage in a bundle packages not only the code to run it but also the execution binary of the tool that runs it. The spec and porter are still a moving target but it's a promising space and a nice adjacent evolution of the current state of tooling.

  27. dhall-kubernetes

    Typecheck, template and modularize your Kubernetes definitions with Dhall

    Best thing is Dhall that I am aware of. Same situation, working as a consultant, forced to use broken things.

    https://github.com/dhall-lang/dhall-kubernetes

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

  • How to Setup Vim for Kotlin Development

    12 projects | dev.to | 27 Dec 2024
  • Need help to set up the pbkit language server

    2 projects | /r/neovim | 21 Sep 2023
  • Option omnifunc is not set

    1 project | /r/neovim | 31 Aug 2023
  • LSP tells me to enable auto-fetch in configurations, but I can't find any documentation on that option?

    1 project | /r/neovim | 3 Jul 2023
  • mason.nvim [Languages] WARNINGS

    1 project | /r/neovim | 1 Jul 2023

Did you know that Go is
the 4th most popular programming language
based on number of references?