# Resources & Data Sources - Terraform Provider

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

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

This page provides practical examples for using the Azion Terraform Provider v2.0, including Resources and Data Sources.

---

The Azion Terraform Provider offers two main types of configurations:

- **Resources**: Create, update, and delete resources on Azion
- **Data Sources**: Query information about existing resources

---

## Available Resources

### Workloads

| Resource | Description |
|----------|-------------|
| [`azion_workload`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/workload) | Manage workloads |
| [`azion_workload_deployment`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/workload_deployment) | Manage workload deployments |

### Connectors

| Resource | Description |
|----------|-------------|
| [`azion_connector`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/connector) | Manage connectors |

### Applications

| Resource | Description |
|----------|-------------|
| [`azion_application_main_settings`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/application_main_setting) | Application main settings |
| [`azion_application_cache_setting`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/application_cache_setting) | Cache settings |
| [`azion_application_device_group`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/application_device_group) | Device groups |
| [`azion_application_rule_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/application_rule_engine) | Rules Engine |
| [`azion_application_function_instance`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/application_functions_instance) | Function instances in applications |

### Firewall

| Resource | Description |
|----------|-------------|
| [`azion_firewall_main_setting`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/firewall_main_setting) | Firewall main settings |
| [`azion_firewall_rule_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/firewall_rule_engine) | Firewall Rules Engine |
| [`azion_firewall_functions_instance`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/firewall_functions_instance) | Function instances in firewalls |

### Intelligent DNS

| Resource | Description |
|----------|-------------|
| [`azion_intelligent_dns_zone`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/intelligent_dns_zone) | DNS zones |
| [`azion_intelligent_dns_record`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/intelligent_dns_record) | DNS records |
| [`azion_intelligent_dns_dnssec`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/intelligent_dns_dnssec) | DNSSEC settings |

### Security

| Resource | Description |
|----------|-------------|
| [`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) | WAF rule sets |

### Certificates

| Resource | Description |
|----------|-------------|
| [`azion_digital_certificate`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/digital_certificate) | Digital certificates |

### Functions

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

### Other

| Resource | Description |
|----------|-------------|
| [`azion_custom_page`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/resources/custom_page) | Custom pages |

---

## Available Data Sources

### Workloads

| Data Source | Description |
|-------------|-------------|
| [`azion_workloads`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/workloads) | List workloads |
| [`azion_workload`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/workload) | Query a specific workload |
| [`azion_workload_deployments`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/workload_deployments) | List workload deployments |
| [`azion_workload_deployment`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/workload_deployment) | Query a specific deployment |

### Connectors

| Data Source | Description |
|-------------|-------------|
| [`azion_connectors`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/connectors) | List connectors |
| [`azion_connector`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/connector) | Query a specific connector |

### Applications

| Data Source | Description |
|-------------|-------------|
| [`azion_applications_main_settings`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/applications_main_settings) | List Applications |
| [`azion_application_main_settings`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_main_settings) | Query a specific Application |
| [`azion_application_cache_settings`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_cache_settings) | List cache settings |
| [`azion_application_cache_setting`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_cache_setting) | Query a specific cache setting |
| [`azion_application_device_groups`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_device_groups) | List device groups |
| [`azion_application_device_group`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_device_group) | Query a specific device group |
| [`azion_application_rules_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_rules_engine) | List Rules Engines |
| [`azion_application_rule_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_rule_engine) | Query a specific Rule Engine |
| [`azion_application_functions_instances`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_functions_instances) | List Function instances |
| [`azion_application_functions_instance`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/application_functions_instance) | Query a specific Function instance |

### Firewall

| Data Source | Description |
|-------------|-------------|
| [`azion_firewall_main_settings`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/firewall_main_settings) | List Firewalls |
| [`azion_firewall_main_setting`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/firewall_main_setting) | Query a specific Firewall |
| [`azion_firewall_rules_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/firewall_rules_engine) | List Firewall Rules Engines |
| [`azion_firewall_rule_engine`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/firewall_rule_engine) | Query a specific Firewall Rule Engine |
| [`azion_firewall_functions_instances`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/firewall_functions_instances) | List Function instances in Firewall |
| [`azion_firewall_functions_instance`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/firewall_functions_instance) | Query a specific Function instance in Firewall |

### Intelligent DNS

| Data Source | Description |
|-------------|-------------|
| [`azion_intelligent_dns_zones`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_zones) | List DNS zones |
| [`azion_intelligent_dns_zone`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_zone) | Query a specific DNS zone |
| [`azion_intelligent_dns_records`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_records) | List DNS records |
| [`azion_intelligent_dns_dnssec`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_dnssec) | Query DNSSEC settings |

