物理マシンでUbuntu Serverのautoinstall

Ubuntu Serverを自動インストールする方法については、Ubuntu Serverガイドにすでにちゃんとした記事がある。

あとは柴田さんのgihyo.jp記事もあるので日本語でも解説されている。

Ubuntu Serverガイドにしたがって、自分用に最小のautoinstallファイルを作ってやってみた。

#cloud-config
autoinstall:
  version: 1
  identity:
    hostname: ubuntu-server
    username: ubuntu
    # password=ubuntu
    password: "$6$exDY1mhS4KUYCE/2$zmn9ToZwTKLhCw.b4/b.ZRTIZM30JZ4QrOQ2aOXJ8yk96xpcCof0kxKwuX1kqLG/ygbJ1f8wxED22bTL4F46P0"
  ssh:
    install-server: yes  # https://launchpad.net/bugs/1974483
    allow-pw: no
  apt:
    geoip: false
  kernel:
    flavor: generic  # or hwe

ドキュメントにあるように、kvmコマンドと下記カーネルコマンドラインパラメーターを使うと完璧に動作する。

-append 'autoinstall ds=nocloud-net;s=http://_gateway:3003/'

けれども、カスタマイズしてない普通の22.04 LTSのISOだとうまくいかなくて、最初の言語選択の画面で止まってしまう。

結局はすごく小さなところが問題で、セミコロンをエスケープしておかないと、autoinstallファイルを取得するためのURLが無視されて渡らない。これだけの話で1時間以上悩んだ。ドキュメントへのフィードバックはしたので、将来的に誰かの役に立てればと。

GRUBの時はセミコロンのエスケープが必須
GRUBの時はセミコロンのエスケープが必須