# Azion Terraform Provider v1.x (API v3)

:::warning
**Versão 1.x está obsoleta.** Esta documentação é para Terraform Provider v1.x (API v3), que não recebe mais atualizações. Para novos projetos ou para acessar os recursos mais recentes, use [Terraform Provider v2.0](/pt-br/documentacao/produtos/terraform-provider/) com API v4.

Consulte o [Guia de Migração](/pt-br/documentacao/produtos/terraform-provider/migration-v3-to-v4/) para atualizar da v1.x para v2.0.
:::

O [Terraform](https://developer.hashicorp.com/terraform/docs) é uma ferramenta de infraestrutura como código que possibilita gerenciar sua infraestrutura de forma eficiente por meio de código. Os arquivos criados para gerenciar sua infraestrutura podem ser reutilizados, versionados e compartilhados, ajudando você a ter um fluxo de trabalho consistente para provisionar e gerenciar toda a sua infraestrutura ao longo de seu ciclo de vida.

---

## Como funciona o Azion Terraform Provider?

O **Terraform** funciona [baseado em provedores](https://developer.hashicorp.com/terraform/registry/providers). Um provedor é responsável por gerenciar o ciclo de vida de um tipo de recurso específico. Os provedores são implementados como plugins, que podem ser carregados no Terraform durante a sua execução.

[Azion Terraform Provider](https://github.com/aziontech/terraform-provider-azion) é um projeto de código aberto, registrado em [Terraform Registry](https://registry.terraform.io/providers/aziontech/azion/latest). Através [do Azion SDK (Go)](https://github.com/aziontech/azionapi-go-sdk), o provedor se comunica com as APIs da Azion para que você possa gerenciar sua infraestrutura hospedada na plataforma da Azion, localmente, como código.

---

## Processo

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

**Terraform Core** -  O Terraform Core se comunica com o Azion Terraform Provider.

> **Nota**: você deve ter o Terraform instalado em seu ambiente de desenvolvimento. [Veja como instalá-lo aqui](https://developer.hashicorp.com/terraform/downloads).

**Azion Terraform Provider** - Construído em Go, ele se comunica com o Azion SDK, também em Go.

**Azion SDK (Go)** - Comunica-se com as APIs Azion.

---

## Primeiros passos

Em seu arquivo .tf, você deve definir o Provedor Azion Terraform como o provedor e definir sua versão também, como neste exemplo:

```json
    required_providers {
        source = "aziontech/azion"
        version = "1.x.y" // dependendo da versão que você deseja utilizar
    }
```

Agora, com o provedor configurado, é recomendado configurar seu [Personal token] (/pt-br/documentacao/produtos/gestao-de-contas/personal-tokens/):

```json
    provider "azion" {
      api_token  = "token" // inserir o seu personal token
}
```

> **Nota**: se o **personal token** não for fornecido como mostrado acima, um prompt solicitará que você o informe ao tentar executar qualquer comando do Terraform.

Após essas etapas, você estará pronto para começar a gerenciar sua infraestrutura usando o Azion Terraform Provider.

Seu arquivo `.tf` deverá estar como apresentado abaixo:

```json
    required_providers {
            source = "aziontech/azion"
            version = "1.x.y" // dependendo da versão que você deseja utilizar
        }
    provider "azion" {
            api_token  = "token" // inserir o seu personal token
     }
```

---

## Implementação

| Escopo | Resource | Data source |
| --- | --- | --- |
| Workloads | [Gerenciando domains](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/domain) | [Consultando domains](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/domains) |
| Application | [Gerenciando functions](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_function) | [Consultando functions](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_functions) |
|  Edge DNS Zones | [Gerenciando Edge DNS zones](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/intelligent_dns_zone)| [Consultando Edge DNS zones](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_zones) |
|  Edge DNS Records | [Gerenciando Edge DNS records](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/intelligent_dns_record) | |
|  Edge DNS DNSSEC | [Gerenciando DNSSEC](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/intelligent_dns_dnssec) | [Consultando DNSSEC](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_dnssec)|
|  Applications Application Instances | [Gerenciando Application Instances](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_application_edge_functions_instance) | [Consultando Application Instances](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_application_edge_functions_instance)|
|  Applications Origin | [Gerenciando Origins](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_application_origin) | [Consultando Origins](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_applications_origins)|
|  Applications Main Settings | [Gerenciando Main Settings](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_application_main_setting) | [Consultando Main Settings](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_application_main_settings)|
|  Applications Cache Settings | [Gerenciando Cache Settings](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_application_cache_setting) | [Consultando Cache Settings](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_application_cache_settings)|
|  Applications Rules Engine | [Gerenciando Rules Engine](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_application_rule_engine) | [Consultando Rules Engine](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_application_rules_engine)|
|  Environment Variables | [Gerenciando Environment Variables](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/environment_variable) | [Consultando environment variables](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/environment_variables) |
|  Certificate Manager | [Gerenciando Certificate Manager](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/digital_certificate) | [Consultando Certificate Manager](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/digital_certificates)|
|  Firewall Main Settings | [Gerenciando Main Settings](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_firewall_main_setting) | [Consultando Main Settings](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_firewall_main_settings) |
|  Firewall Application Instances | [Gerenciando Application Instances](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_firewall_edge_functions_instance) | [Consultando Application Instances](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_firewall_edge_function_instances) |
|  Network List | [Gerenciando Network Lists](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/network_list) | [Consultando Network Lists](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/network_lists) |
|  WAF Rules Set | [Gerenciando WAF Rules Set](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/waf_rule_set) | [Consultando WAF Rules Set](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/waf_rule_sets) |

---

## Migração para v2.0

Para migrar suas configurações Terraform para v2.0 (API v4), consulte o [Guia de Migração do Terraform Provider](/pt-br/documentacao/produtos/terraform-provider/migration-v3-to-v4/).

---