VMware ESXi7 Update3cのセットアップから、仮想マシンにcloud-initを適用する流れ
近頃、開発検証用の環境がごちゃごちゃして来たので、
久しぶりに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-data
とnetwork-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などで管理)しておけば、
必要に応じてサッと立ち上げられるので、便利ではないかと思います。
以上。