Ubuntu Weekly Recipe

第154回 さくらVPSへのネットブートインストールをPreseedingで自動化する

この記事を読むのに必要な時間:およそ 6 分

インストールの自動化

Debian-InstallerをベースにしたUbuntuのインストーラは,Debian-Installerと同様にPreseedingやKickstartに準じた「事前設定ファイル」を使うことで,インストールを自動化できます。ここでは,Preseedingを使った自動化方法をご紹介します。Kickstartを使った方法については,Ubuntuのインストールガイドを参照してください。

Preseedingは,あらかじめインストール中に尋ねられる質問への回答をpreseed.cfgという事前設定ファイルを記述しておいて,それをインストーラに渡すことで自動化を行います。インストーラに渡す方法には主に以下の3種類があります。

  1. インストーラがあるメディアにファイルとして保存した上で,インストーラ起動時にそのファイルパスを指定する
  2. インストーラ起動時に事前設定ファイルがあるネットワーク上のURLを指定する
  3. インストーラのイメージファイル(initrd.gz)に組み込む

今回はネットブートインストールを使っているために,1番目の方法は使用できません。また,2番目の方法はインストール対象のマシンと事前設定ファイルを配布するマシンが共に信頼できる経路でつながっていることが前提となっているため,インターネット越しにやるには不向きです。よって,3番目のinitrd.gzを編集する方法を採用します。

なお,preseed.cfgとinitrd.gzは満足のいく設定になるまでトライアンドエラーを繰り返しながら修正していくことになります。よって,今後の作業は,インストールのたびにフォーマットされる仮想マシン上ではなく,作業内容が保存されるローカルマシン上で行うと良いでしょう。最後に,initrd.gzのみをscpなどで仮想マシンにコピーして,あとは前節のようにGRUBの設定を行います。

事前設定ファイルを作成する

まず最初に,インストールガイドにあるひな形をダウンロードしてpreseed.cfgという名前で保存します。

$ wget -O preseed.cfg https://help.ubuntu.com/10.10/installation-guide/example-preseed.txt

もし,既に自動化したい環境と同じ状態のマシンがあるなら,debconf-utilsパッケージにあるコマンドを使うことで,インストールされたDebianパッケージの設定値一覧を出力できます。事前設定ファイルを作成する場合の参考になるでしょう。

$ sudo apt-get update
$ sudo apt-get install debconf-utils
$ sudo debconf-get-selections --installer > sample.seed

上記ひな形を元に,preseed.cfgを修正します。設定値や書式については,preseed.cfgのコメントやドキュメントを参考にしてもらうことにして,ここでは自動化という観点で初期設定値から変更すべき項目などをリストアップします。設定内容自体は,各自の環境にあわせて適切なものを指定してください。

# キーボードを設定します(以下は日本語キーボードの場合)
d-i console-setup/layoutcode string jp

# DHCPによるIPアドレス取得を無効化します
d-i netcfg/disable_dhcp boolean true

# IPアドレスを静的に設定します(最初にCentOSで取得した値を使います)
# ネームサーバのアドレス: http://support.sakura.ad.jp/support/vps/tips_ossetup.shtml
d-i netcfg/get_nameservers string 210.188.224.10 210.188.224.1
d-i netcfg/get_ipaddress string (ifconfigで取得した値)
d-i netcfg/get_netmask string (ifconfigで取得した値)
d-i netcfg/get_gateway string (ifconfigで取得した値)

# ホスト名,ドメイン名を設定します(最初にCentOSで取得した値を使います)
d-i netcfg/get_hostname string ("wwwNNNNu"など)
d-i netcfg/get_domain string sakura.ne.jp

# アーカイブサーバを日本のミラーサーバに設定します
d-i mirror/country string JP
d-i mirror/http/hostname string jp.archive.ubuntu.com
d-i mirror/http/directory string /ubuntu/
d-i mirror/http/proxy string
d-i mirror/http/mirror select jp.archive.ubuntu.com

# タイムゾーンを東京に設定します
d-i time/zone string Asia/Tokyo

# インストール中の時刻補正を行うためのNTPサーバを指定します
# 参考: http://support.sakura.ad.jp/support/vps/tips_ossetup.shtml
d-i clock-setup/ntp-server string ntp1.sakura.ad.jp

# パーティショニングは次節を参照してください

# アカウントを設定します
d-i passwd/user-fullname string (フルネーム)
d-i passwd/username string (ログインID)
d-i passwd/user-password-crypted password "パスワードのMD5ハッシュ値"

# restricted/universeコンポーネントを有効化します(必須ではありません)
d-i apt-setup/restricted boolean true
d-i apt-setup/universe boolean true

# 標準でインストールするタスクとして基本システムに加えて,
# openssh-serverを選択します
tasksel tasksel/first multiselect standard, openssh-server

# 必要に応じて,標準でインストールしたいパッケージを選択します
# d-i pkgsel/include string byobu vim ntp

# アップデートポリシーを設定します
d-i pkgsel/update-policy select none

"パスワードのMD5ハッシュ値"はmkpasswdパッケージをインストールした上で,以下のコマンドを実行すれば得られます。

$ mkpasswd -m MD5 パスワード文字列

MD5ハッシュ値を使っているとは言え,パスワードに関する情報が記載されることになりますので,preseed.cfgファイルの取扱いには十分注意してください。

著者プロフィール

柴田充也(しばたみつや)

Ubuntu Japanese Team Member。数年前にLaunchpad上でStellariumの翻訳をしたことがきっかけで,Ubuntuの翻訳にも関わるようになりました。