Ubuntu Server 22.04 の Autoinstall は、サーバーを手動インストールではなく、定義ファイルをもとに自動インストールする仕組みです。サーバー管理ではインプレースアップグレードよりクリーンインストールを推奨したいので、Autoinstall はそのための重要な入口になります。
書籍
Ubuntu Server の構築・運用項目を体系的に確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。
Amazon で見るこのリンクは Amazon アソシエイトリンクです。
Autoinstall の位置づけ
Autoinstall は、Ubuntu Server Installer である Subiquity と cloud-init を使って、インストール時の設定を自動化します。OS インストール、ユーザー、SSH、ネットワーク、ストレージなどを user-data に定義します。
| 要素 | 役割 |
| Subiquity | Ubuntu Server のインストーラー |
| cloud-init | 初期設定データを読み込んで適用する仕組み |
| user-data | 自動インストールの設定本体 |
| meta-data | NoCloud datasource 用のメタ情報。空ファイルでもよい |
| NoCloud / NoCloud-Net | ローカルまたは HTTP で user-data を渡す方式 |
なぜ Autoinstall を使うのか
サーバー管理では、OS を長く継ぎ足して使うより、必要なタイミングでクリーンインストールし、構成管理を再適用できる方が健全です。Autoinstall は、そのクリーンインストールを手作業から定義ファイル化するための仕組みです。
- パーティション構成をファイルで定義できる。
- ユーザー、SSH、ネットワーク、パッケージを初期状態から揃えられる。
- インストール結果を再現しやすい。
- Ansible などの構成管理へ自然につなげられる。
- 手動インストールの揺らぎを減らせる。
基本構成
ここでは Web サーバーで user-data と meta-data を配布し、インストーラー起動時に ds=nocloud-net;s=... で参照させる構成にします。
/var/www/html/autoinstall/
├── meta-data
└── user-datameta-data の作成
meta-data は NoCloud datasource が参照するファイルです。最低限、空ファイルとして作成できます。
sudo mkdir -p /var/www/html/autoinstall
sudo touch /var/www/html/autoinstall/meta-dataパスワードハッシュの作成
user-data には平文パスワードではなく、ハッシュ化したパスワードを記載します。
openssl passwd -6 -salt $(openssl rand -hex 8) 'password'user-data の例
以下は、シングルディスク、LVM、SSH 有効化を前提にした最小寄りの例です。デバイス名、ネットワークインターフェイス名、ユーザー名、公開鍵は環境に合わせて変更します。
sudo tee /var/www/html/autoinstall/user-data <<'EOF'
#cloud-config
autoinstall:
version: 1
locale: en_US.UTF-8
keyboard:
layout: jp
identity:
hostname: ubuntu-2204
username: myadmin
realname: myadmin
password: "$6$replace-with-generated-password-hash"
ssh:
install-server: true
allow-pw: true
authorized-keys: []
network:
version: 2
ethernets:
enp1s0:
dhcp4: true
storage:
config:
- type: disk
id: disk-vda
path: /dev/vda
ptable: gpt
wipe: superblock
preserve: false
grub_device: false
- type: partition
id: partition-efi
device: disk-vda
size: 1G
flag: boot
grub_device: true
wipe: superblock
- type: format
id: format-efi
volume: partition-efi
fstype: fat32
- type: mount
id: mount-efi
device: format-efi
path: /boot/efi
- type: partition
id: partition-boot
device: disk-vda
size: 2G
wipe: superblock
- type: format
id: format-boot
volume: partition-boot
fstype: ext4
- type: mount
id: mount-boot
device: format-boot
path: /boot
- type: partition
id: partition-lvm
device: disk-vda
size: -1
wipe: superblock
- type: lvm_volgroup
id: vg0
name: vg0
devices:
- partition-lvm
- type: lvm_partition
id: lv-root
name: root
volgroup: vg0
size: -1
wipe: superblock
- type: format
id: format-root
volume: lv-root
fstype: ext4
- type: mount
id: mount-root
device: format-root
path: /
updates: security
EOF手動インストール結果をテンプレートにする
Autoinstall の storage は書式が複雑になりやすいです。最初は一度手動インストールし、/var/log/installer/autoinstall-user-data をテンプレートとして確認すると現実的です。
cat /var/log/installer/autoinstall-user-data特に、ディスクデバイス名、NIC 名、UEFI / BIOS、LVM 構成は環境差が出ます。サーバーごとに同じ定義を使い回す場合は、ハードウェア差分をどう吸収するかを設計する必要があります。
インストーラー起動時の指定
インストーラーの GRUB 画面で編集モードに入り、カーネルパラメータに autoinstall と NoCloud-Net の datasource を指定します。
linux /casper/vmlinuz ip=dhcp autoinstall ds="nocloud-net;s=http://10.0.51.71/autoinstall/"シリアルコンソールを使う場合は、必要に応じて console=ttyS0 などを追加します。
linux /casper/vmlinuz ip=dhcp autoinstall ds="nocloud-net;s=http://10.0.51.71/autoinstall/" console=ttyS0注意点
user-dataとmeta-dataが HTTP で取得できることを事前に確認する。- インストール対象ディスクを間違えるとデータを消す。検証環境で十分に確認する。
- Ubuntu 22.04.3 付近では NoCloud の
hやi引数に関する既知の注意があるため、単純なds=nocloud-net;s=...の形から始める。 - storage 定義は複雑なので、最初から複数ディスクや特殊構成を狙いすぎない。
- Autoinstall は OS 初期構築までに絞り、詳細設定は Ansible などへ分離する。
Ansible との役割分担
Autoinstall は、OS を起動可能な状態にするための入口です。すべての設定を Autoinstall に詰め込むより、OS インストール、初期ユーザー、SSH、基本ストレージまでを Autoinstall に任せ、その後の詳細設定は Ansible などの構成管理で適用する方が管理しやすいです。
| 領域 | 担当 |
| OS インストール | Autoinstall |
| 初期ユーザー / SSH | Autoinstall |
| 基本ネットワーク | Autoinstall または初期 Ansible |
| ミドルウェア設定 | Ansible |
| アプリケーション設定 | Ansible |
| データ移行 | 個別手順または専用ジョブ |
まとめ
Ubuntu Server 22.04 の Autoinstall は、サーバーをクリーンインストール前提で再現可能にするための仕組みです。インプレースアップグレードで状態を継ぎ足すより、Autoinstall で OS を作り直し、Ansible などで構成を再適用する方が、サーバー管理としては健全です。
ポイントは、Autoinstall にすべてを詰め込まないことです。OS インストールに必要な最低限を定義し、アプリケーションや運用設定は構成管理へ分離すると、再構築しやすいサーバーになります。



