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 | Manage workloads |
azion_workload_deployment | Manage workload deployments |
Connectors
| Resource | Description |
|---|---|
azion_connector | Manage connectors |
Applications
| Resource | Description |
|---|---|
azion_application_main_settings | Application main settings |
azion_application_cache_setting | Cache settings |
azion_application_device_group | Device groups |
azion_application_rule_engine | Rules Engine |
azion_application_function_instance | Function instances in applications |
Firewall
| Resource | Description |
|---|---|
azion_firewall_main_setting | Firewall main settings |
azion_firewall_rule_engine | Firewall Rules Engine |
azion_firewall_functions_instance | Function instances in firewalls |
Intelligent DNS
| Resource | Description |
|---|---|
azion_intelligent_dns_zone | DNS zones |
azion_intelligent_dns_record | DNS records |
azion_intelligent_dns_dnssec | DNSSEC settings |
Security
| Resource | Description |
|---|---|
azion_network_list | Network Lists |
azion_waf | Web Application Firewall |
azion_waf_rule_set | WAF rule sets |
Certificates
| Resource | Description |
|---|---|
azion_digital_certificate | Digital certificates |
Functions
| Resource | Description |
|---|---|
azion_function | Functions |
Other
| Resource | Description |
|---|---|
azion_custom_page | Custom pages |
Available Data Sources
Workloads
| Data Source | Description |
|---|---|
azion_workloads | List workloads |
azion_workload | Query a specific workload |
azion_workload_deployments | List workload deployments |
azion_workload_deployment | Query a specific deployment |
Connectors
| Data Source | Description |
|---|---|
azion_connectors | List connectors |
azion_connector | Query a specific connector |
Applications
| Data Source | Description |
|---|---|
azion_applications_main_settings | List Applications |
azion_application_main_settings | Query a specific Application |
azion_application_cache_settings | List cache settings |
azion_application_cache_setting | Query a specific cache setting |
azion_application_device_groups | List device groups |
azion_application_device_group | Query a specific device group |
azion_application_rules_engine | List Rules Engines |
azion_application_rule_engine | Query a specific Rule Engine |
azion_application_functions_instances | List Function instances |
azion_application_functions_instance | Query a specific Function instance |
Firewall
| Data Source | Description |
|---|---|
azion_firewall_main_settings | List Firewalls |
azion_firewall_main_setting | Query a specific Firewall |
azion_firewall_rules_engine | List Firewall Rules Engines |
azion_firewall_rule_engine | Query a specific Firewall Rule Engine |
azion_firewall_functions_instances | List Function instances in Firewall |
azion_firewall_functions_instance | Query a specific Function instance in Firewall |
Intelligent DNS
| Data Source | Description |
|---|---|
azion_intelligent_dns_zones | List DNS zones |
azion_intelligent_dns_zone | Query a specific DNS zone |
azion_intelligent_dns_records | List DNS records |
azion_intelligent_dns_dnssec | Query DNSSEC settings |
Security
| Data Source | Description |
|---|---|
azion_network_lists | List Network Lists |
azion_network_list | Query a specific Network List |
azion_wafs | List WAFs |
azion_waf | Query a specific WAF |
azion_waf_rule_sets | List WAF rule sets |
azion_waf_rule_set | Query a specific WAF rule set |
Certificates
| Data Source | Description |
|---|---|
azion_digital_certificates | List digital certificates |
azion_digital_certificate | Query a specific certificate |
Functions
| Data Source | Description |
|---|---|
azion_functions | List Functions |
azion_function | Query a specific Function |
Other
| Data Source | Description |
|---|---|
azion_custom_pages | List custom pages |
azion_custom_page | Query a specific custom page |
Examples by Category
Workloads
Manage workloads and deployments on Azion.
View Workloads documentation →
# Create a workloadresource "azion_workload" "example" { name = "my-workload"
application_id = azion_application_main_setting.app.id
active = true}
# Create a deploymentresource "azion_workload_deployment" "example" { workload_id = azion_workload.example.id
active = true}
# Query existing workloadsdata "azion_workloads" "all" {}Connectors
Manage connectors for integration with external origins.
View Connectors documentation →
# Create a connectorresource "azion_connector" "example" { name = "my-connector"
origin = { address = "origin.example.com" protocol = "https" }}
# Query existing connectorsdata "azion_connectors" "all" {}Applications
Manage Applications and their configurations.
View Applications documentation →
# Create an Applicationresource "azion_application_main_settings" "app" { name = "my-application"
active = true}
# Configure cacheresource "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 applicationsdata "azion_applications" "all" {}Security
Manage Firewall, WAF, and Network Lists.
# Create a Firewallresource "azion_firewall_main_setting" "firewall" { name = "my-firewall"
active = true mode = "waf"}
# Create a Network Listresource "azion_network_list" "whitelist" { name = "whitelist-ips" list_type = "ip_cidr"
items = [ "192.168.1.0/24", "10.0.0.0/8" ]}
# Query existing firewallsdata "azion_firewalls" "all" {}DNS
Manage DNS zones and records.
# Create a DNS zoneresource "azion_intelligent_dns_zone" "zone" { name = "example.com" domain = "example.com"
active = true}
# Create a DNS recordresource "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 zonesdata "azion_intelligent_dns_zones" "all" {}Certificates
Manage digital certificates.
View Certificates documentation →
# Create a certificateresource "azion_digital_certificate" "cert" { name = "my-certificate"
certificate = file("${path.module}/cert.pem") private_key = file("${path.module}/key.pem")}
# Query existing certificatesdata "azion_digital_certificates" "all" {}Complete Example
Here’s a complete example that creates a basic infrastructure:
terraform { required_providers { azion = { source = "aziontech/azion" version = "2.0.0" } }}
provider "azion" { api_token = var.api_token}
# Applicationresource "azion_application_main_settings" "app" { name = "my-application" active = true}
# Cache Settingresource "azion_application_cache_setting" "cache" { application_id = azion_application_main_settings.app.id name = "cache-default" browser_cache_settings = "honor" cdn_cache_settings = "honor"}
# Connectorresource "azion_connector" "origin" { name = "my-origin" origin = { address = "origin.example.com" protocol = "https" }}
# Workloadresource "azion_workload" "main" { name = "my-workload" application_id = azion_application_main_settings.app.id active = true}
# Workload Deploymentresource "azion_workload_deployment" "main" { workload_id = azion_workload.main.id active = true}
# Firewallresource "azion_firewall_main_setting" "firewall" { name = "my-firewall" active = true mode = "waf"}
# Outputsoutput "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 - Quick start guide
- Best Practices - Best practices for usage
- Migration V3 to V4 - Migration guide
- Terraform Registry - Official documentation