etuts+

OVA / OVF : テンプレートをデプロイできません

ただ OVA/OVF エクスポートすればいいってもんじゃありませぬ

開発環境の仮想マシンを OVF (または OVA) 化して本番環境にデプロイ (インポート) することはよくあることですが。

デプロイが上手く行かず、困ることも多々あります。

vSphere の仮想環境をユーザとして利用する側としては、おそらく、単純に OVF 化すればいい と思っているかもしれません。

しかし、デプロイに失敗するほとんどの原因は、vCenter クライアントの問題(バグ)だったり、OVF エクスポートした人の確認漏れだったりします。

特に、仮想マシンをテンプレート化する際に 必ず確認しなければならないポイントが 2点ほどあり、これを無視してしまうと 直すために二度手間・三度手間を踏むことになるので、誰かに OVA / OVF ファイルだけ渡して、デプロイしてもらう場合には、思わぬ迷惑をかけてしまうこともあります。

デプロイする際によく発生する代表的なエラー

本題に入る前に、以下は、OVF デプロイ失敗時の代表的なエラーメッセージです。

ダイアログ : テンプレートをデプロイできません

次のエラー メッセージとともに該当するエンティティに対する「OVF テンプレートのデプロイ」操作に失敗しました。

テンプレートをデプロイできません。

ダイアログだけだと分かりにくいので、デプロイターゲットの ESXi ホスト > 監視 (タブ) > タスクおよびイベント をクリックすると詳細内容が確認できます。

エラー詳細 : VirtualIDEController1:0
  • ステータス : OVF パッケージのデプロイに失敗しました。
  • エラー スタック : 指定の /target-vm/VirtualIDEController1:0 オブジェクトが見つかりませんでした。

OVF 化する前に確認してほしい 2つのポイントとやっちまった時の直し方

仮想マシンを OVF 化 (エクスポート) する際に、以下の条件をクリアしないとデプロイに失敗するので、事前に確認してください。

  • 仮想マシンの器に ISO イメージが接続されてないこと (切断状態であること)
  • OVF 化しようとしている仮想マシンのバージョンは、デプロイ先 ESXi ホストと互換性があるかESXi と仮想マシン互換性確認表については、後半部の「その他、デプロイ時に発生するエラーと対処方法」にリンクを記載しましたので、ご確認ください。

特に、仮想マシンと ESXi ホストとの互換性に関しては要注意です。

例えば、仮想マシンのバージョン 11 に対して、デプロイターゲットとなる ESX ホストが 7 までしかサポートしない場合は、vCenter Converter (仮想マシン コンバータ) のようなツールを使って仮想マシンバージョンをダウングレードしてからエクスポートする必要があるため、時間もかかるし面倒です。

大体は、CD/DVD が原因で、直し方は 以下の 2通りあります。

  • OVF をエクスポートする側で CD/DVD を解除した上で、エクスポートし直す
  • OVF をインポートする側で「.ovf 」を修正・「CD/DVD をパススルー」に設定した上で、インポートする

特に、エクスポート対象となる仮想マシンが動いている vSphere の環境 (主に 5.1 / 5.5) と VMware Tools のインストール状況によっては、仮想マシンにマウント (データストア上の ISO イメージ接続) されている CD/DVD 情報までエクスポートされるため、他の環境でインポートする際に、そのデバイス情報が見つからず、デプロイが失敗に終わることが多いです。

解決方法 その1. OVA / OVF をエクスポートする側で CD/DVD を解除した上で、エクスポートし直す

CD/DVD をクリーンな状態にしてから OVF 化するだけなので、一番シンプルで分かりやすいですが、仮想マシンの容量によっては時間がかかります。

やるかやらないかは状況・容量次第ですが、特に、相手 (デプロイする側) に稼動をかけたくない場合は、このやり方が無難ではないかと。

仮想マシン (右クリック) > 設定の編集 > 仮想ハードウェア > CD/DVD ドライブ > クライアントデバイス > OK をクリックします。

CD/DVD 無効化 : 仮想マシン編集画面にてクライアントデバイスに設定

後は、Power Off 状態の仮想マシンをエクスポートします。

解決方法 その2. OVF をインポートする側で「.ovf 」を修正・「CD/DVD をパススルー」に設定した上で、インポートする対象 : OVF のみ

デプロイする側で .ovf を開いて、CD/DVD の ResourceSubType エントリにパススルーをセットすることでこの問題を回避できます。

その1. のやり方で時間かかりそうだったら、このやり方で対応した方が早いです。

