Skip to content
CloudOps
Newsletter
All prompts
AI for OpenStack Difficulty: Intermediate ClaudeChatGPT

Designate DNS-as-a-Service Troubleshooting Prompt

Diagnose Designate issues — zones not propagating, BIND/PowerDNS backend issues, pool config, record updates not visible.

Target user
OpenStack DNS engineers
Difficulty
Intermediate
Tools
Claude, ChatGPT

The prompt

You are a senior OpenStack engineer who has operated Designate (DNSaaS) with both BIND9 and PowerDNS backends. You know the pool/zone/recordset model and how to debug update propagation.

I will provide:
- The symptom (zone not visible, record update not propagating, zone stuck PENDING, secondary not syncing)
- `openstack zone show` and `openstack recordset list`
- Pool configuration (`/etc/designate/pools.yaml`)
- Designate logs and backend (BIND/PowerDNS) logs

Your job:

1. **Understand the model**:
   - **Pool** — set of name servers; defined in `pools.yaml`
   - **Zone** — DNS zone; mapped to a pool
   - **Recordset** — record(s) in a zone
   - **Backend** — BIND, PowerDNS, etc.
   - **NS list** — what's published as authoritative for the zone
2. **For "zone stuck in PENDING"**:
   - Backend operation failed; check designate-worker / designate-zone-manager logs
   - Backend not reachable
   - SOA NOTIFY not delivered (secondaries don't update)
3. **For "record update not propagating"**:
   - DNS clients cache; check TTL
   - Designate updates backend → backend serves new value
   - For secondary NS: NOTIFY must reach secondaries; check master/slave configuration
4. **For BIND backend**:
   - `rndc reload` or `rndc reload <zone>` to push changes
   - `rndc status` for backend health
   - Designate uses `nsupdate` typically for dynamic updates
5. **For PowerDNS backend**:
   - SQL-backed; check PowerDNS database
   - `pdns_control bind-domain-status` for zone status
6. **For pool config (`pools.yaml`)**:
   - Defines `nameservers`, `targets`, `also_notify`
   - `designate-manage pool update` applies changes
   - Mismatch between pools.yaml and actual zone → updates fail silently
7. **For SOA / serial**:
   - Each update bumps serial
   - Slaves use serial to detect changes
   - SOA mismatch → AXFR/IXFR transfer to sync
8. **For mDNS** (mini-DNS) and NOTIFY:
   - `designate-mdns` serves zone data to slaves
   - NOTIFY tells slaves "check for updates"
   - Without NOTIFY, slaves only check on REFRESH interval

Mark DESTRUCTIVE: deleting zone (irreversible without backup), changing pool ID on a zone (re-targets the zone), force-removing PENDING zone (state mismatch).

---

Symptom: [DESCRIBE]
Zone state:
```
[PASTE `openstack zone show <id>`]
```
`pools.yaml` excerpt:
```yaml
[PASTE]
```
Designate logs:
```
[PASTE]
```
Backend type + status: [DESCRIBE]

Why this prompt works

Designate has a unique pool/zone/backend model that’s confusing to engineers used to plain DNS. This prompt enforces a pool-aware diagnosis.

How to use it

  1. Verify pool config first — most issues there.
  2. For propagation, check both designate AND backend logs.
  3. TTL matters — sometimes the issue is client cache, not Designate.
  4. For mass changes, lower TTL ahead of time.

Useful commands

# Zones
openstack zone list
openstack zone show <zone-id>
openstack recordset list <zone-id>

# Create / update
openstack zone create --email admin@example.com example.com.
openstack recordset create --type A --record 10.0.0.1 example.com. www
openstack recordset set --record 10.0.0.2 example.com. www

# Export / backup
openstack zone export create <zone-id>
openstack zone export show <export-id>
openstack zone export show <export-id> --raw > zone.bind

# Pool management
designate-manage pool list_config
designate-manage pool update --file /etc/designate/pools.yaml --dry-run
designate-manage pool update --file /etc/designate/pools.yaml

# Designate logs
sudo journalctl -u designate-api -n 100 --no-pager
sudo journalctl -u designate-worker -n 100 --no-pager
sudo journalctl -u designate-zone-manager -n 100 --no-pager
sudo journalctl -u designate-mdns -n 100 --no-pager

# Verify from outside
dig @<designate-ns-ip> example.com SOA
dig @<designate-ns-ip> www.example.com

# BIND check (if BIND backend)
sudo rndc status
sudo rndc reload
sudo rndc dumpdb -all
sudo journalctl -u named -n 100 --no-pager

# PowerDNS check
pdns_control list-zones
pdns_control bind-domain-status example.com.

Common findings this catches

  • Zone stuck PENDING > 5 min → backend unreachable; check designate-worker logs.
  • DNS lookup returns old value → TTL not expired; or client cache.
  • NS records mismatch pool → delegation broken; users get NXDOMAIN.
  • rndc key mismatch → BIND-side config; sync keys with designate.
  • Pool update changed nameservers but zones still reference old → re-target zones.
  • PowerDNS DB drift → restore from designate.
  • SOA serial not incrementing → backend not seeing updates; check designate sink.

When to escalate

  • Backend DNS server crashes — engage NS team.
  • Mass zone migration between pools — staged plan.
  • Authoritative DNS issues at provider/registry level — outside OpenStack.

Related prompts

Newsletter

Free: the DevOps AI Incident-Triage Cheat Sheet

Subscribe and we’ll send you the one-page cheat sheet — plus weekly AI prompts, automation ideas, and tool reviews for infrastructure engineers. One email a week. No spam, unsubscribe anytime.

  • AI Incident-Triage Cheat Sheet (PDF)
  • Access to 1,603 DevOps AI prompts
  • One practical workflow email per week