Our great sponsors
-
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.
-
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.
-
checkov
Prevent cloud misconfigurations and find vulnerabilities during build-time in infrastructure as code, container images and open source packages with Checkov by Bridgecrew.
-
terratest
Terratest is a Go library that makes it easier to write automated tests for your infrastructure code.
-
terraform-aws-consul-starter
Discontinued A Terraform module for creating an OSS Consul cluster as described by the HashiCorp reference architecture.
A higher-order module is just a module that calls another module to extend that modules functionality. You can see it being used here https://github.com/DontShaveTheYak/terraform-module-template/tree/main/modules/greet_multiple
This is a template to create a module. It has a lot of stuff built in like testing tools. Those are all covered in the README. The module itself is just a simple "Hello World" so it doesn't really use very complicated Terraform logic. It's not a great example for advanced Terraform logic but this is https://github.com/terraform-aws-modules/terraform-aws-vpc/blob/master/main.tf.
Create git tags using semver when PRs merge to the main branch.
Local testing with pre-commit-terraform. Formats code with terraform fmt Validates code with terraform validate Automatic README updates with terraform-docs. Static code analysis with TFLint, tfsec and checkov.
Automatic README updates with terraform-docs.
Static code analysis with TFLint, tfsec and checkov.
Static code analysis with TFLint, tfsec and checkov.
Static code analysis with TFLint, tfsec and checkov.
Testing with Terratest across all major versions of Terraform.
You can see the same structure in the official Consul module provided by Hashicorp as well as in the AWS community modules, like here in the VPC module.
You are right for a public module as a git repo, but I rarely use public modules. Most are overally complicated and low on readability. Also the greater complexity leads to more bugs. I am also not a fan of using modules directly from upstream git repository. I don't trust them to not break it or move it. The main exception I have found to not using public modules is https://github.com/terraform-aws-modules/terraform-aws-eks. EKS is inherently so complex that is worth using a very complex module.
Related posts
- Top Terraform Tools to Know in 2024
- How long have you guys actually had the title “platform engineer”? What other titles did you have before that, if any?
- This is the best way to create a Terraform module!
- Terraform Best Practices for Better Infrastructure Management
- Deploying a Containerized App to ECS Fargate Using a Private ECR Repo & Terragrunt