ただ、.ovf を修正した上で、さらに .mf 内にセットされている .ovf のチェックサム値を更新する必要があるため、少し手間はかかります。 (修正後の「.ovf」のサム値を計算し直す必要がある)

Step 1. hoge-vm.ovf を開いて、CD/DVD をパススルーに設定

vmware.cdrom.iso のところを vmware.cdrom.remotepassthrough に修正します。

hoge-vm.ovf (変更前)
 ・・・
  <Item ovf:required="false">
    <rasd:AddressOnParent>0</rasd:AddressOnParent>
    <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
    <rasd:ElementName>CD/DVD drive 1</rasd:ElementName>
    <rasd:InstanceID>8</rasd:InstanceID>
    <rasd:Parent>4</rasd:Parent>
    <rasd:ResourceSubType>vmware.cdrom.iso</rasd:ResourceSubType>
    <rasd:ResourceType>15</rasd:ResourceType>
  </Item>
  ・・・
hoge-vm.ovf (変更後)
 ・・・
  <Item ovf:required="false">
    <rasd:AddressOnParent>0</rasd:AddressOnParent>
    <rasd:AutomaticAllocation>false</rasd:AutomaticAllocation>
    <rasd:ElementName>CD/DVD drive 1</rasd:ElementName>
    <rasd:InstanceID>8</rasd:InstanceID>
    <rasd:Parent>4</rasd:Parent>
    <rasd:ResourceSubType>vmware.cdrom.remotepassthrough</rasd:ResourceSubType>
    <rasd:ResourceType>15</rasd:ResourceType>
  </Item>
  ・・・

Step 2. hoge-vm.mf に ovf ファイルの新しいチェックサム値を設定

これで終わりなら嬉しいですが、もう一手間必要です。

.ovf のサム値は、.mf ファイル内にセットされているため、今回更新した hoge-vm.ovf の新しいチェックサム値を再計算し、hoge-vm.mf に反映させる必要があります。

裏技として、hoge-vm.mf を消してからデプロイする方法もありますが、可能であれば、以下のように正しい方法で .mf を修正してください。 (.mf が存在しておらず、作成する必要がある場合は、もうちょっと下の方にやり方を記載しましたので、ご確認ください)

Windows 環境の場合は、MS 公式の FCIV というコマンドを使えばチェックサム値の計算が出来ますが、ツールが入ってない場合はインストールが必要です。

Linux 環境なら sha1sum コマンドを使えば、簡単にファイルのチェックサム値を取得することができるので、.ovf のサム値を取得した上で、hoge-vm.mf ファイルを開き、新しいサム値をセットします。

hoge-vm.ovf のチェックサム値 再計算
1
2
# sha1sum ./hoge-vm.ovf
56f2145e073224839bf028bc1309fa6c36cc9cf4
hoge-vm.mf
1
2
SHA1(hoge-vm.ovf)= 56f2145e073224839bf028bc1309fa6c36cc9cf4
SHA1(hoge-vm-disk1.vmdk)= 3a2a390166a8d6a522f04106ca5d802342933348

.mf 修正時の注意点

.mf ファイルを修正する際には、以下の点に注意してください。
  • 設定箇所を間違えないように注意 (.vmdk ではなく、.ovf 行にサム値をセットすること)
  • 改行コードは、LF (UNIX)

特に、改行コードは UNIX フォーマットになっているため、Windows 環境で修正する際には注意が必要です。(メモ帳はダメ。 改行コードが視覚的に見える / 改行コードを自由に変更できる Sakura エディタ等がオススメです)

参考 1. 「.mf」を更新しなかった場合は、デプロイ開始不可

.mf.ovf の新しいサム値を設定しなかった場合は、以下のエラーでデプロイを開始できないので、ご参考までに。

.mf のチェックサムを更新しなかった場合のエラーメッセージ : 指定された生成ファイルのチェックサムが source-vm.ovf ファイルの内容と一致しません。
  • 指定された生成ファイルのチェックサムが source-vm.ovf ファイルの内容と一致しません。

参考 2. 「.mf」マニフェスト ファイルを新規作成・生成する方法

.mf の正しい名称は、マニフェスト ファイル です。

主に、OVF テンプレートのエクスポートやデプロイ時の署名用として使われます。

もし何らかの理由でマニフェスト ファイルを新しく作成する必要がある場合は、openssl コマンドを用いて簡単に作成することが出来ます。

  • openssl sha1 *.vmdk *.ovf > vmName.mfLinux 環境の場合、openssl は大体入ってると思いますが、Windows の場合は 別途 openssl をインストールする必要があるかもしれません。

