包含 Terraform 組態的設計需要存取與 Automation Assembler 內部部署產品整合的 Terraform 執行階段環境。

如何新增 Terraform 執行階段

執行階段環境由 Kubernetes 叢集組成,該叢集會執行 Terraform CLI 命令以執行請求的作業。此外,執行階段還會收集記錄並傳回 Terraform CLI 命令的結果。

VMware Aria Automation 內部部署產品需要使用者設定自己的 Terraform 執行階段 Kubernetes 叢集。每個組織僅支援一個 Terraform 執行階段。該組織的所有 Terraform 部署都使用相同的執行階段。

備註:

若要執行 Terraform 命令和狀態,您需要在 K8s 上執行的 Terraform 執行時間環境。在內部部署 VMware Aria Automation 中建立 Terraform 整合時,可以選擇受管理的 k8 (即已由 VMware Aria Automation 管理的 k8s 叢集) 或外部 k8s 叢集 (即不由 VMware Aria Automation 管理的 k8s 叢集) 和將在其中建立 Terraform Pod 的命名空間。如果您使用的是外部 叢集,則必須為 Terraform 執行時間目標提供 k8s 叢集的 Kubeconfig 存取權。Kubeconfig 是 k8s 標準,Kubeconfig 不需要是管理員 Kubeconfig。您可以使用具有最低權限的服務帳戶,例如,在命名空間中執行 Pod 的權限,以及生成 Kubeconfig 以用於 VMware Aria Automation Terraform 執行階段整合的權限。

  1. 確認是否具有要在其上執行 Terraform CLI 的 Kubernetes 叢集。
    • 所有使用者均可提供 kubeconfig 檔案,以在未受管理的 Kubernetes 叢集上執行 Terraform CLI。
    • Enterprise 授權使用者可以選擇在 VMware Aria Automation 管理的 Kubernetes 叢集上執行 Terraform CLI。

      Automation Assembler 中,移至基礎結構 > 資源 > Kubernetes,並確認您具有 Kubernetes 叢集。如果需要新增一個叢集,請參閱如何在 Automation Assembler 中使用 Kubernetes

  2. 如果新增或修改了 Kubernetes 叢集,請等待其資料收集完成。

    資料收集會擷取命名空間的清單和其他資訊,並且可能最多需要 5 分鐘的時間,具體取決於提供者。

  3. 在資料收集完成後,移至基礎結構 > 連線 > 整合 > 新增整合,然後選取 Terraform 執行階段卡。
  4. 輸入設定。
    圖 1. Terraform 執行階段整合範例
    Advanced 授權使用者的 Terraform 執行階段整合範例
    設定 說明
    名稱 為執行階段整合指定唯一名稱。
    說明 說明整合適用的內容。
    Terraform 執行階段整合:
    執行階段類型 (僅限 Enterprise) Enterprise 授權使用者可以選擇是在 VMware Aria Automation 管理的 Kubernetes 叢集還是未受管理的叢集上執行 Terraform CLI。
    Kubernetes kubeconfig (所有使用者)

    對於未受管理的 Kubernetes叢集,請貼上外部叢集之 kubeconfig 檔案的全部內容。

    若要透過 Proxy 伺服器使用外部 Kubernetes 執行階段,請參閱〈如何新增 Proxy 支援〉

    此選項適用於所有使用者。

    Kubernetes 叢集 (僅限 Enterprise)

    對於 VMware Aria Automation 管理的 Kubernetes,選取要在其中執行 Terraform CLI 的叢集。

    叢集及其 kubeconfig 檔案必須可以連線。可以在 /cmx/api/resources/k8s/clusters/{clusterId}/kube-config 上使用 GET 驗證 kubeconfig 的存取權。

    此選項僅適用於 Enterprise 授權。

    Kubernetes 命名空間 選取要在叢集中使用的命名空間,以建立執行 Terraform CLI 的網繭。
    執行階段容器設定:
    映像 輸入您要執行之 Terraform 版本的容器映像的路徑。
    備註: [驗證] 按鈕不會檢查容器映像。
    CPU 請求 輸入執行容器的 CPU 數量。預設值為 250 個毫核。
    CPU 限制 輸入執行容器允許的最大 CPU 數量。預設值為 250 個毫核。
    記憶體請求 輸入執行容器的記憶體數量。預設值為 512 MB。
    記憶體限制 輸入執行容器允許的最大記憶體數量。預設值為 512 MB。
  5. 按一下驗證並視需要調整設定。
  6. 按一下新增

