cloud-initを利用してESXi上にUbuntu Serverを構築する
概要
Ubuntu Serverが好きなのでESXi上にインストールしたい。仮想マシンの作成になるべく手数を減らし、再作成をかんたんにするために次の方法を試します。
- OVA(Open Virtualization Format Archive, 仮想マシンイメージの共通規格)のUbuntu版を利用して仮想マシンを作成
- cloud-initを利用したOSのセットアップ
参考: cloud-initとOVAファイルでESXi上にUbuntuを構築する - Qiita
技術
OVA (Open Virtualization Format Archive)
仮想マシンイメージフォーマットの共通規格として作られたオープン仮想化フォーマット(Open Virtualization Format、略してOVF)というものがあります。これに、各種イメージ(Xen, KVM, VMware)などを一つのファイルでまとめたものがOVAファイルです。(Wikipedia)
UbuntuはUbuntu Cloud ImagesとしてCanonicalが配布している。バージョンごとに分かれており、例えば、Ubuntu Server 22.04 LTSのイメージはUbuntu 22.04 LTS (Jammy Jellyfish) dailyにあります。ここにはOVAファイルだけでなくいろいろな種類のイメージが配布されています。
このUbuntuのOVAファイルはセットアップされておらず、cloud-initなどを利用してセットアップする必要があります。クラウドサービス等で利用するときに何らかのセットアップがされていたら怖いですからね。
cloud-init
cloud-initはOSの初期設定を行うためのツールです。cloud-initはコンフィグファイルを受け取り、その内容に従い初期設定を行います。コンフィグファイルはmeta-data
、user-data
、network-config
、vendor-data
などがあります。
方法
コンフィグ作成
meta-data
、user-data
、network-config
、vendor-data
のうち必須であるmeta-data
、user-data
とnetwork-config
を作成します。
# meta-data
instance-id: vm-test
local-hostname: vm-test
# user-data
users:
- name: kokshi
plain_text_passwd: password
lock_passwd: false
shell: /bin/bash
version: 2
ethernets:
ens192:
dhcp4: false
addresses: ["192.168.10.111/24"]
gateway4: "192.168.10.254"
nameservers:
addresses:
- "8.8.8.8"
OVAファイル
https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.ova
ISOファイルの作成
$ genisoimage -output seed.iso \
-volid "cidata" \
-input-charset "utf-8" \
-joliet -rock \
user-data \
meta-data \
network-config