Phase 2 — Validate
Phase 2 confirms the zone from Phase 1 is live: records resolve publicly, the F5 XC configuration matches what Terraform declared, and a re-plan reports no drift.
Readiness gate
Section titled “Readiness gate”Query the zone through the F5 XC API and confirm the expected record set exists. Fill the
placeholders from the form at the top of the page, a .env file, or your shell.
curl -s \ -H "Authorization: APIToken xF5XC_API_TOKENx" \ "xF5XC_API_URLx/api/config/dns/namespaces/system/dns_zones/xF5XC_DOMAINx" \ | jq '{ zone: .metadata.name, group: .spec.primary.rr_set_group[0].metadata.name, records: [.spec.primary.rr_set_group[0].rr_set[] | .a_record.name], status: (if (.metadata.name != null) then "PASS" else "FAIL" end) }'A PASS with the demo-records group and the www / app / api names confirms the F5 XC side.
Public resolution
Section titled “Public resolution”The domain is delegated to F5 XC, so the records resolve on the public internet. Check each name:
for name in www app api; do echo "$name.xF5XC_DOMAINx -> $(dig +short "$name.xF5XC_DOMAINx" A | tr '\n' ' ')"doneIdempotency
Section titled “Idempotency”A second plan against the unchanged configuration must report no changes:
-
Re-run the plan:
Terminal window cd terraformterraform plan -
Confirm the output is
No changes. Your infrastructure matches the configuration.
In CI, the same guarantee holds: reopening a pull request that does not change terraform/ produces
an empty plan.
Continue to Phase 3 — Failover.