コンテンツにスキップ

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-datauser-datanetwork-configvendor-dataなどがあります。

cloud-init documentation

方法

コンフィグ作成

meta-datauser-datanetwork-configvendor-dataのうち必須であるmeta-datauser-datanetwork-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