跳到內容

概覽

此使用案例透過 Terraform 在 F5 Distributed Cloud 上管理權威 DNS。一個小型、可重複使用的計畫會為委派網域建立主要 DNS 區域及其記錄,將狀態保存於 Azure Blob Storage,並透過 GitHub Actions 執行「提交 Pull Request 時執行 plan」與「合併時執行 apply」的流程。

  • 一個 xcsh_dns_zone——位於 F5 XC system 命名空間中的權威主要區域,包含 A 記錄。區域名稱為委派網域(以變數定義),因此重新指定目標屬於設定變更,而非程式碼變更。
  • 儲存於 Azure 的遠端 Terraform 狀態,使操作人員的本機環境與 CI 之間可共享執行狀態。
層級選擇原因
Providerf5-sales-demo/xcsh(Terraform 登錄檔)從 F5 XC OpenAPI 自動生成;管理 xcsh_dns_zone 及 DNS 負載平衡器資源。使用 API 權杖進行驗證(Authorization: APIToken <token>)。
狀態後端azurerm(Azure Blob Storage),使用存取金鑰驗證持久且可共享的狀態。採用存取金鑰驗證,原因在於該訂閱僅授予 Contributor 權限,無法指派無金鑰(OIDC / Azure AD)驗證所需的 Storage Blob Data Contributor 角色。
自動化GitHub Actions每次 Pull Request 時執行 plan,合併至 main 時執行 apply。後端協調資訊與輸入參數來自儲存庫變數;憑證來自密鑰

示範流程涵蓋完整的生命週期端到端說明:透過 Terraform 建置區域、驗證其解析結果、使用 DNS 負載平衡器進行容錯移轉,以及拆除資源。請從第 1 階段——建置開始,其中包含部署區域的完整操作說明,涵蓋每個 Terraform 檔案、CI 工作流程,以及所需的變數與密鑰。