Ubuntu 24.04でのAutoInstallについて

# はじめに

これまでAutoInstallについての記事はいくつかQiitaにアップしてきました。

https://qiita.com/YasuhiroABE/items/063a442b7e45633e7cb0

https://qiita.com/YasuhiroABE/items/637f1046a15938f9d3e9

ISOイメージを作成するための作業に利用した成果物はGitHubに置いています。

https://github.com/YasuhiroABE/ub-autoinstall-iso

24.04で動作確認したところ22.04と大きな違いはなかったことから、リポジトリ名にあった"2204"の文字を削除して特定バージョンに依らないものであることを明確にしました。

# 現状

いまのところUbuntu 24.04がリリースされて、これまでのような混乱もなくスムーズに各プラットフォームに導入可能なISOイメージが作成できています。

何か問題があればCanonicalの文書と公開しているコードを参照することをお勧めします。

* [Canonical - Ubuntu installation guide](https://canonical-subiquity.readthedocs-hosted.com/en/latest/index.html) (user-dataファイルの書式について)
* [curtin.readthedocs.io](https://curtin.readthedocs.io/en/latest/topics/storage.html) (storageセクションの書式を調べる場合)
* [https://github.com/canonical/curtin](https://github.com/canonical/curtin) (パーティションの作成に問題があった場合)
* [https://github.com/canonical/subiquity](https://github.com/canonical/subiquity) (その他のインストール時の問題)

また``config/user-data``は一読してパスワードなど必要な部分は適宜変更してからお使いください。

## テストした機器

いまのところ次の機器でISOイメージの動作を確認しています。VMwareによる仮想マシンを除きUSBメモリからブートしています。

* PC Engines社製 APU2 (Legacy BIOS)
* ThinkPad x230 (UEFI Only, disabled CSM mode)
* VMware Workstation Pro v17.5.1 (Legacy BIOS and UEFI)

VMware上ではDesktop版のイメージについても動作を確認しています。

Desktop版ISOイメージが対応しているのはUubntuのみで、各フレーバー(xubuntuなど)は独自の仕組みを利用している場合があります。フレーバーのDesktop版を導入する場合にはServer版のイメージにxubuntu-desktopメタパッケージを導入するといった方法を検討してください。

# これまでに遭遇した問題

主に自分のミスについてまとめておきます。

## user-dataの誤った記述について (Legacy Bios用)

これはUEFI環境に導入する場合には関係ないため、現在ではほとんどの環境では影響を受けないと思います。

Curtinの文書を参照した時にStorageセクションではなくてGrubセクションをみてコピーしたのだと思いますが、APU/APU2用に準備しているisolinuxから起動した場合に参照するconfig/user-data.mbrファイルについて、storageセクションに不正なgrubサブセクションを記述していました。

```diff:config/user-data.mbrの変更箇所
diff --git a/config/user-data.mbr b/config/user-data.mbr
index f07b12a..173afee 100644
--- a/config/user-data.mbr
+++ b/config/user-data.mbr
@@ -13,9 +13,6 @@ autoinstall:
   package_update: false
   package_upgrade: false
   storage:
-    grub:
-      install_devices:
-        - root-ssd
     swap:
       size: 2G
     config:
```

Storageセクションの記述はCurtinに渡される関係で、JSON Schemaでの検証はまったくできず、誤りがあると実行時にエラーとなります。

Storageセクションに記述できる内容は、前述のcurtin.readthedocs.ioに記載されているとおりで、これまであった内容は間違ったものでした。

これまで無視されてきたこの不正な記述は、24.04ではインストール時のエラーとなるため削除しています。

GitHubのリポジトリにはこれらの変更点を反映した上で、"24.04"というtagをつけています。

## Gnome以外の各フレーバーDesktop版を利用する際の注意点

Ubuntuが配布しているDesktop版のISOイメージはGnomeを採用していて、これはAutoInstallに23.10から対応しています。

他のKDEやXfce4などを基盤とするDesktop版はKubuntuやXubuntuなどの名称でフレーバーと呼ばれています。

各フレーバーのAutoInstallへの対応はいまのところ限定的です。

XubuntuのISOイメージを利用することはできますが、kernelの引数をみて自動的にインストーラーを起動することはしてくれません。

手動でInstallerアイコンを起動すると自動でuser-dataファイルに従って処理を行ってくれますが、ディスプレイやマウスを接続しておかないといけないので、本来の目的は達成できないでしょう。

従来から各フレーバーはインストーラーを独自に準備していました。Gnome Desktop版の公式ISOイメージを使って各フレーバーのメタパッケージを導入する方法はあまりお勧めしません。

Ubuntu Server版を利用して追加パッケージに各デスクトップMetaパッケージ(``xubuntu-desktop``等)を指定する方法か、下記のような別途Ansibleなどで設定を自動化する方法がお勧めです。

# AutoInstallとAnsibleを併用するお勧めの利用方法

Kitting目的でAutoInstallを利用するのは良いのですが、これだけで全てのカスタマイズを完結させるのは良い方法とはいえません。

:::note
もしAutoInstallで導入したPCをすぐにユーザーに配布しなければいけないような状況ならAnsibleのような追加手段の採用は避けたいと思うかもしれませんが、そうでなければAutoInstallを使い倒すような真似は2年後どうなるか分からないので止めましょう。
:::

AutoInstallを使う上でのお勧めの利用方法はサーバー版ISOイメージを利用して最低限opensshサーバーの起動とsshの公開鍵を登録する程度のカスタマイズに留めるべきだと思います。

デスクトップが必要であれば追加で各フレーバーのメタパッケージ(e.g. xubuntu-desktop, kubuntu-desktop, ubuntu-mate-desktop)を指定するぐらいはありかもしれませんが、それ以上の設定はお勧めしません。

特にデスクトップが必要な場合には、サーバー版とDesktop版ではネットワーク周りの設定方法などが微妙に違うので、まったく同じ結果にはなりませんがあまり問題にはならないと思います。

システムは導入後も継続してメンテナンスを行う必要があります。そのためAutoInstallの設定ファイル中でlate-commandsを駆使する複雑な操作は止めて、Ansibleなどによる汎用的な方法の採用をお勧めします。

Ansibleを使うだけで冪等性が得られるわけではありませんが、大抵の設定はインストールして終りではないはずです。

導入時のカスタイマイズはAnsibleに必要な部分+αの最小限に留めて、その他の部分はAnsibleを利用することで継続して稼動中の設定変更にも対応できるのでお勧めです。

以上