# Edge DNS - Terraform Resources

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

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

DNS allows you to manage your DNS zones and records through Terraform, with DNSSEC support for additional security.

---

The DNS resources allow you to manage DNS zones, records, and DNSSEC configurations.

### Available Resources

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

### Available Data Sources

| Data Source | Description |
|--------------|-------------|
| [`azion_intelligent_dns_zones`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_zones) | Query DNS zones |
| [`azion_intelligent_dns_dnssec`](https://registry.terraform.io/providers/aziontech/azion/latest/docs/data-sources/intelligent_dns_dnssec) | Query DNSSEC |

---

## azion_intelligent_dns_zone

### Basic Example

```hcl
resource "azion_intelligent_dns_zone" "example" {
  name    = "example.com"
  active  = true
  
  # Zone configuration
}
```

### Main Arguments

| Argument | Type | Required | Description |
|-----------|------|----------|-------------|
| `name` | string | Yes | DNS zone name |
| `active` | bool | No | Whether the zone is active |

---

## azion_intelligent_dns_record

### Basic Example

```hcl
resource "azion_intelligent_dns_record" "example" {
  zone_id   = azion_intelligent_dns_zone.example.id
  name      = "www"
  type      = "A"
  value     = "192.168.1.1"
  ttl       = 3600
}
```

### Main Arguments

| Argument | Type | Required | Description |
|-----------|------|----------|-------------|
| `zone_id` | string | Yes | DNS zone ID |
| `name` | string | Yes | Record name |
| `type` | string | Yes | Record type (A, AAAA, CNAME, etc.) |
| `value` | string | Yes | Record value |
| `ttl` | number | No | Record TTL |

---

## azion_intelligent_dns_dnssec

### Basic Example

```hcl
resource "azion_intelligent_dns_dnssec" "example" {
  zone_id = azion_intelligent_dns_zone.example.id
  active  = true
}
```

---

## Complete Example

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

provider "azion" {
  api_token = var.api_token
}

# Create DNS zone
resource "azion_intelligent_dns_zone" "my_zone" {
  name   = "mydomain.com"
  active = true
}

# Create A record
resource "azion_intelligent_dns_record" "www" {
  zone_id = azion_intelligent_dns_zone.my_zone.id
  name    = "www"
  type    = "A"
  value   = "192.168.1.1"
  ttl     = 3600
}

# Create CNAME record
resource "azion_intelligent_dns_record" "alias" {
  zone_id = azion_intelligent_dns_zone.my_zone.id
  name    = "alias"
  type    = "CNAME"
  value   = "www.mydomain.com"
  ttl     = 3600
}

# Enable DNSSEC
resource "azion_intelligent_dns_dnssec" "my_dnssec" {
  zone_id = azion_intelligent_dns_zone.my_zone.id
  active  = true
}

output "zone_id" {
  value = azion_intelligent_dns_zone.my_zone.id
}
```

---

## Related Resources

- [Security](/en/documentation/products/terraform-provider/resources/security/) - Manage firewall and WAF
- [Certificates](/en/documentation/products/terraform-provider/resources/certificates/) - Manage certificates
- [Applications](/en/documentation/products/terraform-provider/resources/applications/) - Manage your applications
- [Migration Guide](/en/documentation/products/terraform-provider/terraform-migration-v3-to-v4/) - Migrate from v1.x to v2.0