I started working on a new projects that relies on terraform and AWS. This is new to me, I’m used to Google Cloud and “artisanal” setup, by hand with scriping tools like Python’s Fabric or Ansible.
terraform fmt # format the files terraform validate terraform plan terraform apply terraform show # shows the current state, from the file terraform.tfstate. Might be sync'd with a remote
Something like AWS, GCloud, etc. These are Cloud Provider.
Terraform translates “high-level” infrastructure operations into a provider operations using a translation layer. This translation layer is a Provider plugin.
A resource is a piece of something in your infra, it’s hardware, software, etc. It is prefixed by a provider.
In my project, modules have a
variables.tf. Example in Olivier’s DynamoDB Module.
Medium Article About Modules gives a few info, and it also shows they did it BEFORE the
If you find terraform code from before v0.12 (July 2018) it might be useful.
Similar to return values, can be used to feed back data to parent module, or show stuff on the CLI.
An interesting approach (TODO: reference its author), is to have multiple layers (components / applications) and have multiple environment (dev, prod, staging).
A script “compiles” the layer for each environment. Say the GraphQL API for the dev env. Which might have different endpoints URL than the prod one.
It relies on a compiler ala Jinja, pretty cools. Looks like
maestro-ng from my Docker time.
Terraform tutorial shows how to setup an nginx in docker. How does it relates to
What’s the point of having the terraform Cloud account?
What happens on error? Does terraform rollback?