FreeBSDのサーバ仮想化技術「ezjail」で構築したjail環境の設定

 ezjailportsからインストールした後、始めにFreeBSDを仮想化したjail環境のベースとなる部分を構築した。そして次に、利用するひとつのjail名を指定しその環境も構築した。 これから利用するひとつのjail環境を整えていく。(jail環境の構築で動作確認が取れていることが前提である)

 -FreeBSDでサーバの仮想化技術「jail」を使った複数ドメインでの運用- からのつずきとなる。


インストール環境:
 FreeBSD6 + ezjail-2.0.1

jail環境の設定

 - host環境からjail環境へ入る -

# jexec 1 /bin/tcsh

1 : jail_JAILNAME.id
/bin/tcsh :シェルがshでいい人は/bin/sh

 - rootパスワードの設定 -

# passwd root

上のコマンドで最低限rootパスワードの設定を行っておく。またユーザアカウントも追加しておきたいところである。

 - ここで一旦host環境へ抜け引きつずき設定を行う -

# exit

cron の設定

/usr/jails/JAILNAME/etc/crontab から下の一行を削除する
JAILNAME : 今回作成したjail名

1,31 0-5 * * * root adjkerntz -a 

/etc/fstab の設定

空のfstabを作成

# touch /usr/jails/JAILNAME/etc/fstab 

/etc/resolv.confをjail環境にコピーして名前解決ができるようにする

# cp /etc/resolv.conf /usr/jails/JAILNAME/etc/

ローカルタイムの設定

# cd /usr/jails/JAILNAME/etc
# touch wall_cmos_clock
# ln -sf ../usr/share/zoneinfo/Asia/Tokyo localtime

/usr/jails/JAILNAME/etc/rc.confの設定

defaultrouter="192.168.xxx.xxx"
hostname="domain example.com"
network_interfaces=""
inetd_enable="YES"
inetd_flags="-wW -C 60 -a 192.168.xxx.xxx"
rpcbind_enable="NO"
sendmail_enable="NONE"
sendmail_submit_enable="NONE"
sendmail_outbound_enable="NONE"
sendmail_msp_queue_enable="NONE"
sshd_enable="YES"
sshd_flags="-4"
syslogd_flags="-ss"
tcp_keepalive="NO"
tcp_extensions="NO"
cron_flags="-J 15"

192.168.xxx.xxx : host環境のIPアドレス
domain example.com : jail環境のドメイン名
192.168.xxx.xxx : jail環境のIPアドレス

sshd の設定

/usr/jails/JAILNAME/etc/ssh/sshd_config に一行加える
ListenAddress 192.168.xxx.xxx

192.168.xxx.xxx : jail環境のIPアドレス


ここまででezjailを使用したサーバの仮想化が完了したこととなる。

 この状態ではまだportsツリーを導入していないので、 pkg_addによるインストールかソースファイルを拾ってきて個々にインストールするしかない。ソフトの管理面を考えてもportsは利用したいので導入する事とするが、このまま導入したのでは個々のjailごとにportsツリーを構成しなければならない。
その場合、最大の問題点はHDD容量を圧迫することとjail環境のportsツリーを更新する手間が増えることだ!!これはCOOLではない。

下記はezjailで構成し出来上がったjail環境のフォルダ構成である。

# ls -all /usr/jails/JAILNAME
total 27
drwxr-xr-x 11 root wheel 512 1 2 00:52 .
drwxr-xr-x 6 root wheel 512 1 2 00:52 ..
-r--r--r-- 1 root wheel 6188 1 2 00:52 COPYRIGHT
drwxr-xr-x 9 root wheel 512 1 1 22:22 basejail
lrwxrwxrwx 1 root wheel 13 1 2 00:52 bin -> /basejail/bin
lrwxrwxrwx 1 root wheel 14 1 2 00:52 boot -> /basejail/boot
dr-xr-xr-x 4 root wheel 512 1 3 15:27 dev
drwxr-xr-x 18 root wheel 2048 1 3 15:44 etc
lrwxrwxrwx 1 root wheel 13 1 2 00:52 lib -> /basejail/lib
lrwxrwxrwx 1 root wheel 17 1 2 00:52 libexec -> /basejail/libexec
drwxr-xr-x 2 root wheel 512 1 2 00:52 mnt
dr-xr-xr-x 1 root wheel 0 1 5 02:31 proc
lrwxrwxrwx 1 root wheel 16 1 2 00:52 rescue -> /basejail/rescue
drwxr-xr-x 2 root wheel 512 1 2 23:43 root
lrwxrwxrwx 1 root wheel 14 1 2 00:52 sbin -> /basejail/sbin
lrwxrwxrwx 1 root wheel 11 1 2 00:52 sys -> usr/src/sys
drwxrwxrwt 6 root wheel 512 1 4 03:01 tmp
drwxr-xr-x 4 root wheel 512 1 3 00:09 usr
drwxrwxrwx 22 root wheel 512 1 3 15:28 var

# ls -all /usr/jails/JAILNAME/usr
total 8
drwxr-xr-x 4 root wheel 512 1 3 00:09 .
drwxr-xr-x 11 root wheel 512 1 2 00:52 ..
lrwxrwxrwx 1 root wheel 17 1 2 00:52 bin -> /basejail/usr/bin
lrwxrwxrwx 1 root wheel 19 1 2 00:52 games -> /basejail/usr/games
lrwxrwxrwx 1 root wheel 21 1 2 00:52 include -> /basejail/usr/include
lrwxrwxrwx 1 root wheel 17 1 2 00:52 lib -> /basejail/usr/lib
lrwxrwxrwx 1 root wheel 21 1 2 00:52 libdata -> /basejail/usr/libdata
lrwxrwxrwx 1 root wheel 21 1 2 00:52 libexec -> /basejail/usr/libexec
drwxr-xr-x 2 root wheel 512 1 2 00:52 local
drwxr-xr-x 2 root wheel 512 1 2 00:52 obj
lrwxrwxrwx 1 root wheel 19 1 2 00:52 ports -> /basejail/usr/ports
lrwxrwxrwx 1 root wheel 18 1 2 00:52 sbin -> /basejail/usr/sbin
lrwxrwxrwx 1 root wheel 19 1 2 00:52 share -> /basejail/usr/share
lrwxrwxrwx 1 root wheel 17 1 2 00:52 src -> /basejail/usr/src

portsツリーは /basejail/usr/ports に導入すればよいことがわかる。

これ以降はひきつずき
 - FreeBSDの仮想化環境(ezjail)でのportsツリーのマウント共有利用 -で、mount_null(8)を使用してjail環境にhost環境のportsツリーをマウントし共有するやり方を検証してみたいと思う。



参考:


資料請求はこちら