VITOTHON で jail 環境を簡単に作成する
はじめに
この記事は、前回の記事[1] の続きになります。FreeBSD の ezjail
を使用して仮想マシンを立てています。前回の記事を参考に、手元の環境で同じように実行していただくか、公開しているアプライアンス[2]を使用して仮想環境を構築していただくと、今回の内容をすぐに実験できます。
また、VITOTHON[3] とは jail
を用いてネットワークやサーバ実験を行う仮想環境を構築する補助ツールとして作成したものです。
flavour から独自テンプレートの作成
前回は、何もない素の状態の jail
を作成しました。しかし、例えばルータ機能を持った jail
、Web サーバ機能を持った jail
など、用途に応じた jail
テンプレートを用意しておき、それを使って jail
を作成すると、必要なパッケージが既に揃った状態で構築することができます。この独自で作成するテンプレートのこと flavour と言います。
flavour の example を用いて独自の jail
の雛形(server と名付けました)を作成します。
cd /jails/flavours/
cp -r example server
作成した flavour を使用して jail
の作成を行います。jail
名は server01 としています。
cd /jails/bin/
bash mkserver.sh server01
ここで使用している mkserver.sh
は jail
の作成と jail
にパッケージの追加を行います。ソースコードは GitHub に置いてあります。mkserver.sh
は server という名前の flavour をテンプレートと認識しています。もし、他の名前で flavour を作成した場合は、ソースコードを変える必要があります。
今回はパッケージの追加を行いませんが、/jails/flavour/server/pkg/
にパッケージファイルを置いておくとその flavour を使用して作った jail
に自動でパッケージが追加されます。
VITOTHON 実行
作成した jail
を使用していよいよ VITOTHON を実行します。VITOTHON は前回の記事で実行している内容(epair
作ったり、アドレス割り振ったりなど)を代理で実行しています。前回と同じ構成を構築する場合の実行スクリプトが test.py
になります。
from vitothon import Operator
import subprocess
global jails
jails = "/jails"
op = Operator()
op.setupnode("server01")
epaira, epairb = op.createpair()
op.connect("server01", epaira)
op.assignip("server01", epaira, "192.168.100.1", "255.255.255.0")
op.assignip(None, epairb, "192.168.100.254", "255.255.255.0")
op.up("server01", epaira)
op.up(None, epairb)
op.assigngw("server01", "192.168.100.254")
Operator
のメソッド名でなんとなく何をやっているのかはわかると思います。
あとは、このファイルを実行すれば、ネットワーク設定などを完了した jail
が出来上がります。
python3 /jails/bin/test.py
Discussion