以下の例では、テストのために、OS が入ってない状態の仮想マシン器仮想 HDD を 2つ を持たせた上で、.mf が存在しない状態マニフェストファイルを新規作成 します。

.mf 新規作成
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# rpm -qa | grep "openssl"
openssl-1.0.1e-16.el6_5.7.x86_64
openssl-devel-1.0.1e-16.el6_5.7.x86_64

# ls -l
合計 148
-rw-r--r-- 1 root root 68096  1月  9 09:53 2019 TEST-VM-disk1.vmdk
-rw-r--r-- 1 root root 68096  1月  9 09:53 2019 TEST-VM-disk2.vmdk
-rw-r--r-- 1 root root  9173  1月  9 09:53 2019 TEST-VM.ovf

# openssl sha1 *.vmdk *.ovf > TEST-VM.mf

# ls -l
合計 152
-rw-r--r-- 1 root root 68096  1月  9 09:53 2019 TEST-VM-disk1.vmdk
-rw-r--r-- 1 root root 68096  1月  9 09:53 2019 TEST-VM-disk2.vmdk
-rw-r--r-- 1 root root   203  1月  9 09:57 2019 TEST-VM.mf
-rw-r--r-- 1 root root  9173  1月  9 09:53 2019 TEST-VM.ovf

# cat TEST-VM.mf
SHA1(TEST-VM-disk1.vmdk)= 78d2d9ec6dffeada63b79bbe0b511521c6e1fad9
SHA1(TEST-VM-disk2.vmdk)= 3c203585b8b9a94a78718165a2af9a93909e37bb
SHA1(TEST-VM.ovf)= 2bd7273e0cd24e308d43344fad2fe7a8a9eb396a

その他、デプロイ時に発生するエラーと対処方法

OVF パッケージはサポートされていないハードウェアを必要としています

以下は、ESXi 6.0 上で動いている ハードウェアバージョン 11 の仮想マシンをエクスポートし、ハードウェア バージョン 10 までしかサポートされない環境 (ESXi 5.5) にデプロイした時のエラーメッセージです。

サポートされていないハードウェア ファミリ「vmx-11」です

この OVF パッケージは、ESX ホストに直接デプロイする場合にサポートされない機能をしようします

OVF パッケージはサポートされていないハードウェアを必要としています。

詳細: 行 28: サポートされていないハードウェア ファミリ「vmx-11」です。

ESXi と 仮想マシン ハードウェアバージョンの互換性については、こちらの表を参考にして頂いて。

このエラーでデプロイできない場合は、仮想マシンハードウェアバージョンのダウングレードが必要なので、その情報については以下のページをご確認ください。

注意点として、仮想マシン情報が定義されている .vmx ファイルを開いて、ハードウェアバージョンを直接変更しないでください。

異なる仮想マシンバージョン間のパラメータ内容が一致するとは限らないため、バージョンだけ手打ちで変更した仮想マシンを本番環境で動かすのは良くありません。 (旧バージョンに戻した時に、サポートされないデバイスが付いていたりすると仮想マシン起動に失敗します)

vmx-7 と vmx-11 の差分
1
2
3
4
5
6
7
8
# diff 7.vmx 11.vmx
3c3
< virtualHW.version = "7"
---
> virtualHW.version = "11"
70a71,72
> hpet0.present = "TRUE"
> usb.vbluetooth.startConnected = "TRUE"

確かに .vmx ファイルを変えたほうが直感的で速いですが、変えても問題ないという保障・確信がなければ、直接変えずに 正しいやり方でダウングレードすることをオススメします。

指定された生成ファイルのチェックサムが 「hoge-vm.vmdk」 ファイルの内容と一致しません

これでデプロイが開始され、後は待つだけか。と思いきや、20分くらい待ってたら 指定された生成ファイルのチェックサムが 「hoge-vm.vmdk」 ファイルの内容と一致しません。 というエラーメッセージで失敗してがっかり。

先ほどの .ovf チェックサムエラーと似たようなメッセージですが、.vmdk に関するチェックサムエラーで失敗する時もあります。

エラーメッセージ : 指定された生成ファイルのチェックサムが「.vmdk」ファイルの内容と一致しません。

こういった場合は、デプロイ時のターゲットネットワークを分散スイッチのポートグループではなく、標準スイッチのポートグループにセットすればうまく行くと思いますので、試して見てください。

OVF パラメータ chunkSize の値が NNNNNNNNNN の場合、OVF パッケージのインポートはサポートされません

