在 vRealize Automation 中將 Terraform 組態作為資源嵌入時,請注意某些限制和疑難排解。
Terraform 組態的限制
- 驗證包含 Terraform 組態的設計時,[測試] 按鈕會檢查 Cloud Assembly 語法,但不會檢查原生 Terraform 程式碼語法。
此外,[測試] 按鈕不會驗證與 Terraform 組態相關聯的 commit 識別碼。
- 對於包含 Terraform 組態的雲端範本,將範本複製到其他專案需要下列因應措施。
- 在新專案的整合索引標籤下,複製
repositoryId
以進行整合。 - 開啟複製範本。在代碼編輯器中,將
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 變更電源狀態,則需要一些時間才能正確反映變更。 | 最多等待 20 分鐘。 |
在 vRealize Automation 中使用自訂 Terraform 提供者
如果您 若要使用自訂 Terraform 提供者,請執行以下步驟。
在 git 版本控制存放庫中,在包含 main.tf 的 Terraform 目錄下,新增以下子目錄結構和自訂 Terraform 提供者 ZIP 檔案。
terraform.d/plugins/<HOSTNAME>/<NAMESPACE>/<TYPE>/terraform-provider-<TYPE_VERSION_TARGET>.zip
例如,如果下載了 azurerm 版本 3.12.0,則建立以下結構。
terraform.d/plugins/registry.terraform.io/hashicorp/azurerm/terraform-provider-azurerm_3.12.0_linux_amd64.zip