匯入和匯出 OVF 文件:在主機之間移動虛擬機器

在我的現職中,我常常被問到如何使用PowerCLI在vCenter集群中執行各種任務。在這篇文章中,我將分享我如何學習在VMware中導入OVF檔案的方法。

OVF File

這是一個關於最近一位同事尋求協助的故事,他需要將一個自定義的監控工具複製到正在建立的新vCenter集群中。我的同事時間緊迫,且沒有必要的存取權限來存取該模板。

如果你還沒有安裝,請確保通過Install-Module -Name PowerCLI下載PowerCLI模組。

連接到vCenter

我從不錯過使用PowerShell或PowerCLI的機會,所以我立即跳入幫助的行列。我從同事那裡收集了必要的信息,並開始連接到集群:

PS6> Connect-VIServer -Server vcenter.mydomain.local -Credential (Get-Credential)

這只需要一點時間即可完成。連接之後,你需要知道使用哪些動詞。可以使用Get-Command -Module PowerCLI這個cmdlet來查看。

有兩個cmdlet非常重要:

  • Export-VApp
  • Import-VApp

這兩個cmdlet似乎正是你需要的。但首先,因為這對我來說也是一次學習的機會,我將更深入地瞭解每個cmdlet的正確使用方法。

將虛擬機導出為OVF檔案

Export-VApp 命令將關機的虛擬機以 OVF 格式匯出到當前目錄(如果未指定路徑的話)。

I already have a path in mind so I’m going to be using the C:\Exported-OVF directory but yours may vary. Knowing this, you can then run Export-VApp against the VM template specifying the destination folder.

PS6> Export-VApp -VM 'My_VM_Template' -Destination 'C:\Exported-OVF\'

但是有個問題,你無法將正在運行的虛擬機匯出為 OVF。不用擔心,這可以快速解決。稍微修改你的代碼,首先使用 Shutdown-VMGuest 命令關機虛擬機。

PS6> Shutdown-VMGuest -VM 'My_VM_Template'

現在模板虛擬機已經關機,可以繼續運行之前嘗試的 Export-VApp 命令。這個過程需要幾分鐘的時間,而且模板虛擬機本身並不是很大。

完成後,你將擁有一個可以部署到另一個 vCenter 環境的虛擬機模板。或者不是這樣嗎?

匯入 OVF 檔案

現在你的本地文件系統中應該有一個檔案。可以進行匯入。為了這樣做,你需要查詢要匯入的 datastore 和虛擬機主機。然後可以將這兩個對象傳遞給 Import-Vapp 命令以進行匯入。

PS6> $myDatastore = Get-Datastore -Name "MyDatastore1"
PS6> $vmHost = Get-VMHost -Name "MyHost"
PS6> $vmHost | Import-vApp -Source 'C:\Exported-OVF\My_VM_Template\My_VM_Template.ovf' -Datastore $myDatastore -Force

但等等!這樣不起作用。在我的情況下,這個操作失敗是因為我沒有注意到我實際上是連接到另一個 vCenter 群集。

當我開始匯入之前匯出的虛擬機模板時,出現了一大堆紅色錯誤訊息。

I read the error message, and sure enough, the host is not a part of a vCenter cluster and therefore does not have proper licensing to complete the import using PowerCLI. This is a limitation that VMware enforces.

不用擔心,我仍然可以連接到主機的網頁界面,並使用 HTML5 介面手動匯入。嚮導會引導你完成每個步驟,給匯入的虛擬機模板取個名字,選擇 OVF、datastore、部署類型(厚或薄配置),然後驗證配置。之後,選擇完成,匯入開始。

雖然之前的導入嘗試在vCenter集群中運作良好,但在這種情況下根本行不通。這比預期的花了一點時間,但卻很簡單。你可以在這裡閱讀更多關於這個過程的資訊

最後,導入成功了,我的同事也趕上了截止日期。

總結

在這次練習之前,我不知道並非所有的PowerCLI cmdlet都適用於所有情況。然而,我們兩個都學到了一個新技能,雖然遇到了一些意外的困難,但仍然完成了手頭的任務。

我們太經常匆忙地進行IT項目,尋求“快速”的解決方案。 注意你的速度,再花一兩分鐘來提問,退後一步,了解你試圖解決的問題。你可能會發現你會學到一些新東西。

Source:
https://adamtheautomator.com/ovf-file/