近頃、開発検証用の環境がごちゃごちゃして来たので、
久しぶりにESXiをセットアップして、環境を整理しました。
このエントリには、そのメモを残しておきます。

次の流れを記載します。

  • VMWare ESXi7のダウンロード
  • ESXi7のイメージをUSBメモリに書き込む
  • ESXi7のインストール
  • VMware Host Clinetへの接続
  • Ubuntu Linuxのクラウドイメージをダウンロード
  • VMwareでのcloud-initの利用方法と無償版の制限
  • cloud-initの設定ファイルイメージを作る
  • cloud-initを適用して仮想マシンを起動する

ちなみに、ESXi6をセットアップしたときの昔のメモが次のエントリにあります。

VMware ESXi6 Update2のセットアップからVNC接続までの手順 https://takemikami.com/2016/10/10/VMware-ESXi6-Update2VNC.html

VMWare ESXi7のダウンロード

以下のURLからESXi7のイメージをダウンロードします。
ユーザ登録やライセンス取得も、ここからリンクから辿れます。

VMware vSphere Hypervisor 7.0 Update3c Download Center
https://customerconnect.vmware.com/en/web/vmware/evalcenter?p=free-esxi7

ダウンロードしたファイル名:
VMware-VMvisor-Installer-7.0U3c-19193900.x86_64.iso

ESXi7のイメージをUSBメモリに書き込む

インストール用に、USBメモリにESXi7のイメージを書き込みます。
以下のブログを参考に作成します。

MACの標準機能でISOイメージファイルからブータブルUSBを作成する | いのまたラボ
https://inomatalab.com/mac_iso_bootable_usb/

USBメモリのデバイスを確認。

$ diskutil list

マウントされていたらumountする(以下はusbメモリが、disk6だった場合)

$ diskutil unmountDisk /dev/disk6

USBメモリにESXi7のイメージを書き込む(以下はusbメモリが、disk6だった場合)

$ sudo dd if=./VMware-VMvisor-Installer-7.0U3c-19193900.x86_64.iso of=/dev/disk6 bs=1m

ESXi7のインストール

USBメモリを、ESXiをインストールするマシンに差し込んでブートします。
あとはインストーラーの指示に従ってインストールします。

わたしの場合、
On-BoardのNICがESXi7に対応していなかったので、以下のNICを購入して対応しました。
※メーカーの商品仕様の対応OSはWindowsのみ、公式には対応して無いので自己責任で。

安定性に優れるIntel製ICのギガビットLANカード「Mr.Anderson」
https://www.area-powers.jp/product/pcie/4580722550015/index.html

Intel製のチップが搭載されているNICであれば動くことが多いようです。
この商品は、「Intel WGI 210AT」と言うIntel製チップが搭載されています。

USB接続のLANアダプタでの試行錯誤メモ

手元にあったUSB接続のLANアダプタでも試してみました。
できなくも無いですが、いろいろ厄介だったので、
拡張スロットの空きがあるなら、Intel製チップ搭載のNIC買った方がよいと思います。

手順から逸れますが、試行錯誤のメモを残しておきます。

使用したアダプタは以下のものです。
ロットによって違うかもですが「ASIX AX88179」というチップが使われているようです。

EDC-GUA3-B | ELECOM
https://www.elecom.co.jp/products/EDC-GUA3-B.html

以下のブログの「ESXi のカスタム ISO を作る」部分を参考に、
ESXi7のカスタムインストールイメージを作ります(WindowsのPowerShellで作業します)

NUC Kit NUC7PJYH で ESXi 7.0 備忘録 | hyt adversaria
https://www.labohyt.net/blog/server/post-5423/

インストールすると、以下のブログにあるように、
「Exception: No vmknic tagged for management was found」
というエラーが出たので、
Restore Network Settingして、Network Adoptesからアダプタを選択します。

USB LANでESXi 7 をインストールする | 仮想化とか
https://kasoukatoka.com/esxi-usb-lan/

更に、ブートする度にネットワークアダプタが外れる現象に遭遇します。
先の手順で、毎回アダプタを選び直すとネットワークは利用出来ます。

私は、ここで見切りをつけてNICを買いに行きましたが、
以下のブログを対処方法が書かれています。

ESXi7.0でブート時にUSB NICが外れてしまう | kamata.net
https://blog.kamata-net.com/archives/12286.html

