この記事は古い記事です。最新はこちらを参照して下さい。
概要
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
問題なければ以降のインストールは全て自動で完了します。