doc/user/infrastructure/iac/_index.md
{{< details >}}
{{< /details >}}
To manage your infrastructure with GitLab, you can use the integration with OpenTofu to define resources that you can version, reuse, and share:
<i class="fa-youtube-play" aria-hidden="true"></i> Watch a video overview of the features GitLab provides with the integration with OpenTofu.
The following examples primarily use OpenTofu, but they can work with Terraform as well.
GitLab integrates with both Terraform and OpenTofu. Most features are fully compatible, including:
For simplicity, the GitLab documentation refers primarily to OpenTofu. However, differences between the Terraform and OpenTofu integration are documented.
OpenTofu can integrate with all Terraform-specific GitLab features with the GitLab OpenTofu CI/CD component.
You can add a validate, plan, and apply workflow to your pipeline by including the component:
include:
- component: gitlab.com/components/opentofu/validate-plan-apply@<VERSION>
inputs:
version: <VERSION>
opentofu_version: <OPENTOFU_VERSION>
root_dir: terraform/
state_name: production
stages: [validate, build, deploy]
For more information about templates, inputs, and how to use the OpenTofu CI/CD component, see the OpenTofu CI/CD component README.
Although GitLab no longer distributes the Terraform CI/CD templates
and terraform-images (the underlying job images, including terraform),
you can still use Terraform in GitLab pipelines.
To learn how to build and host your own templates and images, see the Terraform Images project.
gitlab-terraform shell script.