# Azion Terraform Provider v1.x (API v3)

> **Atenção**
>
> **A versão 1.x está obsoleta.** Esta documentação é para o 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/devtools/terraform/) com a API v4.
>
> Consulte o [Guia de migração](/pt-br/documentacao/devtools/terraform/migration-v3-to-v4/) para atualizar da v1.x para a 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, o que ajuda você a ter um fluxo de trabalho consistente para provisionar e gerenciar toda a sua infraestrutura ao longo do seu ciclo de vida.

---

## Como o Azion Terraform Provider funciona

O **Terraform** funciona [com base em providers](https://developer.hashicorp.com/terraform/registry/providers). Um provider é responsável por gerenciar o ciclo de vida de um tipo específico de recurso. Os providers são implementados como plugins, que são arquivos de código executável separados que o Terraform pode carregar durante a execução.

[Azion Terraform Provider](https://github.com/aziontech/terraform-provider-azion) é um projeto de código aberto, registrado no [Terraform Registry](https://registry.terraform.io/providers/aziontech/azion/latest), que se comunica com as APIs da Azion. Assim, você gerencia localmente, como código, sua infraestrutura hospedada na plataforma da Azion.

---

## Processo

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

**Terraform Core**: ele se comunica com o Azion Terraform Provider.

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

**Azion Terraform Provider**: desenvolvido em Go, ele se comunica com as APIs da Azion.

---

## Primeiros passos

Em seu arquivo `.tf`, você deve definir o **Azion Terraform Provider** como o provider e definir também a versão dele, como neste exemplo:

```json
    required_providers {
        source = "aziontech/azion"
        version =  "1.x.y" // it depends on the version you're willing to use.
    }
```

Com o provider configurado, é recomendado configurar um [personal token](/pt-br/documentacao/fundamentos/personal-tokens/):

```json
    provider "azion" {
      api_token  = "token" // Here you place your personal token
    }
```

> **Nota**: se o personal token não for fornecido como mostrado acima, um prompt pedirá 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` deve ficar assim neste ponto:

```json
    required_providers {
            source = "aziontech/azion"
            version = "1.x.y" // it depends on the version you're willing to use.
        }
    provider "azion" {
            api_token  = "token" // Here you place your personal token
     }
```

---

## Implementação

| Escopo                           | Resource                                                                                                                                                  | Data source                                                                                                                                                  |
| -------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| Workloads                        | [Gerenciando domains](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/resources/domain)                                               | [Consultando domains](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/data-sources/domains)                                              |
| Application                      | [Gerenciando Functions](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/resources/edge_function)                                      | [Consultando Functions](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/data-sources/edge_functions)                                     |
| Edge DNS Zones                   | [Gerenciando zonas](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/intelligent_dns_zone)                                   | [Consultando zonas](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_zones)                                  |
| Edge DNS Records                 | [Gerenciando registros](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 Functions Instances | [Gerenciando Functions Instances](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/resources/edge_application_edge_functions_instance) | [Consultando Functions Instances](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/data-sources/edge_application_edge_functions_instance) |
| Applications Origin              | [Gerenciando Origins](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/resources/edge_application_origin)                              | [Consultando Origins](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/data-sources/edge_applications_origins)                            |
| Applications Main Settings       | [Gerenciando Main Settings](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/resources/edge_application_main_setting)                  | [Consultando Main Settings](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/data-sources/edge_application_main_settings)                 |
| Applications Cache Settings      | [Gerenciando Cache Settings](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/resources/edge_application_cache_setting)                | [Consultando Cache Settings](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/data-sources/edge_application_cache_settings)               |
| Applications Rules Engine        | [Gerenciando Rules Engine](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/resources/edge_application_rule_engine)                    | [Consultando Rules Engine](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/data-sources/edge_application_rules_engine)                   |
| 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)                     |
| Environment Variables            | [Gerenciando Environment Variables](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/resources/environment_variable)                   | [Consultando environment variables](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/data-sources/environment_variables)                  |
| Firewall Main Settings           | [Gerenciando Main Settings](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/resources/edge_firewall_main_setting)                     | [Consultando Main Settings](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/data-sources/edge_firewall_main_settings)                    |
| Firewall Functions Instances     | [Gerenciando Functions Instances](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/resources/edge_firewall_edge_functions_instance)    | [Consultando Functions Instances](https://registry.terraform.io/providers/aziontech/azion/1.41.0/docs/data-sources/edge_firewall_edge_functions_instance)    |
| 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 a v2.0

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

---
