# Azion Terraform Provider

import DocButton from '~/components/webkit/DocButton.vue';

[Terraform](https://developer.hashicorp.com/terraform/docs) is an infrastructure as code tool that allows you to manage your infrastructure efficiently through code. The files created to manage your infrastructure can be reused, versioned, and shared, helping you maintain a consistent workflow to provision and manage all your infrastructure throughout its lifecycle.

---

:::warning
**API Version Notice:** Terraform Provider v2.0 requires API v4. This version is compatible only with Azion API v4. If you're using API v3, see the [Terraform Provider v1.x documentation](/en/documentation/products/terraform-provider-v3/).
:::

---

## How does Azion Terraform Provider work?

**Terraform** works based [on providers](https://developer.hashicorp.com/terraform/registry/providers). A provider is responsible for managing the lifecycle of a specific resource type. They're implemented as plugins, which are separate executable files that can be loaded into Terraform at runtime.

The [Azion Terraform Provider](https://github.com/aziontech/terraform-provider-azion) is an open source project, registered in the [Terraform Registry](https://registry.terraform.io/providers/aziontech/azion/latest/docs) that uses the [Azion SDK (Go)](https://github.com/aziontech/azionapi-go-sdk) to communicate with the Azion APIs, allowing you to manage your infrastructure hosted on the Azion platform, locally, as code.

---

## Process

![Azion Terraform Provider Flow](/assets/docs/images/uploads/terraformProviderFlow.png)

**Terraform Core**: communicates with the Azion Terraform Provider.

**Azion Terraform Provider**: built in Go, communicates with the Azion SDK (Go).

**Azion SDK (Go)**: communicates with the Azion APIs.

---

## Migrating from v1.x

If you're upgrading from Terraform Provider v1.x (API v3), see the [Terraform Provider Migration Guide](/en/documentation/products/terraform-provider/terraform-migration-v3-to-v4/) for detailed instructions on migrating your configurations to v2.0.