OVF Toolの使い方

スポンサーリンク

OVF ToolはOVFまたはOVAによる仮想マシンデプロイをコマンドラインで操作するツールです。検証用途などで似たような仮想マシンを何度もデプロイする方は定型業務をOVF Toolでスクリプト化しておくと、作業ミス低減や作業スピードアップを図れるでしょう。このページではovftoolの使い方をまとめます。

前提

参照資料

OVF ToolはVMware本体のサイトではなく「https://developer.vmware.com/」にドキュメントが掲載されています。比較的更新頻度が早いので、上記がリンク切れになっている場合はトップページから公式ドキュメントをお探しください。

例えば、検索窓に「OVF Tool Release Notes」と入力します。

OVF Tool 公式ドキュメントの読み方 01

すると、以下のように検索結果が表示されます。

OVF Tool 公式ドキュメントの読み方 02

動作確認済環境

  • vCenter 7.0U3f (7.0.3-20051473)
  • ESXi 7.0U3f (7.0.3-20036589)
  • Windows 10 21H2
  • Rocky Linux 8.6

最新のサポートOSは「VMware OVF Tool Release Notes」を参照ください。Rocky Linuxは非サポートですので、自己責任でご利用ください。

OVF Toolのダウンロード

OVF Toolは殆どのVMware製品の付属品(Drivers & tools)の位置付けになっています。ダウンロードリンクは様々なページに貼られていますが、一例として「Download VMware vSphere」のページをブラウザで開きます。

「Drivers & Tools」「Automation Tools and SDK(s)」の順に押下し、「OVFTOOL」欄の「GO TO DOWNLOADS」を押下します。

OVF Toolのダウンロード 01

ご利用のOSに合わせたダウンロードリンクを押下します。

OVF Toolのダウンロード 02

OVF Toolのインストール

Linux環境の場合

インストール操作

bundleファイルに実行権限を与え、実行します。

chmod 755 VMware-ovftool-4.4.3-18663434-lin.x86_64.bundle 
./VMware-ovftool-4.4.3-18663434-lin.x86_64.bundle 

EULA(End User License Agreement)の同意を求められます。EnterキーでEULAが表示されます。

[root@linux050 ~]# ./VMware-ovftool-4.4.3-18663434-lin.x86_64.bundle 
Extracting VMware Installer...done.
You must accept the VMware OVF Tool component for Linux End User
License Agreement to continue.  Press Enter to proceed.

エンターキーやスペースキーなどでEULAを画面下へスクロールされます。最後にEULAに同意するかどうか求められますので、「yes」と入力します。

12.12  Contact Information.  Please direct legal notices or other
correspondence to VMware, Inc., 3401 Hillview Avenue, Palo Alto, California
94304, United States of America.  If You have any questions concerning this
EULA, please send an email to info@vmware.com.

Do you agree? [yes/no]: yes

エンターキーでインストールが開始されます。

The product is ready to be installed.  Press Enter to begin
installation or Ctrl-C to cancel.

インストール完了まで待ちます。

Installing VMware OVF Tool component for Linux 4.4.3
    Configuring...