VMware Host Clinetへの接続

ESXiを起動したホストの画面に表示されてるURLに、ブラウザからアクセスします。
ユーザ名・パスワードはインストール時に指定したものです。

Ubuntu Linuxのクラウドイメージをダウンロード

以下のURLからUbuntuLinuxのクラウドイメージをダウンロードします。

Ubuntu Cloud Images (RELEASED)
https://cloud-images.ubuntu.com/releases/

ダウンロードしたファイル名: ubuntu-20.04-server-cloudimg-amd64.ova

VMwareでのcloud-initの利用方法と無償版の制限

VMwareでcloud-initを使う場合は、以下のドキュメント通り、
guestinfo.userdataに、cloud-configのyamlを指定すれば良いみたいです。

VMware | cloud-init Documentation https://cloudinit.readthedocs.io/en/latest/topics/datasources/vmware.html

但し、無償版ではgovcで更新操作しようとすると次のようなエラーが出てしまいます。

govc: ServerFaultCode: Current license or ESXi version prohibits execution of the requested operation.

参考: 無償ライセンスのESXiだとgovcでVM作れなかった | zaki work log
https://zaki-hmkc.hatenablog.com/entry/2019/10/02/075333

これは、無償ライセンスの制限なので、別の方法を考えます。
次に書かれている、cloud-configをディスクイメージから読み込む方法です。

VMware | cloud-init Documentation
https://cloudinit.readthedocs.io/en/latest/topics/datasources/nocloud.html

参考: cloud-initでUbuntuServerのセットアップを自動化する on ESXi(vmware) | @pioka | Qiita
https://qiita.com/pioka/items/85ba1d4889e21822cca2

cloud-initの設定ファイルイメージを作る

cloud-configの作成・動作確認は、以下のエントリを参考にしてください。

UbuntuServerでcloud-initの設定ファイルを開発する環境の作り方 | takemikami’s note
https://takemikami.com/2017/06/07/UbuntuServercloudinit.html

cloud-configが作成できたら、これをuser-dataというファイル名で保存します。
これ以外に、meta-datanetwork-configというファイルを作ります。

ここでは、以下のようなファイルを作成しました。

meta-data

local-hostname: simplevm

user-data

公開鍵を登録してSSH接続するケースの例です。

#cloud-config

# users and groups
users:
  - name: owner
    primary-group: users
    groups: [users]
    sudo: ["ALL=(ALL) NOPASSWD:ALL"]
    shell: /bin/bash
    lock_passwd: true
    ssh_authorized_keys:
      - (SSH接続するユーザの公開鍵)
runcmd:
  - apt-get update

network-config

IPアドレス固定する場合の例です。
固定IPアドレス: 192.168.1.10/24、Gateway&DNS: 192.168.1.1

ethernets:
  ens192:
    addresses: [192.168.1.10/24]
    gateway4: 192.168.1.1
    nameservers:
      addresses: [192.168.1.1]
      search: []
    optional: true
version: 2

以下のコマンドで3ファイルをまとめたisoイメージを作ります。

genisoimage -output cidata.iso -volid cidata -joliet -rock meta-data user-data network-config

cloud-initを適用して仮想マシンを起動する

VMware Host Clinetを使って作業します。

「仮想マシンの作成/登録」を選ぶ。

作成タイプの選択で、
「OVFファイルまたはOVAファイルから仮想マシンをデプロイ」を選ぶ。

OVFファイルとVMDKファイルの選択で、
適当な仮想マシン名、
OVAに「Ubuntu Linuxのクラウドイメージをダウンロード」で取得したファイルを指定。

ウィザードをそのまますすめて、デプロイ。

作成された仮想マシンを選んで「編集」を選ぶ。

CD/DVDドライブに「cloud-initの設定ファイルイメージを作る」で
作成したcidata.isoを指定し、接続にチェックして保存。

登録した鍵に対応するホストから、sshで接続できるかを確認する。

$ ssh owner@192.168.1.10

# CD/DVDの接続が遅いと、cloud-initが動いてくれないので、
# SSH接続出来ないときは、仮想マシンを再起動してやり直す。

手順は以上。

環境を構築するcloud-configを用意(gitなどで管理)しておけば、
必要に応じてサッと立ち上げられるので、便利ではないかと思います。

以上。