🐡

VITOTHON で jail 環境を簡単に作成する

2023/06/29に公開

はじめに

この記事は、前回の記事[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.shjail の作成と jail にパッケージの追加を行います。ソースコードは GitHub に置いてあります。mkserver.sh は server という名前の flavour をテンプレートと認識しています。もし、他の名前で flavour を作成した場合は、ソースコードを変える必要があります。

今回はパッケージの追加を行いませんが、/jails/flavour/server/pkg/ にパッケージファイルを置いておくとその flavour を使用して作った jail に自動でパッケージが追加されます。

VITOTHON 実行

作成した jail を使用していよいよ VITOTHON を実行します。VITOTHON は前回の記事で実行している内容(epair 作ったり、アドレス割り振ったりなど)を代理で実行しています。前回と同じ構成を構築する場合の実行スクリプトが test.py になります。

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

参考文献

脚注
  1. https://zenn.dev/fikastudio/articles/621852c10af803 ↩︎

  2. http://www.fikastudio.net/VITOTHON.ova ↩︎

  3. https://github.com/FikaStudio-code/VITOTHON ↩︎

Discussion