# Statements
- [[Terraform resources are not user-friendly]]
- [[Terraform modules can increase user-friendliness]]
- [[Terraform code should strive for symmetry with the AWS Management Console]]
- [[Terraform files should convey more meaning]]
- [[Terraform is used like a golden hammer]]
- [[Git tags, changelogs and releases in a Terraform monorepo]]
# About
Terraform is a [[Command line interface]] for executing [[Infrastructure as code]] written in [[HCL]]. It follows a [[Declarative programming]] paradigm. The Terraform language is **declarative**, describing an intended goal rather than the steps to reach that goal. It's similar to [[Pulumi]].
Terraform is not that complicated. It keeps track of resources in a JSON document (state) and runs API calls on your behalf to get to the state that you want.
I aspire to write modules of the same quality as [Anton Babenko](https://github.com/antonbabenko)'s and [Cloudposse](https://github.com/cloudposse). They have made many excellent modules. Proper usage of modules gives great [[Composability]] and [[Separation of concerns]].
I like using [terraform-docs](https://github.com/terraform-docs/terraform-docs) with `pre-commit` hooks.
Terraform can use a [[Amazon DynamoDB]] to keep track of the state file, allowing multiple people to work at the same time. [[Atlantis]] can be used to integrate Terraform with the pull request system in [[GitHub]]. It allows you to run `terraform apply` or `terragrunt apply` directly from GitHub.
I also made a little something for [generating Terraform editor snippets](https://github.com/staticaland/terraform-generate-snippets).
Read [Do not use AWS CloudFormation](https://gswallow.medium.com/do-not-use-aws-cloudformation-7cf61f58bd5f).
# Trivia
Terra means earth. Terraforming is "the hypothetical process of deliberately modifying the atmosphere, temperature, surface topography or ecology of a planet, moon, or other body to be similar to the environment of Earth to make it habitable by Earth-like life".[^1] It's what [[Elon Musk]] wants to do on Mars.
Terrace is a platform built on or supported by a mound of earth (useful to remember the difference between [altan, balkong, terrasse, veranda](https://www.sprakradet.no/svardatabase/sporsmal-og-svar/altan-balkong-terrasse-veranda/)). Calling something a roof terrace does not really make any sense.
Terraform Labs made a [[Stablecoin]] that [crashed extremely hard in May 2022](https://coinmarketcap.com/currencies/terrausd/). It has nothing to do with Terraform by Hashicorp.
[^1]: [Terraforming - Wikipedia](https://en.wikipedia.org/wiki/Terraforming)