この問題は、OVF の chunkSize パラメータがサポートされてない環境 (特に、vCenter Server 6.5) でデプロイした場合に発生します。

エラーメッセージ : OVF パラメータ chunkSize の値が 7516192768 の場合、OVF パッケージのインポートはサポートされません

以下の KB にも記載があるように、この問題を解決するためは、.ovf から chunkSize 属性を削除してからデプロイするだけで良いですが、.ovf ではなく、.ova の場合は、ちょっとややこしくなります。

  1. tar xvf で「.ova」を展開した上でそうすると「.vmdk / .ovf / .mf」等のファイルが出てくる
  2. 全ての「vmName-disk*.vmdk*」を cat して、一つの「vmName-disk1.vmdk」に書き出して
  3. その後、「.ovf」から chunkSize 属性を削除してから
  4. OVF をデプロイするか
  5. OVA を使いたい場合は、tar cvf で「.vmdk / .ovf / .mf」を再度一つのファイル「vmName.ova」という名前で固める

ぱっと見 VMDK ファイルを cat している時点でやる気がなくなりますが、場合によっては (ESXi ホストのバージョンによりますが)、このような面倒なことをやらなくて済む裏技というか迂回策はあります。

やり方としては、vCenter へログインするのではなく、直接 ESXi ホストへログイン (vSphere ホストクライアントでログイン) すれば、問題なくデプロイできます。

ただ、ESXi ホストが vCenter によって管理されている場合において、vCenter Server を介さずに仮想マシンを登録するとホストと vCenter のインベントリの間で不一致が起こり、予期しない結果を招く恐れがあるため、オススメはできませんが、どうしてもやりたい場合は、試して見てください。 (私は普通にやってますが・・)