[######################################################################] 100%
Installation was successful.
[root@linux050 ~]# 

不足パッケージ追加 : libnsl

動作確認のため、ovftoolに引数--versionを与えて実行します。もしかしたら、何らかのエラーが発生するかもしれません。エラーメッセージより不足するパッケージを確認します。

[root@linux050 ~]# ovftool --version
/usr/lib/vmware-ovftool/ovftool.bin: error while loading shared libraries: libnsl.so.1: cannot open shared object file: No such file or directory
[root@linux050 ~]# 

適宜不足するパッケージをインストールします。

dnf install libnsl

ovftool --versionコマンドが実行可能である事を確認します。

[root@linux050 ~]# ovftool --version
VMware ovftool 4.4.3 (build-18663434)
[root@linux050 ~]# 

Windows環境の場合

インストール操作

前述の操作でダウンロードしたmsiファイルをダブルクリックで実行します。

Windows版 OVF toolのインストール 01

「Next」を押下します。

Windows版 OVF toolのインストール 02

「I Accept the terms in the License Agreement」にチェックを入れ、「Next」を押下します。

Windows版 OVF toolのインストール 03

インストール先のディレクトリをメモに控えて下さい。この値は後の操作で使用します。デフォルト設定の場合は「C:\Program Files\VMware\VMware OVF Tool」になります。以降の操作は特段の注意点はございません。

Windows版 OVF toolのインストール 04

動作確認

コマンドプロンプトを開き、OVF toolのインストール先ディレクトリへ移動します。「ovftool --version」コマンドが実行可能である事を確認します。

C:\Users\admin>cd "C:\Program Files\VMware\VMware OVF Tool"

C:\Program Files\VMware\VMware OVF Tool>ovftool --version
VMware ovftool 4.4.3 (build-18663434)

C:\Program Files\VMware\VMware OVF Tool>

Windows版 OVF toolのインストール 05

OVF Toolの使い方

OVF Toolのヘルプ表示

ovftool -hコマンドを実行すると、ovftoolに与える引数を調査できます。必要に応じてヘルプを参照しましょう。

[root@linux050 ~]# ovftool -h
Usage: ovftool [options] <source> [<target>]
where
<source>: Source URL locator to an OVF package, VMX file, or virtual machine in
          vCenter or on ESX Server. 
<target>: Target URL locator which specifies either a file location, or a 
          location in the vCenter inventory or on an ESX Server. 

If <target> is not specified, information about the source is displayed to the 
console. 

Options:
     --acceptAllEulas            : Accept all end-user licenses agreements 
                                   without being prompted. 
     --allowAllExtraConfig       : Whether we allow all the ExtraConfig 
                                   options. These options are a security risk 
                                   as they control low-level and potential 
                                   unsafe options on the VM. 
     --allowExtraConfig          : Whether we allow ExtraConfig options. These 
                                   options are a security risk as they control 
                                   low-level and potential unsafe options on 
                                   the VM. 


 <omitted>

OVF Toolの主要な引数

ディスク関連

以下の引数で仮想マシン名を指定できます。

ovftool \
  --name=<仮想マシン名>

ディスク関連

以下の引数でディスクモード(thin, thickなど)やデータストアを指定できます。

ovftool \
  --diskMode=<ディスクモード> \
  --datastore=<データストア名>

ネットワーク関連

以下の引数でポートグループを指定できます。

ovftool \
  --net:"<仮想NIC名1>=<ポートグループ名1>" \
  --net:"<仮想NIC名2>=<ポートグループ名2>"

以下のように引数にOVAファイルのみを指定すると、OVAファイル内に格納されたOVFファイルの情報を閲覧できます。この出力から仮想NIC名を調査すると良いでしょう。以下出力の場合は、「VM Network」が仮想NIC名です。

[root@linux050 ~]# ovftool 010-rocky86.ova 
OVF version:   1.0
VirtualApp:    false
Name:          010-rocky86

Download Size:  Unknown

Deployment Sizes:
  Flat disks:   50.00 GB
  Sparse disks: Unknown

Networks:
  Name:        VM Network
  Description: The VM Network network

 <omitted>

証明書エラーの無視

OVA templateには証明書を含める事ができます。証明書が含まれていない場合はエラーが出力されますが、これを無視するには以下引数を与えます。

ovftool \
  --noSSLVerify

自動起動

以下の引数でOVA templateのデプロイ後に自動的に仮想マシンが起動します。地味に便利です。

ovftool \
  --powerOn

ログ出力

以下の引数でOVA templateデプロイ時のログをファイルに出力する事ができます。

ovftool \
  --X:logFile=<ログファイル名>

vAppオプション

以下スクリーンショットのようにOVA templateにはvAppプロパティを含める事もできます。以下スクリーンショットのように、vCenterなどでOVAをインポートする場合は「テンプレートのカスタマイズ」などと表示されます。

vAppオプションが含まれてる仮想マシンの例 01

デフォルトの状態で、このようなvAppプロパティはovftoolで指定する事はできません。vAppプロパティを指定可能なようにするには、以下引数を与える必要があります。

ovftool \
  --allowExtraConfig

デプロイ先URLの指定

vCenterの場合

ovftoolを用いたデプロイをする場合は、デプロイ先のvCenterまたはESXiのURLを指定する必要があります。vCenterのURLの書式は以下のようになります。

vi://<vCenterユーザ名>:<vCenterパスワード>@<vCenter FQDN>/?ip=<ESXi IPアドレス>

ESXiホストの場合

ESXiのURLの書式は以下のようになります。

vi://<ESXiユーザ名>:<ESXiパスワード>@<ESXi FQDN>/

OVF Toolの操作例

OVA templateの操作例

以下スクリーンショットのようなvCenterに対してOVAファイルをデプロイします。

動作確認環境のスクリーンショット

OVAファイルのデプロイ操作例は以下のようになります。

ovftool \
  --name=020-linux \
  --X:logFile=ovftool.log \
  --powerOn \
  --noSSLVerify \
  --net:"VM Network=vds01-pg01" \
  --diskMode=thin \
  --datastore=datastore30 \
  010-rocky86.ova \
  vi://administrator@gokatei.go:P@ssw0rd@vcenter20.gokatei.go/?ip=192.168.20.30

ログは以下のように出力されます。

[root@linux050 ~]# ovftool \
>   --name=020-linux \
>   --X:logFile=ovftool.log \
>   --powerOn \
>   --noSSLVerify \
>   --net:"VM Network=vds01-pg01" \
>   --diskMode=thin \
>   --datastore=datastore30 \
>   010-rocky86.ova \
>   vi://administrator@gokatei.go:P@ssw0rd@vcenter20.gokatei.go/?ip=192.168.20.30
Opening OVA source: 010-rocky86.ova
Opening VI target: vi://administrator%40gokatei.go@vcenter20.gokatei.go:443/
Deploying to VI: vi://administrator%40gokatei.go@vcenter20.gokatei.go:443/
Transfer Completed                    
The manifest validates
Powering on VM: 020-linux
Task Completed                        
Warning:
 - No supported manifest(sha1, sha256, sha512) entry found for: '010-rocky86-1.vmdk'.
 - No supported manifest(sha1, sha256, sha512) entry found for: '010-rocky86-2.nvram'.
Completed successfully
[root@linux050 ~]# 

デプロイの進捗は、CLIだけでなくGUI(vCenter)でも確認できます。

OVAデプロイの進捗

OVF templateの操作例

OVFファイルも同様にovftoolを用いたデプロイが可能です。ただし、OVFファイルをデプロイする場合は、以下のようにOVFファイルとmfファイルやvmdkファイルなどを同一ディレクトリに格納する必要があります。

[root@linux050 ~]# ls -l work/
合計 2251796
-rw-r--r-- 1 root root 2305549824  7月 23 21:31 010-rocky86-1.vmdk
-rw-r--r-- 1 root root     270840  7月 23 21:26 010-rocky86-2.nvram
-rw-r--r-- 1 root root        277  7月 23 21:31 010-rocky86.mf
-rw-r--r-- 1 root root       6863  7月 23 21:26 010-rocky86.ovf
[root@linux050 ~]# 

OVFファイルをデプロイする操作例は以下の通りです。

ovftool \
  --name=030-linux \
  --X:logFile=ovftool.log \
  --powerOn \
  --noSSLVerify \
  --net:"VM Network=vds01-pg01" \
  --diskMode=thin \
  --datastore=datastore30 \
  work/010-rocky86.ovf \
  vi://administrator@gokatei.go:P@ssw0rd@vcenter20.gokatei.go/?ip=192.168.20.30

ESXiホストへデプロイする操作例

以下操作のようにデプロイ先URLをESXiホストにする事もできます。ただし、この操作をする場合はVDS(分散仮想スイッチ)を指定できずVSS(標準仮想スイッチ)しか指定できない事に注意ください。

ovftool \
  --name=040-linux \
  --X:logFile=ovftool.log \
  --powerOn \
  --noSSLVerify \
  --net:"VM Network=vSwitch01_vlan0000" \
  --diskMode=thin \
  --datastore=datastore31 \
  work/010-rocky86.ovf \
  vi://root:P@ssw0rd@192.168.20.31/

補足

vAppオプションを持つ仮想マシンのデプロイ

以下スクリーンショットのようにvAppオプションが存在するOVAファイルのデプロイ方法を説明します。以下、VMware ESX-T Edge 3.2.1を例に挙げます。

vAppオプションが定義されたOVAファイル 01

どのようなプロパティが指定可能かは、ovftoolコマンドに引数--allowExtraConfigとOVAファイル名を指定すると確認できます。

[root@linux050 ~]# ovftool \
>   --allowExtraConfig \
>   nsx-edge-3.2.1.0.0.19801966.ova

  <omitted>

Properties:
  Key:         nsx_grub_passwd
  Category:    Application
  Label:       System GRUB Root User Password
  Type:        password
  Description: The password for GRUB root user for this VM.
                     

  Key:         nsx_grub_menu_timeout
  Category:    Application
  Label:       System GRUB menu timeout
  Type:        string
  Description: The timeout to display GRUB menu for this VM.
                     

  Key:         nsx_passwd_0
  Category:    Application
  Label:       System Root User Password
  Type:        password(12..)
  Description: The password for root user for this VM.
               Please follow the password complexity rule as below:
                   - minimum of 12 characters in length
                   - >=1 uppercase character
                   - >=1 lowercase character
                   - >=1 numeric character
                   - >=1 special character
                   - >=5 unique characters
                   - default password complexity rules as enforced by the Linux
               PAM module 
                   NOTE: Password strength validation will occur during VM 
               boot.  If the password does not meet the above criteria then 
               login as root user for the change password prompt to appear. 

  <omitted>

以下の引数でvAppプロパティを指定できます。

ovftool \
  --prop:"<プロパティ名1>=<プロパティ値1>" \
  --prop:"<プロパティ名2>=<プロパティ値2>" \
  --prop:"<プロパティ名3>=<プロパティ値3>"

操作例は以下の通りです。

ovftool \
  --name=nsx-edge050 \
  --deploymentOption=small \
  --X:logFile=ovftool.log \
  --allowExtraConfig \
  --datastore=datastore30 \
  --net:"Network 0=vds01-pg01" \
  --net:"Network 1=vds01-pg01" \
  --net:"Network 2=vds01-pg01" \
  --net:"Network 3=vds01-pg01" \
  --net:"Network 4=vds01-pg01" \
  --acceptAllEulas \
  --noSSLVerify \
  --diskMode=thin \
  --prop:nsx_ip_0="192.168.20.50" \
  --prop:nsx_netmask_0="192.168.20.1" \
  --prop:nsx_gateway_0="255.255.255.0" \
  --prop:nsx_dns1_0="192.168.20.1" \
  --prop:nsx_ntp_0="192.168.20.1" \
  --prop:nsx_domain_0="gokatei.go" \
  --prop:nsx_isSSHEnabled=True \
  --prop:nsx_allowSSHRootLogin=True \
  --prop:nsx_passwd_0="P@ssw0rdP@ssw0rd" \
  --prop:nsx_cli_passwd_0="P@ssw0rdP@ssw0rd" \
  --prop:nsx_hostname=nsx-edge050.gokatei.go \
  nsx-edge-3.2.1.0.0.19801966.ova \
  vi://administrator@gokatei.go:P@ssw0rd@vcenter20.gokatei.go/?ip=192.168.20.30

vCenterの画面にて「仮想マシン名」「構成」「(設定)vAppオプション」の順に押下すると、想定通りのプロパティ値が設定されているかどうかを確認できます。

vAppオプションが定義されたOVAファイル 02

エラー OVAファイル格納順の問題

vCenterなど殆どのOVAファイル展開ツールは問題ないのですが、ovftoolなど一部ツールはOVAファイルの先頭にOVFファイルがある事を期待しています。以下のように、OVAファイルを作成する時に「*指定(アルファベット順)」でファイルを格納すると、展開時にエラーが発生します。

[root@linux050 work]# ls -l
合計 2251796
-rw-r--r-- 1 root root 2305549824  7月 23 21:31 010-rocky86-1.vmdk
-rw-r--r-- 1 root root     270840  7月 23 21:26 010-rocky86-2.nvram
-rw-r--r-- 1 root root        277  7月 23 21:31 010-rocky86.mf
-rw-r--r-- 1 root root       6863  7月 23 21:26 010-rocky86.ovf
[root@linux050 work]# 
[root@linux050 work]# 
[root@linux050 work]# tar cvf 010-rocky86.ova *
010-rocky86-1.vmdk
010-rocky86-2.nvram
010-rocky86.mf
010-rocky86.ovf
[root@linux050 work]# 
[root@linux050 work]# 
[root@linux050 work]# ovftool 010-rocky86.ova
Error: Did not find an .ovf file at the beginning of the OVA package.
[root@linux050 work]# 

このエラーを解消するには、以下のように先頭をOVFファイルにしてOVAを作成ください。

tar cvf 010-rocky86.ova \
  010-rocky86.ovf \
  010-rocky86-1.vmdk \
  010-rocky86-2.nvram \
  010-rocky86.mf
タイトルとURLをコピーしました