手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 Autoinstall 自動インストール – クリーンインストールを再現可能にする

Ubuntu 22.04 の Autoinstall は、インストール時の入力を user-data に寄せて、同じ条件のクリーンインストールを再現しやすくする仕組みです。検証用 VM、PXE 起動、初期構築の標準化に向いています。

この記事では、Ubuntu 22.04 Server の ISO 起動を前提に、NoCloud で meta-datauser-data を配布し、最小構成で自動インストールを流す手順を確認します。現在の本番環境を変更する記事ではなく、既存の Ubuntu 22.04 手順を保守するための参考資料として扱います。

関連する記事
この記事で確認すること
  • Ubuntu 22.04 Autoinstall の位置づけ
  • NoCloud 用の meta-datauser-data の配置
  • パスワードハッシュ、ストレージ、ネットワークの最小例
  • ISO 起動時の kernel parameter
  • ログ確認と再実行時の注意点
参考
書籍
参考書籍

ストーリーで覚える Linux CLI 入門

Linux のコマンドライン操作を基礎から確認したい場合の参考書籍です。価格や在庫はリンク先で確認してください。

Amazon で見る

このリンクは Amazon アソシエイトリンクです。

Autoinstall の位置づけ

Autoinstall は、Ubuntu Server インストーラーである Subiquity と cloud-init のデータを組み合わせて動きます。キーボード、ロケール、ユーザー、SSH、ネットワーク、ストレージ、追加パッケージなどを事前に定義できます。

要素役割
user-dataAutoinstall の本体設定を記述する
meta-dataNoCloud datasource 用の補助ファイル
ds=nocloud-netHTTP で設定ファイルを取得する指定
late-commandsインストール終盤に実行する追加処理

作業ディレクトリを用意する

HTTP で配布する例として、Web サーバーの公開ディレクトリ配下に Autoinstall 用のディレクトリを作成します。

sudo mkdir -p /var/www/html/autoinstall
sudo touch /var/www/html/autoinstall/meta-data
sudo ls -la /var/www/html/autoinstall

パスワードハッシュを作成する

identity.password には平文パスワードではなくハッシュを指定します。SSH 公開鍵認証を使う場合でも、検証用ユーザーの扱いを明示しておきます。

openssl passwd -6 -salt $(openssl rand -hex 8) 'replace-with-password'

user-data を作成する

最小構成の user-data を作成します。インターフェイス名、公開鍵、パスワードハッシュ、ストレージ方針は環境に合わせて変更します。

sudo tee /var/www/html/autoinstall/user-data >/dev/null <<'EOF'
autoinstall:
  version: 1
  locale: ja_JP.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: false
    authorized-keys:
      - ssh-ed25519 AAAAreplace-with-public-key
  network:
    version: 2
    ethernets:
      enp1s0:
        dhcp4: true
  storage:
    layout:
      name: direct
  packages:
    - qemu-guest-agent
  late-commands:
    - curtin in-target --target=/target systemctl enable ssh
EOF

設定ファイルを確認する

YAML は空白の位置で意味が変わります。起動前にファイルの中身と HTTP 配布結果を確認します。

sudo test -s /var/www/html/autoinstall/user-data
sudo test -f /var/www/html/autoinstall/meta-data
curl -fsS http://127.0.0.1/autoinstall/user-data
curl -fsS http://127.0.0.1/autoinstall/meta-data

HTTP で配布できることを確認する

インストール対象のマシンから見える URL で取得できる必要があります。別ホストから同じ URL を確認し、firewall や経路の問題を切り分けます。

hostname -I
curl -fsS http://10.0.51.71/autoinstall/user-data
curl -fsS http://10.0.51.71/autoinstall/meta-data

ISO 起動時の指定

Ubuntu Server ISO の起動時に kernel parameter として autoinstallds=nocloud-net を渡します。HTTP の URL は、インストール対象から到達できるアドレスにします。

linux /casper/vmlinuz ip=dhcp autoinstall ds="nocloud-net;s=http://10.0.51.71/autoinstall/"
initrd /casper/initrd
boot

シリアルコンソールで確認する

仮想環境やリモートコンソールで確認する場合は、コンソール指定を追加します。画面が見えない場合でも、シリアル側にログを出せるようにします。

linux /casper/vmlinuz ip=dhcp autoinstall ds="nocloud-net;s=http://10.0.51.71/autoinstall/" console=ttyS0
initrd /casper/initrd
boot

インストールログを確認する

失敗した場合は、インストーラーと cloud-init のログを確認します。YAML 構文、HTTP 取得、ストレージ指定、ネットワーク指定で止まることが多いです。

sudo ls -la /var/log/installer
sudo cat /var/log/installer/subiquity-server-debug.log
sudo cat /var/log/installer/autoinstall-user-data
sudo journalctl -u cloud-init --no-pager

再実行時に注意すること

Autoinstall はディスク初期化を伴うため、再実行すると既存データを失う可能性があります。検証環境でも、対象ディスク、VM、ストレージ layout を確認してから実行します。

  • 対象ディスクが想定どおりか確認する
  • 既存 VM の再利用時は古い cloud-init 状態を消す
  • HTTP 配布先を環境ごとに分ける
  • SSH 公開鍵と初期ユーザーを固定しすぎない
  • 手順変更後はクリーンインストールで再確認する

meta-data と instance-id

meta-data は空でも動く構成がありますが、検証を繰り返す場合は instance-id を明示すると状態の追跡がしやすくなります。

sudo tee /var/www/html/autoinstall/meta-data >/dev/null <<'EOF'
instance-id: ubuntu-2204-autoinstall-001
local-hostname: ubuntu-2204
EOF
curl -fsS http://127.0.0.1/autoinstall/meta-data

関連手順との使い分け

USB メディアだけで手作業インストールする場合は、ISO の書き込みと手入力で十分です。複数台や検証 VM を同じ条件で作り直す場合は、Autoinstall や PXE と組み合わせる方が再現性を高めやすくなります。

方式向いている場面
USB メディア単発の手作業インストール
Autoinstall同じ条件のクリーンインストール
PXE / Autoinstall複数台やリモート環境の初期構築
テンプレート VM構築済み状態を複製する検証環境

まとめ

Ubuntu 22.04 の Autoinstall は、インストール手順を user-data と起動パラメータに寄せることで、クリーンインストールの再現性を高める仕組みです。最初は DHCP、最小ストレージ、SSH 公開鍵、HTTP 配布確認までに範囲を絞ると切り分けしやすくなります。

運用では、対象ディスク、ネットワーク到達性、YAML 構文、ログ確認、再実行時のデータ消失を必ず確認します。PXE と組み合わせる場合も、まず単体の NoCloud 配布で user-data が読み込まれることを確認してから広げます。

関連する記事
Ubuntu 22.04 Autoinstall 自動インストール – クリーンインストールを再現可能にする

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る