Files
awesome-kubernetes/docs/terraform.md
Inaki Fernandez 90289f1be7
Some checks failed
Publish docs via GitHub Pages / Deploy docs (push) Failing after 2s
new refs
2024-09-01 12:17:55 +02:00

156 KiB
Raw Blame History

Hashicorp Terraform & Packer. Kubernetes Boilerplates

{=="It's not controversial to provision resources with code. It shouldn't be controversial to deploy and manage resources with code" (Jaana Dogan)==}

  1. HashiCorp Learning Resources Reference Guide
  2. Packer
  3. HashiCorp Cloud Terraform Cloud
  4. Blogs and Newsletters
  5. Terraform
    1. Antipatterns
    2. Terraform License
  6. OpenTOFU vs Terraform
  7. Terraform fmt
  8. terraform taint
  9. terraform stacks
  10. Terraform and GitHub Actions
  11. Terraform and GitLab Pipelines
  12. Terraform Testing
  13. Terraform docs
  14. Private Terraform Registries
  15. Terraform and Grafana
  16. Terraform and Jenkins
  17. Alternatives to Terraform
  18. Managing secrets in your Terraform code
  19. Terraform Cloud (HCP Terraform)
  20. Hashicorp Infrastructure Cloud
    1. Alternatives to Terraform Cloud
  21. HCL
  22. CDK Cloud Development Kit Terraform
  23. Providing Terraform with Ansible
  24. Python Boto3 and Terraform
  25. Helm Charts in Terraform
  26. Terraform Infracost
  27. Awesome Terraform
  28. Terraform Cheat Sheets
  29. Best Practices
  30. Terraform and CI/CD. Terraform Workspaces
  31. Terraform Boilerplates
  32. Terraform and Kubernetes
  33. Terrafor Cloud Operator
  34. Terraform Kubernetes Boilerplates
    1. Hashicorp Terraform Kubernetes Collection
    2. Learnk8s Terraform and Managed Kubernetes
    3. OpenShift and Terraform
    4. Other Boilerplates
    5. Terraform Kubernetes Operator
    6. Terraform K3s Boilerplates
    7. Terraform and GCP
      1. Terraform GKE Boilerplates
    8. Terraform and AWS
      1. AWS Service Catalog
      2. AWS Observability Accelerator for Terraform
      3. Terraform EKS Boilerplates
      4. AWSCC. Terraform AWS Cloud Control Provider
      5. AWS Control Tower Account Factory for Terraform (AFT)
      6. Porsche Official
      7. AWS Serverless with Terraform
    9. Terraform with Azure
      1. Azure Terraform Export aztfexport
      2. Azure Landing Zones with Terraform. Azure Network Architecture
      3. Azure Terrafy and AzAPI Terraform Provider
      4. Terraform in Azure DevOps. Azure DevOps with terraform
      5. Terraform Azure Stack Provider
    10. Terraform for a Data Engineer
    11. Terraform AKS Boilerplates
    12. Terraform and OCI
    13. Terraform and Linode
  35. Istio with Terraform
  36. Terraform and Minikube
  37. Terraform and Apache Kafka
  38. Terraform and JMeter
  39. Terraform and OpenVPN on AWS
  40. Terraform Video Tutorials
  41. CDK for Terraform
  42. Graph Visualization Software
  43. Terraform Modules
    1. Terraform AWS Modules
    2. Segment AWS Stack Terraform Modules
  44. Terraform Providers
    1. Terraform AWS Cloud Control Provider
    2. Terraform Provider for Elastic Cloud
    3. Terraform Vault Provider
    4. Terraform AzureRM
  45. Terraform Code Quality. Terraform Quality Checks. Terraform Linters
  46. Enforce Policy with Sentinel
  47. Reverse terraform with Terraformer
  48. Terraform Tools
  49. Writing Terraform for unsupported resources with TerraCurl
  50. Terraform Frameworks
    1. Kubestack Terraform GitOps Framework
    2. Gruntwork Terragrunt
    3. Terraspace
  51. Terraform Associate Certification
  52. ChatGPT
  53. Images
  54. Videos
  55. Tweets

HashiCorp Learning Resources Reference Guide

Packer

HashiCorp Cloud Terraform Cloud

Blogs and Newsletters

Terraform

Antipatterns

Terraform License

OpenTOFU vs Terraform

Terraform fmt

terraform taint

  • "Have you used the taint command in Terraform yet?" "It marks a resource in the Terraform state data as tainted, meaning the next time you run terraform apply, that resource will be destroyed and recreated. The configuration for the resource will not change, but the resource will be replaced. HashiCorp is trying to move away from imperative commands and towards a declarative model for all operations that affect state. Terraform taint makes direct alterations to state data in an imperative fashion with no way to preview the changes. If you run a terraform taint command, you are altering the state data without making a change to the configuration. In a collaborative environment, this can cause problems."

