# 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)