仮想化通信

日本仮想化技術株式会社の公式エンジニアブログ

MAASでESXiをベアメタルプロビジョニングする

MAASを色々なベアメタルプロビジョニングに使っているのですが、イメージさえ作ればESXiのデプロイなんかも実行できます。そしてイメージを作るために使われるのがHashicorpの「Packer」、そして「packer-maas」です。

以前、ESXi 6.7 Update 3くらいの時のイメージをこれらを使って作って、MAASでデプロイして使っていました。 同じ方法でESXi 7.0 Update 3のイメージも作れないかなと思い、試してみることにしました。

基本的に、次の手順に従っていけばよかったはずです。

ところが、久しぶりに環境を作って試してみたらQEMUのエラーが出たり、パラメータにミスがあるとエラー表示されたりしてうまくいく様子がありませんでした。

一日くらい粘りましたが、一向に動く様子がないと。エラーも試すたびに別のエラーが出たりして、ちょっと自然豊かなところに旅立ちたい気分になってきました。

masterの最新コードとPacker 1.8.0を使ったら動いた

結果的には、次のような流れでセットアップしたらうまくいきました。一番新しいPacker 1.8.0とpacker-maasの一番新しいコードを使えばうまくいきました。

  • Ubuntu Server 20.04.4を物理マシンにインストールしてアップデート
  • 必要なパッケージを入れる
sudo apt install qemu-kvm qemu-utils python3-pip 
git clone https://github.com/canonical/packer-maas.git
cd packer-maas/vmware-esxi

make ISO=/home/ubuntu/VMware-ESXi-7.0.3-19482537-HPE-703.0.0.10.9.0.11-Apr2022.iso

これでうまくいかない場合は、Ubuntu Archivesにある古いPackerと依存パッケージを入れて、削除してから実行してみます。

sudo apt install packer -y
sudo apt remove packer -y

うまく動くと、端末の中でESXiが起動しているようにみえたりします。スペックによりますが、イメージ作成は大体30分くらい時間を要します。

イメージの登録

作成したイメージは、MAASサーバーにログインして、maasコマンドでイメージ登録します。正常に完了すると、イメージ管理画面に追加されるはず。ESXiのイメージはメーカーや機種ごとに異なるので、名前にわかりやすい識別子をつけておくと良いです。

maas $PROFILE boot-resources create name='esxi/7.0' title='VMware ESXi 7.0U3-hpe' architecture='amd64/generic' filetype='ddgz' content@=vmware-esxi.dd.gz

しばらくすると、インポートが始まり...

うまくイメージが登録されました。

デプロイするサーバーのストレージレイアウトをVMFS7にして、

そのマシンにESXiをデプロイして起動を確認したら完了です。

デプロイしたESXiは次のような仕様になっており、VMにネットワークを提供するためには別のポートグループが必要です。

  • VMware ESXi does not allow VMs to use a PortGroup that has a VMK attached to it. All configured devices will have a VMK attached. To use a vSwitch with VMs, you must leave a device or alias unconfigured in MAAS.

2個目のNICをvSwitchに繋いで

ポートグループを作成し、上のvSwitchを接続します。

あとはこのポートグループをVMを作ったら利用するだけです。

最後に

packer-maasリポジトリーは1.0.3までブランチが切られており、以前試した時は1.0.3のコードを使ってイメージを作成していました。ESXi 7がリリースされてpacker-maasもESXi 7対応のためのコードがコミットされていますが、同時に新しいPackerに対応するための修正がvmware-esxi.jsonに入っているらしく、古いバージョンのPackerでは動きませんでした。

最初は最後にテストした時に使ったPacker 1.4くらいのバージョンを使ってダメで、対象のOSは違うけど、これと同じエラーが出てうまくいかなかったのでPacker 1.5にしてダメで、Packer 1.6のバージョンを一つ一つ試して、最終的に行き着いたのがPacker 1.8.0でした。

この記事を見つけたあなたがいつこれを見ているかわかりませんが、MAASのイメージをpacker-maasを使って作成する場合、うまく動かない時は、Issue、コミット、ブランチが更新されていないか、Packerのバージョンを変えてみるなどをチェックすると良いと思います。

最後に念の為言及しておきますが、この方法でデプロイされたvSphereはサポート対象にはならないと思われます。VMwareのサポートを必要とする場合は、サポートされる方法でのデプロイが必要です。