IO project infrastructure
In order to manage the suitable version of terraform it is strongly recommended to install the following tool:
- tfenv: Terraform version manager inspired by rbenv.
Once these tools have been installed, install the terraform version shown in:
- .terraform-version
After installation install terraform:
tfenv install
As PagoPA we build our standard Terraform modules, check available modules:
To apply changes follow the standard terraform lifecycle once the code in this repository has been changed:
./terraform.sh init [dev|uat|prod]
./terraform.sh plan [dev|uat|prod]
./terraform.sh apply [dev|uat|prod]
We have both developers who work with your Terraform configuration on their Linux, macOS or Windows workstations and automated systems that apply the configuration while running on Linux. https://www.terraform.io/docs/cli/commands/providers/lock.html#specifying-target-platforms
So we need to specify this in terraform lock providers:
rm .terraform.lock.hcl
./terraform.sh init [dev|uat|prod]
rm .terraform.lock.hcl
terraform providers lock \
-platform=windows_amd64 \
-platform=darwin_amd64 \
-platform=darwin_arm64 \
-platform=linux_amd64
Check your code before commit.
https://github.com/antonbabenko/pre-commit-terraform#how-to-install
pre-commit run -a