Terraform Versions
Terrakube is using the following java library to handle all the different terraform versions:
https://github.com/AzBuilder/terraform-spring-boot
This library can download different terraform versions and it is used to execute all the terraform commands, each terraform command is executed a new process instance at the OS level
The terrafom files are downloaded to the foloder
/home/cnb/.terraform-spring-boot/download
Binary caching
Before downloading a Terraform or OpenTofu binary, an executor first checks whether it's already cached in the workspace's storage backend (Amazon S3, Azure Storage, GCP Cloud Storage, or local disk — whichever Storage backend the instance is configured with) and restores it from there instead. If it's not cached anywhere, the executor downloads it from the release index as before and uploads a copy to storage for the next executor pod that needs that version — so a freshly scaled-up or replaced pod doesn't have to re-download the same binary from HashiCorp/GitHub that every other pod already has.
Terraform binary is extracted to:
/home/cnb/.terraform-spring-boot/terraform/{{VERSION}}The correct terraform PATH is add the the executor execution when running a job
OpenTofu
A workspace's IaC tool (terraform or tofu) is chosen per-workspace (Settings > General > IaC Type, or --iac-type on terrakube workspace create/update). When a workspace is set to tofu, the executor downloads and runs OpenTofu binaries instead of Terraform, following the same download/extract flow described above.
Last updated
Was this helpful?