# Exemplos de Resources e Data Sources - Terraform

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

<DocButton href="https://registry.terraform.io/providers/aziontech/azion/latest/docs" label="Ver no Terraform Registry" kind="secondary" size="medium" />

Esta página fornece exemplos práticos de uso do Azion Terraform Provider v2.0, incluindo Resources e Data Sources.

---


O Azion Terraform Provider oferece dois tipos principais de configurações:

- **Resources**: Criam, atualizam e deletam recursos na Azion
- **Data Sources**: Consultam informações sobre recursos existentes

---

## Resources Disponíveis

### Workloads

| Resource | Descrição |
|----------|-----------|
| [`azion_workload`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/workload) | Gerencia workloads |
| [`azion_workload_deployment`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/workload_deployment) | Gerencia deployments de workload |

### Connectors

| Resource | Descrição |
|----------|-----------|
| [`azion_connector`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/connector) | Gerencia connectors |

### Applications

| Resource | Descrição |
|----------|-----------|
| [`azion_application_main_settings`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_application_main_setting) | Configurações principais de Application |
| [`azion_application_cache_setting`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/application_cache_setting) | Configurações de cache |
| [`azion_application_device_group`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/application_device_group) | Grupos de dispositivos |
| [`azion_application_rule_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_application_rule_engine) | Rules Engine |
| [`azion_application_function_instance`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_application_edge_functions_instance) | Instâncias de Functions em aplicações |

### Firewall

| Resource | Descrição |
|----------|-----------|
| [`azion_firewall_main_setting`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_firewall_main_setting) | Configurações principais de Firewall |
| [`azion_firewall_rule_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_firewall_rule_engine) | Rules Engine do Firewall |
| [`azion_firewall_functions_instance`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/edge_firewall_edge_functions_instance) | Instâncias de Functions em firewalls |

### Intelligent DNS

| Resource | Descrição |
|----------|-----------|
| [`azion_intelligent_dns_zone`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/intelligent_dns_zone) | Zonas DNS |
| [`azion_intelligent_dns_record`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/intelligent_dns_record) | Registros DNS |
| [`azion_intelligent_dns_dnssec`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/intelligent_dns_dnssec) | Configurações DNSSEC |

### Security

| Resource | Descrição |
|----------|-----------|
| [`azion_network_list`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/network_list) | Network Lists |
| [`azion_waf`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/waf) | Web Application Firewall |
| [`azion_waf_rule_set`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/waf_rule_set) | Conjuntos de regras WAF |

### Certificates

| Resource | Descrição |
|----------|-----------|
| [`azion_digital_certificate`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/digital_certificate) | Certificados digitais |

### Functions

| Resource | Descrição |
|----------|-----------|
| [`azion_function`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/function) | Functions |

### Other

| Resource | Descrição |
|----------|-----------|
| [`azion_custom_page`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/custom_page) | Páginas personalizadas |

---

## Data Sources Disponíveis

### Workloads

| Data Source | Descrição |
|-------------|-----------|
| [`azion_workloads`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/workloads) | Lista workloads |
| [`azion_workload`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/workload) | Consulta um workload específico |
| [`azion_workload_deployments`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/workload_deployments) | Lista deployments de workload |
| [`azion_workload_deployment`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/workload_deployment) | Consulta um deployment específico |

### Connectors

| Data Source | Descrição |
|-------------|-----------|
| [`azion_connectors`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/connectors) | Lista connectors |
| [`azion_connector`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/connector) | Consulta um connector específico |

### Applications

| Data Source | Descrição |
|-------------|-----------|
| [`azion_applications_main_settings`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/applications_main_settings) | Lista Applications |
| [`azion_application_main_settings`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_main_settings) | Consulta uma Application específica |
| [`azion_application_cache_settings`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_cache_settings) | Lista configurações de cache |
| [`azion_application_cache_setting`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_cache_setting) | Consulta uma configuração de cache específica |
| [`azion_application_device_groups`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_device_groups) | Lista grupos de dispositivos |
| [`azion_application_device_group`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_device_group) | Consulta um grupo de dispositivos específico |
| [`azion_application_rules_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_application_rules_engine) | Lista Rules Engines |
| [`azion_application_rule_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_application_rule_engine) | Consulta uma Rule Engine específica |
| [`azion_application_functions_instances`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_application_edge_functions_instances) | Lista instâncias de Functions |
| [`azion_application_functions_instance`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_application_edge_functions_instance) | Consulta uma instância de Function específica |