terraform stacks

Terraform and GitHub Actions

Terraform and GitLab Pipelines

Terraform Testing

Terraform docs

  • terraform-docs.io terraform-docs is a utility to generate documentation from Terraform modules in various output formats.

Private Terraform Registries

Terraform and Grafana

Terraform and Jenkins

Alternatives to Terraform

Managing secrets in your Terraform code

Terraform Cloud (HCP Terraform)

Hashicorp Infrastructure Cloud

Alternatives to Terraform Cloud

HCL

CDK Cloud Development Kit Terraform

Providing Terraform with Ansible

Python Boto3 and Terraform

Helm Charts in Terraform

Terraform Infracost

Awesome Terraform

Terraform Cheat Sheets

Best Practices

Terraform and CI/CD. Terraform Workspaces

Terraform Boilerplates

Terraform and Kubernetes

Terrafor Cloud Operator

{==

Terraform Kubernetes Boilerplates

Hashicorp Terraform Kubernetes Collection

Learnk8s Terraform and Managed Kubernetes

==}

OpenShift and Terraform

Other Boilerplates

Terraform Kubernetes Operator

{==

Terraform K3s Boilerplates

Terraform and GCP

Terraform GKE Boilerplates

==}

Terraform and AWS

{==

AWS Service Catalog

  • ==New Self-Service Provisioning of Terraform Open-Source Configurations with AWS Service Catalog== 🌟🌟🌟 With AWS Service Catalog, you can create, govern, and manage a catalog of infrastructure as code (IaC) templates that are approved for use on AWS. These IaC templates can include everything from virtual machine images, servers, software, and databases to complete multi-tier application architectures. You can control which IaC templates and versions are available, what is configured by each version, and who can access each template based on individual, group, department, or cost center. End users such as engineers, database administrators, and data scientists can then quickly discover and self-service provision approved AWS resources that they need to use to perform their daily job functions.

AWS Observability Accelerator for Terraform

Terraform EKS Boilerplates

==}

AWSCC. Terraform AWS Cloud Control Provider

AWS Control Tower Account Factory for Terraform (AFT)

Porsche Official

AWS Serverless with Terraform

Terraform with Azure

Azure Terraform Export aztfexport

Azure Landing Zones with Terraform. Azure Network Architecture

Azure Terrafy and AzAPI Terraform Provider

Terraform in Azure DevOps. Azure DevOps with terraform

Terraform Azure Stack Provider

Terraform for a Data Engineer

{==

Terraform AKS Boilerplates

Terraform and OCI

==}

Terraform and Linode

Istio with Terraform

Terraform and Minikube

Terraform and Apache Kafka

Terraform and JMeter

Terraform and OpenVPN on AWS

Terraform Video Tutorials

CDK for Terraform

Graph Visualization Software

Terraform Modules

Terraform AWS Modules

Segment AWS Stack Terraform Modules

Terraform Providers

Terraform AWS Cloud Control Provider

Terraform Provider for Elastic Cloud

Terraform Vault Provider

Terraform AzureRM

Terraform Code Quality. Terraform Quality Checks. Terraform Linters

Enforce Policy with Sentinel

Reverse terraform with Terraformer

Terraform Tools

Writing Terraform for unsupported resources with TerraCurl

Terraform Frameworks

Kubestack Terraform GitOps Framework

Gruntwork Terragrunt

Terraspace

  • Terraspace.cloud Terraspace is a Terraform Framework that optimizes for infrastructure-as-code happiness. It provides an organized structure, conventions over configurations, keeps your code DRY, and adds convenient tooling. Terraspace makes working with Terraform easier and more fun.

Terraform Associate Certification

ChatGPT

Images

??? note "Click to expand!"

