vRealize Automation Cloud 中將 Terraform 組態作為資源嵌入時,請注意某些限制和疑難排解。

Terraform 組態的限制

  • 驗證包含 Terraform 組態的設計時,[測試] 按鈕會檢查 Cloud Assembly 語法,但不會檢查原生 Terraform 程式碼語法。

    此外,[測試] 按鈕不會驗證與 Terraform 組態相關聯的 commit 識別碼。

  • 最近發行的 Terraform 版本 0.13 尚未獲得官方支援。
  • 對於包含 Terraform 組態的雲端範本,將範本複製到其他專案需要下列因應措施。
    1. 在新專案的整合索引標籤下,複製 repositoryId 以進行整合。
    2. 開啟複製範本。在代碼編輯器中,將 repositoryId 取代為您所複製的內容。
  • 在版本控制存放庫中,不包括具有組態檔的 Terraform 狀態檔案。如果 terraform.tfstate 存在,則在部署期間會發生錯誤。

Terraform 父資源支援的第 2 天動作

對於 Terraform 父資源,您可以檢視或重新整理 Terraform 狀態檔案。如需有關狀態檔案動作的詳細資訊,請參閱您可以對 Cloud Assembly 部署執行哪些動作中的完整動作清單。

子資源支援的第 2 天動作

部署 Terraform 組態後,可能需要最多 20 分鐘的時間才可以對子資源執行第 2 天動作。

對於 Terraform 組態中的子資源,僅支援下列部分第 2 天動作。如需有關動作的詳細資料,請在您可以對 Cloud Assembly 部署執行哪些動作中的完整動作清單中進行查詢。

提供者 Terraform 資源類型 支援的第 2 天動作
AWS aws_instance 開啟電源
關閉電源
重新開機
重設
Azure azurerm_virtual_machine 開啟電源
關閉電源
重新啟動
暫停
vSphere vsphere_virtual_machine 開啟電源
關閉電源
重新開機
重設
關閉
暫停
建立快照
刪除快照
還原快照
GCP google_compute_instance 開啟電源
關閉電源
建立快照
刪除快照

對第 2 天動作可用性進行疑難排解

遺失或已停用的開箱即用 (OOTB) 第 2 天動作可能需要進行疑難排解。

問題 原因 解決方案
在 [動作] 功能表上,Terraform 資源沒有預期的 OOTB 第 2 天動作。

先前清單中所述的提供者和資源類型可能不支援此動作。

或者,由於資源探索和資源快取計時,此動作可能需要長達 20 分鐘的時間才會顯示。

檢查設計中的提供者和資源類型。

最多等待 20 分鐘,以完成資料收集。

Terraform 資源沒有預期的第 2 天動作,即使在收集資料所花費的 20 分鐘後亦然。

資源探索問題導致動作無法顯示。

在專案外的雲端區域上意外建立資源時,會出現此情況。例如,您的專案僅包括雲端帳戶和區域 us-east-1 雲端區域,但 Terraform 組態包括 us-west-1 的提供者區塊,並且您在設計時未進行變更。

另一種可能性是資料收集不起作用。

對照設計中的雲端區域檢查專案雲端區域。

移至基礎結構 > 連線 > 雲端帳戶,然後檢查雲端帳戶的資料收集狀態和上次成功收集時間。

即使資源狀態和資料收集沒有明顯的問題,第 2 天動作也會處於停用狀態 (灰色)。 眾所周知,偶爾會出現間歇性計時問題和資料收集失敗。 此問題應在 20 分鐘內自行解決。
錯誤的第 2 天動作處於停用狀態,該動作應根據資源狀態處於作用中狀態。

例如,「關閉電源」處於啟用狀態,「開啟電源」處於停用狀態,即使已使用提供者介面關閉資源的電源亦是如此。

資料收集時間可能會導致暫時不相符。如果您從外部 vRealize Automation Cloud 變更電源狀態,則需要一些時間才能正確反映變更。 最多等待 20 分鐘。

vRealize Automation Cloud 中使用自訂 Terraform 提供者

如果已建立自訂 Terraform 提供者並且想要加以使用,請執行下列步驟。

  1. 在 git 版本控制存放庫中的預設 Terraform 目錄下,新增下列子目錄結構。

    terraform.d/plugins/linux_amd64

  2. 將自訂 Terraform 提供者 Go 二進位檔新增至 linux_amd64 目錄。

    依預設,terraform init 將會在該目錄中搜尋自訂提供者外掛程式。

備註: VMware 已出現過自訂 Terraform 提供者無法執行並發佈 no such file or directory 訊息的情況。

如果發生此情況,請嘗試在 CGO 處於停用狀態 (設定為零) 的情況下重新編譯自訂提供者 Go 二進位檔。CGO 代表呼叫 C 代碼的 Go 套件。