View in Terraform Registry

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

ResourceDescription
azion_workloadManage workloads
azion_workload_deploymentManage workload deployments

Connectors

ResourceDescription
azion_connectorManage connectors

Applications

ResourceDescription
azion_application_main_settingsApplication main settings
azion_application_cache_settingCache settings
azion_application_device_groupDevice groups
azion_application_rule_engineRules Engine
azion_application_function_instanceFunction instances in applications

Firewall

ResourceDescription
azion_firewall_main_settingFirewall main settings
azion_firewall_rule_engineFirewall Rules Engine
azion_firewall_functions_instanceFunction instances in firewalls

Intelligent DNS

Security

ResourceDescription
azion_network_listNetwork Lists
azion_wafWeb Application Firewall
azion_waf_rule_setWAF rule sets

Certificates

ResourceDescription
azion_digital_certificateDigital certificates

Functions

ResourceDescription
azion_functionFunctions

Other

ResourceDescription
azion_custom_pageCustom pages

Available Data Sources

Workloads

Data SourceDescription
azion_workloadsList workloads
azion_workloadQuery a specific workload
azion_workload_deploymentsList workload deployments
azion_workload_deploymentQuery a specific deployment

Connectors

Data SourceDescription
azion_connectorsList connectors
azion_connectorQuery a specific connector

Applications

Data SourceDescription
azion_applications_main_settingsList Applications
azion_application_main_settingsQuery a specific Application
azion_application_cache_settingsList cache settings
azion_application_cache_settingQuery a specific cache setting
azion_application_device_groupsList device groups
azion_application_device_groupQuery a specific device group
azion_application_rules_engineList Rules Engines
azion_application_rule_engineQuery a specific Rule Engine
azion_application_functions_instancesList Function instances
azion_application_functions_instanceQuery a specific Function instance

Firewall

Data SourceDescription
azion_firewall_main_settingsList Firewalls
azion_firewall_main_settingQuery a specific Firewall
azion_firewall_rules_engineList Firewall Rules Engines
azion_firewall_rule_engineQuery a specific Firewall Rule Engine
azion_firewall_functions_instancesList Function instances in Firewall
azion_firewall_functions_instanceQuery a specific Function instance in Firewall

Intelligent DNS

Data SourceDescription
azion_intelligent_dns_zonesList DNS zones
azion_intelligent_dns_zoneQuery a specific DNS zone
azion_intelligent_dns_recordsList DNS records
azion_intelligent_dns_dnssecQuery DNSSEC settings

Security

Data SourceDescription
azion_network_listsList Network Lists
azion_network_listQuery a specific Network List
azion_wafsList WAFs
azion_wafQuery a specific WAF
azion_waf_rule_setsList WAF rule sets
azion_waf_rule_setQuery a specific WAF rule set

Certificates

Data SourceDescription
azion_digital_certificatesList digital certificates
azion_digital_certificateQuery a specific certificate

Functions

Data SourceDescription
azion_functionsList Functions
azion_functionQuery a specific Function

Other

Data SourceDescription
azion_custom_pagesList custom pages
azion_custom_pageQuery a specific custom page

Examples by Category

Workloads

Manage workloads and deployments on Azion.

View Workloads documentation →

# 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 →

# 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 →

# 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 →

# 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 →

# 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 →

# 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:

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