### Firewall

| Data Source | Descrição |
|-------------|-----------|
| [`azion_firewall_main_settings`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/firewall_main_settings) | Lista Firewalls |
| [`azion_firewall_main_setting`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/firewall_main_setting) | Consulta um Firewall específico |
| [`azion_firewall_rules_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/firewall_rules_engine) | Lista Rules Engines do Firewall |
| [`azion_firewall_rule_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/firewall_rule_engine) | Consulta uma Rule Engine do Firewall específica |
| [`azion_firewall_functions_instances`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_firewall_edge_functions_instances) | Lista instâncias de Functions no Firewall |
| [`azion_firewall_functions_instance`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/edge_firewall_edge_functions_instance) | Consulta uma instância de Function no Firewall específica |

### Intelligent DNS

| Data Source | Descrição |
|-------------|-----------|
| [`azion_intelligent_dns_zones`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_zones) | Lista zonas DNS |
| [`azion_intelligent_dns_zone`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_zone) | Consulta uma zona DNS específica |
| [`azion_intelligent_dns_records`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_records) | Lista registros DNS |
| [`azion_intelligent_dns_dnssec`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_dnssec) | Consulta configurações DNSSEC |

### Security

| Data Source | Descrição |
|-------------|-----------|
| [`azion_network_lists`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/network_lists) | Lista Network Lists |
| [`azion_network_list`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/network_list) | Consulta uma Network List específica |
| [`azion_wafs`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/wafs) | Lista WAFs |
| [`azion_waf`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/waf) | Consulta um WAF específico |
| [`azion_waf_rule_sets`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/waf_rule_sets) | Lista conjuntos de regras WAF |
| [`azion_waf_rule_set`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/waf_rule_set) | Consulta um conjunto de regras WAF específico |

### Certificates

| Data Source | Descrição |
|-------------|-----------|
| [`azion_digital_certificates`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/digital_certificates) | Lista certificados digitais |
| [`azion_digital_certificate`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/digital_certificate) | Consulta um certificado específico |

### Functions

| Data Source | Descrição |
|-------------|-----------|
| [`azion_functions`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/functions) | Lista Functions |
| [`azion_function`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/function) | Consulta uma Function específica |

### Other

| Data Source | Descrição |
|-------------|-----------|
| [`azion_custom_pages`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/custom_pages) | Lista páginas personalizadas |
| [`azion_custom_page`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/custom_page) | Consulta uma página personalizada específica |

---

## Exemplos por Categoria

### Workloads

Gerencie workloads e deployments na Azion.

[Ver documentação de Workloads →](/pt-br/documentacao/produtos/terraform-provider/resources/workloads/)

```hcl
# Criar um workload
resource "azion_workload" "example" {
  name = "meu-workload"
  
  eapplication_id = azion_application_main_setting.app.id
  
  active = true
}

# Criar um deployment
resource "azion_workload_deployment" "example" {
  workload_id = azion_workload.example.id
  
  active = true
}

# Consultar workloads existentes
data "azion_workloads" "all" {}
```

### Connectors

Gerencie connectors para integração com origins externas.

[Ver documentação de Connectors →](/pt-br/documentacao/produtos/terraform-provider/resources/connectors/)

```hcl
# Criar um connector
resource "azion_connector" "example" {
  name = "meu-connector"
  
  origin = {
    address = "origin.exemplo.com"
    protocol = "https"
  }
}

# Consultar connectors existentes
data "azion_connectors" "all" {}
```

### Applications

Gerencie Applications e suas configurações.

