renovate/lib/modules/manager/terraform/readme.md

124 lines
7.4 KiB
Markdown

### Terraform vs OpenTofu
Renovate can not know if you want to use the Terraform or OpenTofu registry.
By default, Renovate uses the Terraform registry (`registry.terraform.io`) for providers _without_ a registry definition.
You can override this default with your own `packageRules`, for example:
```json title="Prefer releases from OpenTofu"
{
"packageRules": [
{
"matchDatasources": ["terraform-provider"],
"registryUrls": ["https://registry.opentofu.org"]
}
]
}
```
### Supported dependencies
Renovate supports updating the Terraform dependencies listed below.
Check the tables to see where some dependencies can be hosted.
#### Modules
| Name | Public hosting | Private hosting |
| ----------------- | :------------: | :-------------: |
| GitTags | yes | yes |
| GithubTags | yes | yes |
| TerraformRegistry | yes | yes |
#### Providers
Providers are deprecated in Terraform `0.13.0`.
| Name | Public hosting | Private hosting |
| ----------------- | :------------: | :-------------: |
| TerraformRegistry | yes | yes |
#### required_providers block
Needs Terraform `>= 0.13.0`.
| Name | Public hosting | Private hosting |
| ----------------- | :------------: | :-------------: |
| TerraformRegistry | yes | yes |
#### required_version
Renovate can update the `required_version` attribute of the Terraform block.
#### helm_release
Renovate can update the version attribute of `helm_release` resources. This applies to both helm chart repositories and [charts published in OCI registries](https://helm.sh/docs/topics/registries/).
| Name | Public hosting | Private hosting |
| ---------------- | :------------: | :-------------: |
| chart repository | yes | yes |
#### Docker
Renovate can update image references of the Docker provider resources (`docker\_\*`).
| Name | Public hosting | Private hosting |
| --------------- | :------------: | :-------------: |
| Docker registry | yes | yes |
#### Kubernetes
Renovate can update image references of Kubernetes provider resources (`kubernetes\_\*`).
| Name | Public hosting | Private hosting |
| --------------- | :------------: | :-------------: |
| Docker registry | yes | yes |
#### tfe_workspaces
Renovate can update [tfe_workspaces](https://registry.terraform.io/providers/hashicorp/tfe/latest/docs/resources/workspace).
Renovate searches for the `terraform_version` argument.
### Range constraints
Renovate understands these Terraform range constraints:
| Terraform range | Notes |
| -------------------- | ----------------------------------------------------------- |
| `>= 1.2.0` | version `1.2.0` or newer |
| `<= 1.2.0` | version `1.2.0` or older |
| `~> 1.2.0` | any non-beta version `>= 1.2.0` and `< 1.3.0`, e.g. `1.2.X` |
| `~> 1.2` | any non-beta version `>= 1.2.0` and `< 2.0.0`, e.g. `1.X.Y` |
| `>= 1.0.0, <= 2.0.0` | any version between `1.0.0` and `2.0.0` inclusive |
### Disabling parts of the manager
You can use these `depTypes` for fine-grained control, for example to disable parts of the Terraform manager.
| Resource | `depType` | Notes |
| ------------------------------------ | :------------------------------------: | :------------------------------------------------------------------------: |
| Terraform provider | `provider` | |
| required Terraform provider | `required_provider` | |
| required Terraform version | `required_version` | This handles the `required_version` in terraform blocks |
| TFE workspace | `tfe_workspace` | This handles the `terraform_version` argument in `tfe_workspace` resources |
| Terraform module | `module` | |
| Helm release | `helm_release` | |
| Docker container | `docker_container` | |
| Docker image | `docker_image` | |
| Docker service | `docker_service` | |
| Kubernetes CronJob | `kubernetes_cron_job` | |
| Kubernetes CronJob v1 | `kubernetes_cron_job_v1` | |
| Kubernetes DaemonSet | `kubernetes_daemon_set` | |
| Kubernetes DaemonSet v1 | `kubernetes_daemon_set_v1` | |
| Kubernetes Deployment | `kubernetes_deployment` | |
| Kubernetes Deployment v1 | `kubernetes_deployment_v1` | |
| Kubernetes Job | `kubernetes_job` | |
| Kubernetes Job v1 | `kubernetes_job_v1` | |
| Kubernetes Pod | `kubernetes_pod` | |
| Kubernetes Pod v1 | `kubernetes_pod_v1` | |
| Kubernetes Replication Controller | `kubernetes_replication_controller` | |
| Kubernetes Replication Controller v1 | `kubernetes_replication_controller_v1` | |
| Kubernetes StatefulSet | `kubernetes_stateful_set` | |
| Kubernetes StatefulSet v1 | `kubernetes_stateful_set_v1` | |
If you need to change the versioning format, read the [versioning](../../versioning/index.md) documentation to learn more.