Ubuntu 22.04 autoinstallationを使用した自動インストール

目次に戻る

概要

autoinstallationを使用してUbuntuを自動でインストールします。個人的に自動インストールで最もうれしいのはパーティション構成をファイルとして定義できることです(手動だとかなり面倒です)。

理想としては複数ディスクを使用する場合でもパーティションを自動構成したかったのですがシングルディスクにしか対応していないようです(いくつか試しました)。2つ目のディスクはインストール後に手動で設定する必要があります。これはCentOSのkickstartでは可能でした。

はじめに

autoinstallationのはuser-data(定義ファイル)とmeta-data(空のファイル)をWebサーバーで公開する必要があります。Webサーバーに特に要件はありませんが、UbuntuのWebサーバーを用いる場合はこちらを参考にして下さい。本稿では/var/www/html(ドキュメントルート)に必要なファイルを配置する前提としています。

DHCPサーバーも必要です。UbuntuのDHCPサーバーを用いる場合はこちらを参考にして下さい。

定義ファイルの作成

/var/www/html/meta-data

meta-dataを作成します。これは空ファイルです。

myadmin@ubuntu:~$ sudo touch /var/www/html/autoinstall/meta-data

/var/www/html/user-data

user-dataを作成する前に手動インストールを行い、テンプレートとなる情報(/var/log/installer/autoinstall-user-data)を取得しておきます。特にネットワークデバイス名、ディスクデバイス名が重要です。

myadmin@ubuntu:~$ cat /var/log/installer/autoinstall-user-data

user-dataに記載するパスワードを生成します。

myadmin@ubuntu:~$ openssl passwd -6 -salt $(openssl rand -hex 8) password
$6$bf432b7f0f910a84$kUTIwE5afiOUkL3gabGF/WQnb9GdaMypSa5mJrWUelK41Xa2L/xNl4kbB91KWwaYvv7/Q/pQ8pjCu2COip5DJ0

user-dataを作成します。/var/log/installer/autoinstall-user-dataは全てブロックスタイルとなりますが、特にstorageがかなり見づらいのでフロースタイルで書き直しています。/boot/efiと/bootのサイズは手動インストールで自動的に割り当てられる値を切りの良い値に変更しています。

authorized-keysは後からssh-copy-idするのも面倒なので、共通で使用できるkeyがあればこの時点で設定しておくのが良いでしょう。

myadmin@ubuntu:~$ sudo tee /var/www/html/user-data <<"EOF" 
#cloud-config
autoinstall:
  apt:
    disable_components: []
    geoip: true
    preserve_sources_list: false
    primary:
    - arches: [amd64, i386]
      uri: http://archive.ubuntu.com/ubuntu
    - arches: [default]
      uri: http://ports.ubuntu.com/ubuntu-ports
  drivers:
    install: false
  identity:
    hostname: ubuntu
    password: $6$bf432b7f0f910a84$kUTIwE5afiOUkL3gabGF/WQnb9GdaMypSa5mJrWUelK41Xa2L/xNl4kbB91KWwaYvv7/Q/pQ8pjCu2COip5DJ0
    realname: myadmin
    username: myadmin
  kernel:
    package: linux-generic
  keyboard:
    layout: jp
    toggle: null
    variant: ''
  locale: en_US.UTF-8
  network:
    ethernets:
      enp1s0:
        dhcp4: true
    version: 2
  ssh:
    allow-pw: true
    authorized-keys: []
    install-server: true
  storage:
    config:
    - {ptable: gpt, path: /dev/vda, wipe: superblock, preserve: false, name: '', grub_device: false, type: disk, id: disk-vda}
    - {device: disk-vda, size: 1G, wipe: superblock, flag: boot, number: 1, preserve: false, grub_device: true, type: partition, id: partition-0}
    - {fstype: fat32, volume: partition-0, preserve: false, type: format, id: format-0}
    - {path: /boot/efi, device: format-0, type: mount, id: mount-0}
    - {device: disk-vda, size: 2G, wipe: superblock, flag: '', number: 2, preserve: false, grub_device: false, type: partition, id: partition-1}
    - {fstype: ext4, volume: partition-1, preserve: false, type: format, id: format-1}
    - {path: /boot, device: format-1, type: mount, id: mount-1}
    - {device: disk-vda, size: -1, wipe: superblock, flag: '', number: 3, preserve: false, grub_device: false, type: partition, id: partition-2}
    - {name: vg0, devices: [partition-2], preserve: false, type: lvm_volgroup, id: lvm_volgroup-0}
    - {name: root, volgroup: lvm_volgroup-0, size: -1, wipe: superblock, preserve: false, type: lvm_partition, id: lvm_partition-0}
    - {fstype: ext4, volume: lvm_partition-0, preserve: false, type: format, id: format-3}
    - {path: /, device: format-3, type: mount, id: mount-3}
  updates: security
  version: 1
EOF

自動インストールの実行

インストーラー起動後のGRUBの画面でEdit mode(e)に入り下記の通り編集します。IPアドレスは各自のWebサーバーのIPアドレスに置き換えてください。

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

Ctrl-xでインストールを続行します。

KVM上の仮想マシン等でシリアルコンソールを使用したい場合は下記のように編集します。virt-installでのインストール時にlocationを使用すると--initrd-injectでカーネルパラメータを渡せるようになるのですが、autoinstallationは何故か機能せず一旦諦めています。

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

問題なければ以降のインストールは全て自動で完了します。

目次に戻る

Ubuntu 22.04 autoinstallationを使用した自動インストール

コメントを残す

メールアドレスが公開されることはありません。

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

トップへ戻る