# Guia de Início Rápido - Terraform Provider

Este guia mostra como começar a usar o Azion Terraform Provider para gerenciar sua infraestrutura como código.

---

## Pré-requisitos

Antes de começar, certifique-se de ter:

- [Terraform](https://developer.hashicorp.com/terraform/downloads) versão 1.0 ou superior instalado
- Uma [conta Azion](https://www.azion.com/) ativa
- Um [Personal Token](/pt-br/documentacao/produtos/gestao-de-contas/personal-tokens/) com permissões adequadas

---

## Passo 1: Instalar o Terraform

Você deve ter o Terraform Core instalado em seu ambiente. [Veja como instalar](https://developer.hashicorp.com/terraform/downloads).

Verifique a instalação:

```bash
terraform version
```

---

## Passo 2: Configurar o Provider

Crie um novo diretório para seu projeto Terraform:

```bash
mkdir azion-terraform
cd azion-terraform
```

Crie o arquivo `main.tf`:

```hcl
terraform {
  required_providers {
    azion = {
      source  = "aziontech/azion"
      version = "2.0.0"
    }
  }
}

provider "azion" {
  # Recomendado: use variável de ambiente AZION_API_TOKEN
  # api_token = var.api_token
}
```

---

## Passo 3: Configurar Autenticação

### Opção 1: Variável de Ambiente (Recomendado)

```bash
export AZION_API_TOKEN="seu-token-pessoal"
```

### Opção 2: Arquivo de Variáveis

Crie `variables.tf`:

```hcl
variable "api_token" {
  type        = string
  description = "Personal Token da Azion"
  sensitive   = true
}
```

Crie `terraform.tfvars` (adicione ao `.gitignore`):

```hcl
api_token = "seu-token-pessoal"
```

Atualize `main.tf`:

```hcl
provider "azion" {
  api_token = var.api_token
}
```

---

## Passo 4: Criar Sua Primeira Infraestrutura

Crie `resources.tf`:

```hcl
# Criar um workload
resource "azion_workload" "my_workload" {
  name = "meu-primeiro-workload"
}

# Criar um connector
resource "azion_connector" "my_connector" {
  name = "meu-connector"
}

# Criar uma application
resource "azion_application_main_settings" "my_app" {
  name = "minha-aplicacao"
}

# Criar uma zona DNS
resource "azion_intelligent_dns_zone" "my_zone" {
  name   = "exemplo.com"
  active = true
}
```

---

## Passo 5: Inicializar e Aplicar

### Inicializar o Terraform

```bash
terraform init
```

### Verificar o Plano

```bash
terraform plan
```

### Aplicar as Mudanças

```bash
terraform apply
```

Digite `yes` quando solicitado para confirmar.

---

## Passo 6: Verificar os Recursos

```bash
# Listar todos os recursos
terraform state list

# Ver detalhes de um recurso específico
terraform state show azion_workload.my_workload
```

---

## Exemplo de Início Rápido

Aqui está um exemplo completo para começar com o Azion Terraform Provider v2.0:

```hcl
terraform {
  required_providers {
    azion = {
      source  = "aziontech/azion"
      version = "2.0.0"
    }
  }
}

provider "azion" {
  api_token = var.api_token
}

# Criar um workload
resource "azion_workload" "example" {
  name = "meu-workload"
  # Configurações adicionais...
}

# Criar um connector
resource "azion_connector" "example" {
  name = "meu-connector"
  # Configurações adicionais...
}

# Criar uma application
resource "azion_application_main_settings" "example" {
  name = "minha-aplicacao"
  # Configurações adicionais...
}
```

---

## Estrutura do Projeto

Uma estrutura recomendada para projetos maiores:

```
azion-terraform/
├── main.tf           # Provider e configurações gerais
├── variables.tf      # Variáveis de entrada
├── outputs.tf        # Outputs
├── terraform.tfvars  # Valores das variáveis (não versionar)
├── modules/
│   ├── workload/
│   ├── application/
│   └── security/
└── environments/
    ├── dev/
    ├── staging/
    └── prod/
```

---

## Próximos Passos

- [Workloads](/pt-br/documentacao/produtos/terraform-provider/resources/workloads/) - Aprenda sobre workloads
- [Applications](/pt-br/documentacao/produtos/terraform-provider/resources/applications/) - Configure aplicações
- [Security](/pt-br/documentacao/produtos/terraform-provider/resources/security/) - Configure firewall e WAF
- [Best Practices](/pt-br/documentacao/produtos/terraform-provider/best-practices/) - Boas práticas de uso

---

## Solução de Problemas

### Erro de Autenticação

```
Error: error configuring Terraform Azion Provider: personal token is required
```

**Solução**: Verifique se o token está configurado corretamente via variável de ambiente ou arquivo de configuração.

### Versão Incompatível

```
Error: provider registry.terraform.io/aziontech/azion: no compatible versions
```

**Solução**: Verifique se você está usando Terraform 1.0 ou superior.

### Recursos Não Encontrados

```
Error: resource not found
```

**Solução**: Verifique se o recurso existe na API v4. Alguns recursos da v3 foram removidos ou renomeados. Consulte o [Guia de Migração](/pt-br/documentacao/produtos/terraform-provider/migration-v3-to-v4/).