將快取設定。新增整合後,您可以修改叢集或命名空間等設定,但可能最多需要 5 分鐘的時間才能偵測到變更以及在新設定下執行 Terraform CLI。

對 Terraform 執行階段進行疑難排解

某些 Terraform 組態部署問題可能與執行階段整合相關。

問題 原因 解決方案
驗證失敗並顯示錯誤,指出命名空間無效。 您已修改叢集,但在 UI 中保留了先前的命名空間。 一律在修改叢集選取項目後重新選取命名空間。
[命名空間] 下拉式清單為空白或未列出新增的命名空間。 叢集的資料收集尚未完成。在輸入或修改叢集後執行資料收集最多需要 5 分鐘,而在輸入或修改命名空間後最多需要 10 分鐘。 對於具有現有命名空間的新叢集,請最多等待 5 分鐘,以完成資料收集。

對於現有叢集中的新命名空間,請最多等待 10 分鐘,以完成資料收集。

如果此問題持續發生,請移除叢集,然後將其重新新增到基礎結構 > 資源 > Kubernetes 之下。

即使更新了整合帳戶,也會在先前的叢集、先前的命名空間中或使用先前的執行階段設定建立 Terraform CLI 容器。 VMware Aria Automation 所使用的 Kubernetes API 用戶端將快取 5 分鐘。 變更可能最多需要 5 分鐘才會生效。
驗證或 Terraform 部署作業失敗並顯示錯誤,指出 kubeconfig 不可用。 有時,由於無法從 VMware Aria Automation 連線到叢集,會出現這些錯誤。

在其他情況下,使用者認證、Token 或憑證無效。

發生 Kubeconfig 錯誤的原因可能有多個,並且可能需要洽詢技術支援以進行疑難排解。

如何新增 Proxy 支援

若要透過 Proxy 伺服器連線外部 Kubernetes 執行階段叢集,請依照下列步驟進行操作。

  1. 登入外部 Kubernetes 叢集伺服器。
  2. 建立空白資料夾。
  3. 在新資料夾中,將下列幾行新增到名為 Dockerfile 的新檔案中。
    FROM projects.registry.vmware.com/vra/terraform:latest as final
    ENV https_proxy=protocol://username:password@proxy_host:proxy_port
    ENV http_proxy=protocol://username:password@proxy_host:proxy_port
    ENV no_proxy=.local,.localdomain,localhost
  4. 修改預留位置值,以便 https_proxyhttp_proxy 環境變數包括用於存取網際網路的 Proxy 伺服器設定。

    根據您的 Proxy 伺服器所使用的通訊協定,protocol 為 http 或 https,這可能與 https_proxyhttp_proxy 的環境變數名稱不相符。

  5. 儲存並關閉 Dockerfile。
  6. 從空白資料夾中,執行下列命令。根據您的帳戶權限,您可能需要在 sudo 模式下執行該命令。

    docker build --file Dockerfile --tag custom-terraform-runtime:1.0 .

    該命令會建立本機 custom-terraform-runtime:1.0 Docker 映像。

  7. Automation Assembler 中的基礎結構 > 連線 > 整合下,移至 Terraform 執行階段整合。
  8. 建立或編輯執行階段容器設定以使用 custom-terraform-runtime:1.0 映像:
    執行階段 Proxy 映像