> ## Documentation Index
> Fetch the complete documentation index at: https://docs.envzero.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Managing IaC binary versions

> Specify and manage IaC tool versions in env zero templates for Terraform, OpenTofu, Terragrunt, Pulumi, and Ansible via environment variables.

## Overview

When creating or editing a [template](https://docs.envzero.com/guides/admin-guide/templates.md), you can specify which version of Infrastructure as Code (IaC) tools to use for your deployments. env zero supports version management for Terraform, OpenTofu, Terragrunt, Pulumi, and Ansible.

## Version Resolution Order

When determining which version to use, env zero follows this priority order:

1. **Environment Variables** (`ENV0_TOOL_VERSION` Environment Variable)
2. **Version Files** (per-tool repository files such as `.terraform-version`)
3. **Template Settings** (Specified in UI)

## Version Specification Methods

### 1. Environment Variables

You can override the template version setting using [environment variables](https://docs.envzero.com/guides/admin-guide/variables.md):

| IaC Tool | Environment Variable |
| - | - |
| Terraform | `ENV0_TERRAFORM_VERSION` |
| OpenTofu | `ENV0_OPENTOFU_VERSION` |
| Terragrunt | `ENV0_TERRAGRUNT_VERSION` |
| Pulumi | `ENV0_PULUMI_VERSION` |
| Ansible | `ENV0_ANSIBLE_VERSION` |

For Terraform, env zero also accepts `ENV0_TF_VERSION` as a legacy alias. If both are set, `ENV0_TERRAFORM_VERSION` takes precedence.

### 2. Version Files

env zero can automatically detect versions from standard version files located under the directory you configure in the template.
If you want to reuse the same version files for multiple folders, set the environment variable ENV0\_RESOLVE\_FILE\_VERSION\_RECURSIVELY=true.

| IaC Tool | Version File |
| - | - |
| Terraform | `.terraform-version` |
| OpenTofu | `.opentofu-version` |
| Terragrunt | `.terragrunt-version` |
| Ansible | `.ansible-version` |
| Pulumi | `.pulumi-version` |

### 3. Template Settings

To associate a specific IaC version with a template:

1. Open the relevant **Template**.
2. Go to the **Settings** tab and expand **Advanced Settings**.
3. Select the desired version from the `"Template Type" Version` dropdown.
4. Click **Save**.

![Interface screenshot showing configuration options](https://mintcdn.com/envzero-b61043c8/NFoAIaj_CGEzw-yg/images/guides/admin-guide/templates/6e0ce13-image.png?fit=max\&auto=format\&n=NFoAIaj_CGEzw-yg\&q=85\&s=1f5c2b84cbe0b8af9a7f35d5d99a2bed)

> [!WARNING]
>
> Changing a version in an existing template might affect running environments.

### Special Version Values

#### Automatic Version Detection

When selecting a version in the template settings, you can choose special values:

* **Terraform**: "Resolve from code" - Automatically detects and uses the minimum required version specified in your Terraform code's `required_version` constraint
* **OpenTofu**: "Resolve from code" - Similar to Terraform, extracts required version from your code

> [!NOTE]
>
> For Terraform, the version value for automatic detection is `RESOLVE_FROM_TERRAFORM_CODE`. For OpenTofu, it is `RESOLVE_FROM_CODE`.

![Screenshot showing Resolve from terraform code option](https://mintcdn.com/envzero-b61043c8/NFoAIaj_CGEzw-yg/images/guides/admin-guide/templates/8d0dc65-screen_shot_2021-04-25_at_12.png?fit=max\&auto=format\&n=NFoAIaj_CGEzw-yg\&q=85\&s=e055a148c5aa382569575e189dd0cdce)

#### Latest Version

You can specify "latest" for supported IaC tools:

* Terraform: Latest version up to 1.5.x
* Pulumi: Latest available version
* OpenTofu: Latest available version
* Ansible: Latest available version

> [!NOTE]
>
> The version value for automatic detection is `latest`.

> [!WARNING]
>
> **Terraform versions ≥ 1.6.0 aren't supported**
>
> Terraform versions 1.6.0 and higher are under a BSL license and are not supported in env zero. Consider switching to [OpenTofu](https://opentofu.org/), the drop-in replacement for Terraform.

## Next steps

* [Switch a template to OpenTofu](https://docs.envzero.com/guides/admin-guide/templates/opentofu.md)
* [Set other deployment controls](https://docs.envzero.com/guides/admin-guide/additional-controls.md) through environment variables


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.