ちなみに、旧 vSphere Client (C#・Windows クライアント) は、vSphere 6.5 から廃止され使えなくなったため、このクライアントで vCenter Server 6.5 へログインすることはできませんが、vCenter Server が 6.5 であっても、デプロイターゲットの ESXi ホストのバージョンが 6.0 までだったら、ESXi ホストへ直接ログインすることが可能です。

vSphere ホストクライアントへログイン

接続先 : ESXi ホストの FQDN / IP アドレス

ID : root 固定

ログインできたら 後は、デプロイするだけです。

参考までに、デプロイ開始直後、タスクに その操作は、現在の状態では実行できません。 というエラーが出ますが、デプロイは完了します。

転送に失敗しました。 OVF 記述子が利用できません

この場合も、先と同じやり方で、直接 ESXi ホストへログインしてからデプロイします。

転送に失敗しました。 一般的なシステムエラーが発生しました

エラーメッセージ自体は 前のエラーに似ていますが、私の場合は、Web Client (IE11) を使って、vCSA 6.5 へログインした後、デプロイを開始したところ、タスクの進捗率が 9% 停止し、その後失敗しました。

ステータス: OVF パッケージのデプロイに失敗しました。

原因: 一般的なシステム エラーが発生しました:

転送に失敗しました。

IE11 の場合は、4GB を超える OVA / OVF を転送・デプロイできない問題があるため、それが原因でデプロイが途中で止まったんだと思います。

もし、IE を使ってデプロイした際に、このエラーで失敗した場合は、ブラウザを変えて、ChromeFirefox で試して見てください。

私の場合は Chrome で問題なくデプロイできました。 (Firefox では試してませんが、IE じゃなければ良いので、うまく行くと思います → 追記 : Firefox でも うまく行きました)

エクスポート時に発生するエラーと対処方法 & 注意点 等

OVF エクスポートのタスクが 25% で停止、30分後「#1009」エラーで失敗する

30分も待たされて失敗するなんてひどい話です。 もっと早い段階でエラーを吐いてくれたらいいのに・・

エクスポートの失敗 : 内部なエラーが発生しました - Error #1009
  • 内部なエラーが発生しました - Error #1009。 このエラーによって発生した問題をクリアするために、クライアントを再ロードするには、「はい」をクリックしてください。

この事象は、主に vCenter Server 6.5 の Web Client で発生しますが、vSphere Client (HTML5) でも似たような事象が発生するそうです。

vCenter Server 6.5 U2 で解消されたので、解決するためには、vCenter Server のアップデートが必要です。

また、上記の #1009 エラーが発生したときに、タスクをキャンセルしなかった場合は、ovf と vmdk のエクスポートは完了するけど、mf ファイルが完了しないことによって、結局エクスポートが失敗するので、ダイアログのメッセージに騙されないでいいえ をクリックしてダイアログを閉じてから、タスクの × をクリックし、OVF タスクをキャンセルしてください。

そうしないと散々待たされた挙句、エクスポートは失敗に終わります。

Web Client / HTML5 クライアントを使わなければ良いわけで、vSphere Client (Windows クライアント) を使えば問題なくエクスポートできますが、vSphere 6.5 から vSphere Client (Windows クライアント) 廃止により、これを使って vCenter にログインすることは出来ません。

アップデートするのも面倒だし、私の場合は エクスポート対象仮想マシンが ESXi 6.0 上で動いていていたため、vSphere Client (Windows クライアント・ホストクライアント) を使って、ESXi ホストへ直接ログインしてエクスポートしました。

エクスポートの失敗 : 仮想マシンのエクスポートに失敗しました: Unable to connect to the remote server

エクスポートの失敗 : 仮想マシンのエクスポートに失敗しました: Unable to connect to the remote server

エクスポート時に、このようなエラーで失敗した場合は、作業中の端末とエクスポート対象仮想マシンが動いている ESXi ホスト間の通信が出来てない可能性が高いので、ファイアウォールを開放してください。

OVF エクスポートする際の注意点

OVF エクスポートする際に、ファイルの保存場所を指定するための、ダウンロード用のダイアログが 2つ・3つ (.vmdk / .ovf 等) ポップアップされます。

vSphere Web Client (Flex) / vSphere Client (HTML5) を使ってる場合は、ブラウザの設定でポップアップがブロックされているとエクスポート出来ないので、ブラウザの設定でポップアップを有効にしてください。

ファイルを保存場所を指定する際には、拡張子をよく確認してください。

例えば、ファイルの拡張子がなぜか .iso になっている場合は、仮想マシンに ISO イメージが接続されている証拠なので、解決方法 その1. を参考にし、仮想マシン器に接続されている CD/DVD の接続を解除してください。

終わりに

自分用であれば、別に直して使えばいいだけなんですが、仕事上 その相手 (デプロイする人) が第三者であれば、せっかく完成した成果物・納品物が相手(お客さん)に低評価されたり、無駄な稼動発生による開発遅延につながる可能性もあるので、気を付けた方が良いのではないかと。

ちなみに、OVA / OVF エクスポートするためには、仮想マシンが停止状態でなければなりません。(Power Off 状態でないとエクスポートできない)

どうしても仮想マシンを落とせないなら「クローン作成 → クローンをエクスポート」すれば OK です。

また、念のための補足ですが、Web Client を使って OVA / OVF をデプロイ、エクスポートするためには、vCenter Server のバージョンによって、クライアント統合プラグイン (CIP : Client Integration Plugin) をインストールする必要があります。

  • vCenter 6.5 未満 : CIP のインストールが必要
  • vCenter 6.5 以上 : CIP のインストールは不要 (vSphere 6.5 リリースで CIP 廃止)vSphere 6.5 以降は、拡張認証プラグイン (Enhanced Authentication Plugin) が CIP の後継となりますが、拡張認証プラグインが提供する機能は、「統合 Windows 認証」と「Windows ベースのスマート カード機能」のみになります。

CIP は デプロイ・エクスポートだけでなく、仮想マシンのコンソール接続 等、その他 vSphere 機能を使うためにも必要です。

CIP をインストールする場合は、Web Client ログイン画面の左下にプラグインのインストールボタンがありますので、ご確認ください。

何かあったらまた追加しますが、これで OVA / OVF エクスポート と インポート (デプロイ) 時に発生する問題は大抵解決できるのではないかと。

個人的にはやっぱり vSphere 6.0 までお世話になっていた vSphere Client (Windows 用クライアント) が一番使いやすくて、良かったなと思います。

以上、OVA / OVF : テンプレートをデプロイできません でした。

この記事をシェアする

コピー & ペースト

 この記事のタイトルと URL をコピーする
OVA / OVF : テンプレートをデプロイできません
https://server.etutsplus.com/ovf-deployment-fails-with-the-error-virtual-ide-controller-1-0/
 この記事の HTML リンクをコピーする
<a href="https://server.etutsplus.com/ovf-deployment-fails-with-the-error-virtual-ide-controller-1-0/" title="OVA / OVF : テンプレートをデプロイできません" target="_blank">OVA / OVF : テンプレートをデプロイできません - eTuts+ Server Tutorials</a>

コメント

コメントをどうぞ

Tutorial 詳細

ova ovf デプロイ失敗所要時間:30分以内試験環境:vCenter Server Appliance 6.0、vCenter Server Appliance 6.5、ESXi 6.0