[Ver documentação de Applications →](/pt-br/documentacao/produtos/terraform-provider/resources/applications/)

```hcl
# Criar uma Application
resource "azion_application_main_settings" "app" {
  name = "minha-aplicacao"
  
  active = true
}

# Configurar cache
resource "azion_application_cache_setting" "cache" {
  application_id = azion_application_main_settings.app.id
  name = "cache-default"
  
  browser_cache_settings = "honor"
  cdn_cache_settings = "honor"
}

# Consultar aplicações existentes
data "azion_applications" "all" {}
```

### Security

Gerencie Firewall, WAF e Network Lists.

[Ver documentação de Security →](/pt-br/documentacao/produtos/terraform-provider/resources/security/)

```hcl
# Criar um Firewall
resource "azion_firewall_main_setting" "firewall" {
  name = "meu-firewall"
  
  active = true
  mode = "waf"
}

# Criar uma Network List
resource "azion_network_list" "whitelist" {
  name = "whitelist-ips"
  list_type = "ip_cidr"
  
  items = [
    "192.168.1.0/24",
    "10.0.0.0/8"
  ]
}

# Consultar firewalls existentes
data "azion_firewalls" "all" {}
```

### DNS

Gerencie zonas e registros DNS.

[Ver documentação de DNS →](/pt-br/documentacao/produtos/terraform-provider/resources/dns/)

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

# Criar um registro DNS
resource "azion_intelligent_dns_record" "www" {
  zone_id = azion_intelligent_dns_zone.zone.id
  name = "www"
  type = "A"
  ttl = 3600
  
  entries = ["192.168.1.1"]
}

# Consultar zonas DNS existentes
data "azion_intelligent_dns_zones" "all" {}
```

### Certificates

Gerencie certificados digitais.

[Ver documentação de Certificates →](/pt-br/documentacao/produtos/terraform-provider/resources/certificates/)

```hcl
# Criar um certificado
resource "azion_digital_certificate" "cert" {
  name = "meu-certificado"
  
  certificate = file("${path.module}/cert.pem")
  private_key = file("${path.module}/key.pem")
}

# Consultar certificados existentes
data "azion_digital_certificates" "all" {}
```

---

## Exemplo Completo

Aqui está um exemplo completo que cria uma infraestrutura básica:

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

provider "azion" {
  api_token = var.api_token
}

# Application
resource "azion_application_main_settings" "app" {
  name = "minha-aplicacao"
  active = true
}

# Cache Setting
resource "azion_application_cache_setting" "cache" {
  application_id = azion_application_main_settings.app.id
  name = "cache-default"
  browser_cache_settings = "honor"
  cdn_cache_settings = "honor"
}

# Connector
resource "azion_connector" "origin" {
  name = "meu-origin"
  origin = {
    address = "origin.exemplo.com"
    protocol = "https"
  }
}

# Workload
resource "azion_workload" "main" {
  name = "meu-workload"
  application_id = azion_application_main_settings.app.id
  active = true
}

# Workload Deployment
resource "azion_workload_deployment" "main" {
  workload_id = azion_workload.main.id
  active = true
}

# Firewall
resource "azion_firewall_main_setting" "firewall" {
  name = "meu-firewall"
  active = true
  mode = "waf"
}

# Outputs
output "application_id" {
  value = azion_application_main_settings.app.id
}

output "workload_id" {
  value = azion_workload.main.id
}

output "connector_id" {
  value = azion_connector.origin.id
}
```

---

## Ver Também

- [Primeiros passos](/pt-br/documentacao/produtos/terraform-provider/getting-started/) - Guia de início rápido
- [Melhores práticas](/pt-br/documentacao/produtos/terraform-provider/best-practices/) - Boas práticas de uso
- [Migração V3 para V4](/pt-br/documentacao/produtos/terraform-provider/migration-v3-to-v4/) - Guia de migração
- [Terraform Registry](https://registry.terraform.io/providers/aziontech/azion/latest/docs) - Documentação oficial