<center>
[![developer responsibility vs opta iac responsibility](images/opta_iac_responsibility_vs_developer_.png)](https://www.cncf.io/blog/2022/02/18/introducing-opta-terraform-on-rails/)
</center>

Videos

??? note "Click to expand!"

<center>
<iframe width="560" height="315" src="https://www.youtube.com/embed/PxyyY7TsCqs" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/l5k1ai_GBDE" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/gxPykhPxRW0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/2Zwrtn-QPk0" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/C3ptdKC9-EQ" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/kFt0OGd_LhI" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/DeNflzdjxVM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/1Fl25dR01pw?si=Nr_cPtotnts5jO2B" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/V53AHWun17s?si=2A3e3qkC7DEbDUnr" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/iRaai1IBlB0?si=_yvEAIc2qvZusFKj" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/v_T1fuYGjV0?si=W6dxmoEzTxZ1Mxq2" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/sd2wuAVush4?si=vWkSEsB2-B9TJmlw" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/t9flUkifAsE?si=ONNtQzJOKsadtjMM" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/iVyKvopGnrQ?si=myjkeOO96PvEwNI2" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/hBmcwtVQkPM?si=ujDH50fqShdYz9LT" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/3pjEcflsSL8?si=xHj3WCDI1C3p4GLN" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/videoseries?si=_pQAOw0pSqmysSRh&amp;list=PLXb5972EMl4BfKVDMaJH6Pg9SI6q_HqMg" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/iLgEK6A31HM?si=3tiTieL4AyBSaZJX" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/6OeRByC-sBs?si=uyx7m2z8Gn2EFwZ8" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/rnSzfaWShGU?si=Kxrfq-7wzny0XR1v" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/6OeRByC-sBs?si=4OjYNsUSptbjtEGf" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/IORvnr4u8z8?si=uWpAmpeuEhBh2vVn" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
<iframe width="560" height="315" src="https://www.youtube.com/embed/3uDxwNOtilU?si=QMSvjjS_DYxEX8T3" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen></iframe>
</center>

Tweets

Click to expand!

I'm getting questions about Terraform vs Kubernetes for managing infrastructure resources.

I make the distinction by treating Terraform as a frontend tool that interacts with control planes that present **its** resources through a declarative interface. Ownership is key.

— Kelsey Hightower (@kelseyhightower) November 19, 2020
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

1/ Yesterday we released v2.1.0 of the @HashiCorp Terraform provider for @HelmPack with a cool new feature: diffs of the @kubernetesio manifests that Helm is sending to the cluster!

So, what does this look like? Let's see ...

— Phil, in the 🏜️ of Arizona (@PhilipSautter) April 2, 2021
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

This is very common. Terraform doesnt give workload portability. It gives workflow portability

By keeping the same workflow it improves adoption because it doesnt matter if your managing EC2 or Pagerduty the same lang and tools work. It lowers switching costs through workflow https://t.co/wSOZYjZMm3

— Justin Garrison (@rothgar) July 29, 2021
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Unfortunately I think this is the biggest misconception that orgs have when deciding to adopt Terraform. It's "cloud agnostic" in the same way that Python is cloud agnostic. You still need vendor specific libraries. The only thing you standardize on is syntax and workflow

— Noah Mercado (@noah_mercado) July 29, 2021
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

It's not controversial to provision resources with code. It shouldn't be controversial to deploy and manage resources with code.

— Jaana Dogan ヤナ ドガン (@rakyll) September 9, 2021
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Using Terraform with Co-pilot. pic.twitter.com/0hhbqmMGW1

— Alex Jones 🚀 (@AlexJonesax) November 8, 2021
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Yes. If its anything reasonably complex, my process is:
1.) Build w/ UI
2.) Gen w/ #Terraformer (local state)
3.) Fix crazy codegen-ed names
4.) Import TF, verify Cloud == State == #Terraform
5.) rm -rf the manual version
6.) Recreate from TF
7.) Test and iterate w/ IaC

— Ryan Hochstetler (@ryanhos) January 19, 2022
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

Let's continue to Terraform🚀

The value of a Terraform variable can be set multiple ways, including setting a default value, interactively passing a value when executing a terraform plan and apply, using an environment variable, or setting the value in a .tfvars file.

(1/2)

— Vrukshali 🦥 (@vrukshali26) March 21, 2022
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

🏗 AWS/Terraform Tip 💛

Get an estimate of your costs & a detailed overview of the pricing of each of your AWS resources via 𝗶𝗻𝗳𝗿𝗮𝗰𝗼𝘀𝘁

You can even preview increased costs estimates for changed or added infrastructure in pull requests 📈 🤩

Link below ↓ pic.twitter.com/lyPUiDhWy5

— Tobias Schmidt (@tpschmidt_) June 16, 2022
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

🏗 AWS/Terraform Tip 💛

Visualize your existing ecosystem by creating diagrams from a state file or HCL via 𝗜𝗻𝗳𝗿𝗮𝗠𝗮𝗽

"Why not just 𝘵𝘦𝘳𝘳𝘢𝘧𝘰𝘳𝘮 𝘨𝘳𝘢𝘱𝘩"?
=> InfraMap reduces the resources to the most important ones - making it human-readable 🤖

Link below ↓ pic.twitter.com/N43vWyaNjj

— Tobias Schmidt (@tpschmidt_) June 22, 2022
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>