以下、「ホスト」とはjailを動かすおおもとのマシンを表す。親。
「Jailホスト」はjail環境で動くホストを表す。子。
ezjailにはflavoursという仕組みがある。
ezjailのflavoursとは。
以下より意訳。
http://erdgeist.org/arts/software/ezjail/#Flavours
新しいJailは、真っ新(まっさら)のFreeBSDとして作られる。ezjailは、Jailホストの面倒な設定作業を簡素化する仕組みがある。これがflavoursである。
flavoursでは、予め設定された内容に従って、ファイルをコピーしたり、パッケージをインストールしたり、スクリプトを実行できる。
たとえば、rc.conf, make.conf, periodic.confやsudoersなどである。
“flavour"ではない基本の味付け
flavourとは言ってみれば「風味」のこと。
新しいjailを作る時の「風味づけ」に使われるものだから、逆に言うと基本の味付けには不適切である。
具体的に言うと、新しいjailを作る際に必ず設定したいものは、flavoursではなく、基本設定に含めるべき、ということになる。
では基本設定はどこでするのか、というと、まずezjailの仕組みを確認してから。
ezjailの仕組み
/usr/jails/basejailというディレクトリがある。
これはFreeBSD環境のコピーで、ホスト上で作られたJailが使う。
共有して使うので、読み取り専用でマウントしている。
これとは別に/usr/jails/newjailというディレクトリがある。
こちらは、新しいjailを作るときのテンプレートである。
ということは、セキュリティパッチの適用やOSアップグレードはbasejailに対して行い、新しいjailホストを作る時の基本設定はnewjailに対して行えばよい。
基本の味付けに必要なものは?
パターンは二つある。
何らかのファイルを追加する場合と、ファイルを書き換える場合。
追加するファイルには、/etc/resolv.conf、/etc/localtime、/etc/wall_cmos_clockは必須。
ただし、ホストの時刻がUTCなら/etc/wall_cmos_clock不要。
resolv.confは名前解決(リゾルバ)のためのファイル、localtime, wall_cmos_clockはタイムゾーン関連ファイル。
そのほか、/etc/hosts, /etc/nsswitch.confも必要であれば。
ファイル書き換えの場合には、例えばportsnap.confを国内のportsnapサーバに向けておきたいとか、rootの.cshrcに手を入れておきたいとか、そういったもの。
ユーザの追加や、pkgの追加はbasejailにはできない(と思う)。
こういうのはflavoursで。
基本味付け
前章で挙げたファイルは、端からnewjailに放り込んでいけばよい。
ID, group, パーミッションを保持するために-pオプションはつけましょう。
$ sudo cp -p /etc/resolv.conf /etc/localtime /etc/wall_cmos_clock /usr/jails/newjail/etc/
$
書き換え系は、newjail/etcの下のファイルをご自由に
例えば、/usr/jails/newjail/etc/portsnap.confのSERVERNAMEを以下のように。
SERVERNAME=portsnap.allbsd.org
試してみよう
example01というjailを作ってみる。
$ sudo ezjail-admin create example01 'em0|192.168.200.1'
$ sudo ezjail-admin start example01
Configuring jails:.
Starting jails: example01.
$
$ sudo ezjail-admin console example01
コンソールログインして試してみると、日付もJSTになっているし、resolv.confも正しく設定されている。
root@example01:~ # date
Tue Oct 1 12:52:38 JST 2013
root@example01:~ # cat /etc/resolv.conf
# Generated by resolvconf
search localdomain
nameserver 192.168.154.2
root@example01:/ # grep SERVER /etc/portsnap.conf
SERVERNAME=portsnap.allbsd.org
root@example01:/ #
flavoursの使い方はまた今度。