OSのインストールというのは面倒なものです。いや、そもそも普通の人はOSのインストールなんて一生に一度あるかないかのビッグイベントですが、今これを読んでいる時点で
今回はそんな面倒さを少しでも和らげられるようUbuntu 24.
サーバー版の自動インストール機能を用いた自動化方法
自動インストール機能そのものは、第810回の
Ubuntuの新インストーラーである
新インストーラーのフロントエンドは
サーバー版のインストールの自動化については、次の記事で紹介しています。
- 第615回
「サーバー版インストーラーに導入された自動インストール機能」 - 第787回
「PXEでサーバーの完全自動インストールを行う」
「インストール設定を書いたYAMLファイルを作る」
インストーラーなどのデプロイ関連のツールが起動したあとに、そのシステムに対して何も操作しなくてもインストールやデプロイ、初期設定が完了する仕組みを
さらに自動化できる範囲にも限りがあるため、本格的な利用を考えるのであれば、Ansibleなどの構成管理ツールと組み合わせて使うことになるでしょう。
自動インストール用のYAMLファイルを作る
さっそく自動インストール用のファイルを作ってみましょう。書き方や書式は、サーバー版のそれと同じであるため、Subiquityのドキュメントが参考になります。
autoinstall:
version: 1
locale: ja_JP.UTF-8
keyboard:
layout: jp
timezone: Asia/Tokyo
identity:
hostname: autoinstall
realname: 'Mitsuya Shbiata'
username: shibata
password: "$6$uw0WAWIWz0FfXEGI$zf3nqtEHqKJfiW7gp7nk4l7BIFXe7029wqwLbIWlPBm/YQPeJ0yXh4W1xcbsOINL1DEyHdyxSXao.n9vDSwK5."
packages:
- vim
- neovim
- byobu
- git
実は現在のデスクトップ版インストーラーでは、自動インストールに入る前に
$ openssl passwd -6 パスワード $6$uw0WAWIWz0FfXEGI$zf3nqtEHqKJfiW7gp7nk4l7BIFXe7029wqwLbIWlPBm/YQPeJ0yXh4W1xcbsOINL1DEyHdyxSXao.n9vDSwK5.
上記の例ではさらに追加でパッケージもインストールしています。これでYAMLファイル自体は完成です[3]。
インストーラーを起動し自動インストールを実行する
次に先ほど作成したYAMLファイルを用いて自動インストールを行います。Ubuntu Desktop ProvisionがYAMLファイルを取得する方法は次の2種類です。
- HTTPなどのネットワーク越しに取得する
- ローカルのLive環境に配置したものを取得する
ちなみにUbuntu 24.
インストーラーを更新した場合は、一度インストーラーを再起動します。具体的には
あとは画面の指示に従ってインストール作業を行っていけば、ネットワーク設定のあとに
HTTP経由で取得するならhttp://
」file:///
」file://
」
Live環境にダウンロードするのが面倒であれば、近場にあるUbuntuマシンで次のようにHTTPサーバーを立ち上げてしまえば良いでしょう。
お手軽にHTTPサーバーを立ち上げる方法: autoinstall.yamlがある場所で実行すると、インストーラーでは 「http://IPアドレス:8080/autoinstall.yaml」と記述できる $ python3 -m http.server 8080
「確認」
YAMLファイルのパースに失敗すると、次のようにエラーになります。現時点ではどこでエラーになっているかわかりません。
しかしながらこの状態で
あとは放っておけば残りの手順は自動化され、自動的にシステムの再起動まで行われます。インストールメディアの削除確認もスキップされますので、次回起動時に再びインストーラーが起動してしまうようなら、一度シャットダウンしてメディアを取り外してください。
無事に自動インストールが完了してシステムが立ち上がったあとは、期待通りの設定になっているか確認してください。ちなみに通常のデスクトップ版のインストールと異なり、
- ストレージが10GiB以下なら、すべての領域がルートファイルシステムに使われる
- ストレージが10GiBから20GiBなら、ルートファイルシステムのサイズは10GiB
- ストレージが20GiBから200GiBなら、ルートファイルシステムのサイズはストレージの半分
- ストレージが200GiBを超えると、ルートファイルシステムのサイズは100GiB固定
サーバーの場合、すべてのルートファイルシステムをひとつにまとめたりせず、用途に応じてパーティションをわけたり複数のストレージをLVMでひとつのストレージとして管理することがあるため、このような設定になっています。デスクトップの場合は、全部まとめてひとつのルートファイルシステムにすることも多いでしょう。このあたりの設定方法は後ほど解説します。
インストール時のログは再起動後も/var/
」/var/
」autoinstall.
を元に、足りない設定をインストーラーが追加して実際に使われるファイルとなります。未指定時の値がどうなるのか、設定の書き方はどうするのが正しいのかを確認する際に参考になります。
いくつかの設定例
最後によくある設定例をいくつか紹介しましょう。
ストレージをすべて利用する
先ほど説明したように、自動インストールでは200GiB以上のストレージにインストールしようとすると、ルートファイルシステムのサイズを100GiB固定に設定してしまいます。これを細かく設定するのが
storage: layout: name: lvm sizing-policy: all password: storagepassword
「sizing-policy」
またストレージが複数台繋がっているマシンであれば、storageの設定は必須になります。
storage: layout: name: lvm match: path: /dev/nvme0n1
上記の例はデバイスファイルパスを指定していますが、他にもラベルやシリアル番号、モデル名、SSDであるかどうか、サイズが大きいかどうかなどでも選択可能です。
ストレージの設定はインストールの肝でもありますので、より細かい設定も可能です。まずはドキュメントのstorageに関する項目を一通り読んでみることをおすすめします。さらにcurtinの設定を使って細かく指定できます。また実際にGUIから設定・/var/
」
最小インストールから拡張インストールに変更する
第810回でも説明されているように、Ubuntu 24.
source: id: ubuntu-desktop
これで拡張選択相当の挙動になります。ちなみに明示的に最小インストール構成にしたい場合は
なおこの選択肢はインストーラーイメージファイルの/casper/
」
snapパッケージをインストールする
よく使うsnapパッケージをインストールしたい場合は、次のように記述します。
snaps: - name: slack channel: stable classic: false
「channnel」
debファイルをダウンロードしてインストールする
「late-commands」
late-commands: - curtin in-target -- wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb - curtin in-target -- apt install -U -y ./google-chrome-stable_current_amd64.deb - curtin in-target -- rm -f ./google-chrome-stable_current_amd64.deb
「curtin in-target --
」/
」
このように自動インストール機能を使えば、普段Ubuntuデスクトップをインストールする際の手順を、ある程度省力化できます。