### Security

| Data Source | Description |
|-------------|-------------|
| [`azion_network_lists`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/network_lists) | List Network Lists |
| [`azion_network_list`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/network_list) | Query a specific Network List |
| [`azion_wafs`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/wafs) | List WAFs |
| [`azion_waf`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/waf) | Query a specific WAF |
| [`azion_waf_rule_sets`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/waf_rule_sets) | List WAF rule sets |
| [`azion_waf_rule_set`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/waf_rule_set) | Query a specific WAF rule set |

### Certificates

| Data Source | Description |
|-------------|-------------|
| [`azion_digital_certificates`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/digital_certificates) | List digital certificates |
| [`azion_digital_certificate`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/digital_certificate) | Query a specific certificate |

### Functions

| Data Source | Description |
|-------------|-------------|
| [`azion_functions`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/functions) | List Functions |
| [`azion_function`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/function) | Query a specific Function |

### Other

| Data Source | Description |
|-------------|-------------|
| [`azion_custom_pages`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/custom_pages) | List custom pages |
| [`azion_custom_page`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/custom_page) | Query a specific custom page |

---

## Examples by Category

### Workloads

Manage workloads and deployments on Azion.

[View Workloads documentation →](/en/documentation/products/terraform-provider/resources/workloads/)

```hcl
# Create a workload
resource "azion_workload" "example" {
  name = "my-workload"
  
  application_id = azion_application_main_setting.app.id
  
  active = true
}

# Create a deployment
resource "azion_workload_deployment" "example" {
  workload_id = azion_workload.example.id
  
  active = true
}

# Query existing workloads
data "azion_workloads" "all" {}
```

### Connectors

Manage connectors for integration with external origins.

[View Connectors documentation →](/en/documentation/products/terraform-provider/resources/connectors/)

```hcl
# Create a connector
resource "azion_connector" "example" {
  name = "my-connector"
  
  origin = {
    address = "origin.example.com"
    protocol = "https"
  }
}

# Query existing connectors
data "azion_connectors" "all" {}
```

### Applications

Manage Applications and their configurations.

[View Applications documentation →](/en/documentation/products/terraform-provider/resources/applications/)

```hcl
# Create an Application
resource "azion_application_main_settings" "app" {
  name = "my-application"
  
  active = true
}

# Configure 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"
}

# Query existing applications
data "azion_applications" "all" {}
```

### Security

Manage Firewall, WAF, and Network Lists.

[View Security documentation →](/en/documentation/products/terraform-provider/resources/security/)

```hcl
# Create a Firewall
resource "azion_firewall_main_setting" "firewall" {
  name = "my-firewall"
  
  active = true
  mode = "waf"
}

# Create a 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"
  ]
}

# Query existing firewalls
data "azion_firewalls" "all" {}
```

### DNS

Manage DNS zones and records.

[View DNS documentation →](/en/documentation/products/terraform-provider/resources/dns/)

```hcl
# Create a DNS zone
resource "azion_intelligent_dns_zone" "zone" {
  name = "example.com"
  domain = "example.com"
  
  active = true
}

# Create a DNS record
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"]
}

# Query existing DNS zones
data "azion_intelligent_dns_zones" "all" {}
```

### Certificates

Manage digital certificates.

[View Certificates documentation →](/en/documentation/products/terraform-provider/resources/certificates/)

```hcl
# Create a certificate
resource "azion_digital_certificate" "cert" {
  name = "my-certificate"
  
  certificate = file("${path.module}/cert.pem")
  private_key = file("${path.module}/key.pem")
}

# Query existing certificates
data "azion_digital_certificates" "all" {}
```

---

## Complete Example

Here's a complete example that creates a basic infrastructure:

```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 = "my-application"
  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 = "my-origin"
  origin = {
    address = "origin.example.com"
    protocol = "https"
  }
}

# Workload
resource "azion_workload" "main" {
  name = "my-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 = "my-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
}
```

---

## See Also

- [Getting Started](/en/documentation/products/terraform-provider/getting-started/) - Quick start guide
- [Best Practices](/en/documentation/products/terraform-provider/best-practices/) - Best practices for usage
- [Migration V3 to V4](/en/documentation/products/terraform-provider/terraform-migration-v3-to-v4/) - Migration guide
- [Terraform Registry](https://registry.terraform.io/providers/aziontech/azion/latest/docs) - Official documentation