103
Vitochaを用いた Jail+VIMAGE Webインターフェイス @shutingrz しゅーと

Vitochaを用いた Jail+VIMAGE Webインターフェイス

Embed Size (px)

DESCRIPTION

中間発表で研究内容を公開してしまったのでこちらにもスライドを公開します。 中間発表ではスライドを15枚に収めましたが完全版は103枚あります。

Citation preview

Page 1: Vitochaを用いた Jail+VIMAGE Webインターフェイス

Vitochaを用いた Jail+VIMAGE Webインターフェイス

@shutingrz しゅーと

Page 2: Vitochaを用いた Jail+VIMAGE Webインターフェイス

目次• 目的

• 結果

• 前提知識

• 研究紹介

• 開発言語・仕様

• 処理概要

• 画面・機能

• 課題点

Page 3: Vitochaを用いた Jail+VIMAGE Webインターフェイス

目的• 2014年現在までにFreeBSD Jail+Vimageをグラフィカルなネットワーク図でリアルタイム表示しながら操作できるソフトウェアが無い

• FreeNASの機能ではネットワークエミュレータとして不十分(ネットワーク図が無いため)

• Vitochaで作られたプロダクトが無い

Page 4: Vitochaを用いた Jail+VIMAGE Webインターフェイス

結果

• 本研究で、ブラウザからワンクリックで簡単高速に仮想マシンを作成、操作可能なクライアントソフトウェアを作成することができた

Page 5: Vitochaを用いた Jail+VIMAGE Webインターフェイス

前提知識

Page 6: Vitochaを用いた Jail+VIMAGE Webインターフェイス

仮想化• OSレベルでの仮想化ホストコンピュータのOSに依存する

• ユーザ機能タイムシェアリングシステムを用いた仮想化

• chrootリソースを隔離chroot内のプロセスはそこから出られない

• 仮想マシン型主にホストコンピュータのOSに依存しない

• OSをエミュレートする等

Page 7: Vitochaを用いた Jail+VIMAGE Webインターフェイス

chrootを発展させた仮想化

• コンテナ型CPU、メモリ等のデバイスは全てのコンテナで共有プロセス、ネットワーク、ファイルシステム等分離

• LinuxLXC(Docker), OpenVZ, Virtuozzo

• FreeBSDFreeBSD Jail

Page 8: Vitochaを用いた Jail+VIMAGE Webインターフェイス

FreeBSD Jail(qjail)• プロセス分離 ホストからは全てのJailのプロセスが見える

• リソース分離chroot

• qjail3.6 Jailを簡単に扱うためのフレームワーク nullfsを用いてjail外のファイルへアクセス BASEファイルの共有をしディスクリソース節約

Page 9: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク仮想化

• Linuxveth

• FreeBSD

• VIMAGE

• Vitocha鈴木常彦教授が開発したVIMAGEライブラリ

Page 10: Vitochaを用いた Jail+VIMAGE Webインターフェイス

VIMAGE

• ネットワークスタック仮想化システム

• epairという仮想ケーブルを用いてJail同士を接続

• 片方はepair[X]a,もう片方はepair[X]b X = 0,1,2…

Page 11: Vitochaを用いた Jail+VIMAGE Webインターフェイス

• FreeBSD VIMAGEフレームワーク

• sh,ifconfig,bridge,vnet,epairのサポートepairはOSのバグがあるが、Vitochaはそれを回避

Vitocha

Page 12: Vitochaを用いた Jail+VIMAGE Webインターフェイス

本研究の紹介

•開発言語・仕様

•処理概要

•画面・機能

Page 13: Vitochaを用いた Jail+VIMAGE Webインターフェイス

開発言語・仕様

• 通信方法WebSocket + JSON

• サーバサイドruby + Jail(qjail) + VIMAGE(Vitocha) + SQLite3 + webshell

• クライアントサイドJavaScript + JQuery2.1 + Bootstrap3 + D3.js

Page 14: Vitochaを用いた Jail+VIMAGE Webインターフェイス

WebSocket

Page 15: Vitochaを用いた Jail+VIMAGE Webインターフェイス

従来のHTTP通信

ブラウザ

①HTTPリクエスト

②HTTPレスポンスサーバ

ブラウザ①プッシュ

サーバ

Page 16: Vitochaを用いた Jail+VIMAGE Webインターフェイス

WebSocket

ブラウザ ①リクエスト サーバ

ブラウザ①プッシュ

サーバ

Page 17: Vitochaを用いた Jail+VIMAGE Webインターフェイス

JSON例1{"name": "John Smith", "age": 33}

“name”,”age” =>キー“John Smith”,33 =>データ

例2{“user": {“name”: ”John Smith”, “age”: 33}}

“user” =>キー{“name”: ”John Smith”, “age”: 33} =>データ

Page 18: Vitochaを用いた Jail+VIMAGE Webインターフェイス

WebShell

①Marc S. Ressl氏の作成したWebShell + ②FreeNASチームの作成したWebShell

①をベースに②のJIDによる並列処理機能をマージ

Page 19: Vitochaを用いた Jail+VIMAGE Webインターフェイス

JQuery

• 軽量なJavascriptライブラリ

• 煩雑な各機能を簡単に触れるようにセレクタ操作、イベント、DOM、CSS操作、etc…

Page 20: Vitochaを用いた Jail+VIMAGE Webインターフェイス

Bootstrap

• 広範囲に渡る機能を備えたデザインテンプレート集

• 本研究にはModal,Tabs,Buttonに使用

Page 21: Vitochaを用いた Jail+VIMAGE Webインターフェイス

D3.js

• Javascriptで動く様々なデータの可視化ライブラリ

• データセットにより様々なレイアウトを使用可能本研究ではForce Layoutを使用

Page 22: Vitochaを用いた Jail+VIMAGE Webインターフェイス

仕様

Page 23: Vitochaを用いた Jail+VIMAGE Webインターフェイス

仕様

• マシン機能qjailを用いてJailを作成する

• パッケージ機能パッケージシステム”pkg”を使用ダウンロード、インストールを行う

• テンプレート機能ダウンロードしたパッケージをひとまとめにする

Page 24: Vitochaを用いた Jail+VIMAGE Webインターフェイス

仕様

• Jailからは直接ホストコンピュータの外にブリッジでパケットを送るようにしない

• 管理用JailとしてmasterRouterを配置し、 ホストコンピュータとmasterRouterの間で NATを行う

• masterRouterはブラウザからは削除出来ない

Page 25: Vitochaを用いた Jail+VIMAGE Webインターフェイス

仕様

• 通常のマシン作成に加えて簡易作成を実装Server,Switch,Routerの3パターン

• 設定は全てデフォルト

Page 26: Vitochaを用いた Jail+VIMAGE Webインターフェイス

本研究の紹介

•開発言語・仕様

•処理概要

•画面・機能

Page 27: Vitochaを用いた Jail+VIMAGE Webインターフェイス

サーバサイド

Page 28: Vitochaを用いた Jail+VIMAGE Webインターフェイス

処理図 (サーバ)

Page 29: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb machine.rb pkg.rb

jail.rb

template.rbsendmsg.rb

console.rb

sql.rb

MACHINE

webshell.py

network.rb Vitocha

クライアント

SQLite

クライアント

WebSocket

WebSocket

qjail(8)

pkg(8)

Page 30: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb machine.rb pkg.rb

jail.rb

template.rbsendmsg.rb

console.rb

sql.rb

MACHINE

webshell.py

network.rb Vitocha

クライアント

SQLite

クライアント

WebSocket

WebSocket

qjail(8)

pkg(8)

Page 31: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb・WebScoket通信を待ち受ける

{msgType:x, msg:y} x … 1 CONSOLE (=>console.rb) 2 STATUS (予約) 3 MACHINE (=>machine.rb) 4 NETWORK (=>network.rb) 10 ETC (予約)msgデータ部を各機能部に転送xを定義することで簡単に拡張可能

Page 32: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb machine.rb pkg.rb

jail.rb

template.rbsendmsg.rb

console.rb

sql.rb

MACHINE

webshell.py

network.rb Vitocha

クライアント

SQLite

クライアント

WebSocket

WebSocket

qjail(8)

pkg(8)

Page 33: Vitochaを用いた Jail+VIMAGE Webインターフェイス

machine.rb• マシン関係のスクリプトのクッション用

data = {mode:x, *****} x … “jail” =>jail.rb “pkg” =>pkg.rb “template” =>template.rbmode含むdataを各機能部に転送xを定義することで簡単に拡張可能

Page 34: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb machine.rb pkg.rb

jail.rb

template.rbsendmsg.rb

console.rb

sql.rb

MACHINE

webshell.py

network.rb Vitocha

クライアント

SQLite

クライアント

WebSocket

WebSocket

qjail(8)

pkg(8)

Page 35: Vitochaを用いた Jail+VIMAGE Webインターフェイス

jail.rb• qjailを使ってjailの操作をする

• create,delete,start,stop

• Jail作成時、テンプレートを選択した場合は pkg.rbを呼び出す

• 作成日時を記録

Page 36: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb machine.rb pkg.rb

jail.rb

template.rbsendmsg.rb

console.rb

sql.rb

MACHINE

webshell.py

network.rb Vitocha

クライアント

SQLite

クライアント

WebSocket

WebSocket

qjail(8)

pkg(8)

Page 37: Vitochaを用いた Jail+VIMAGE Webインターフェイス

pkg.rb

• pkg(8)を用いてpkgの操作を行う

fetch…インターネットからpkgをダウンロードadd …ダウンロードしたpkgをインストール

Page 38: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb machine.rb pkg.rb

jail.rb

template.rbsendmsg.rb

console.rb

sql.rb

MACHINE

webshell.py

network.rb Vitocha

クライアント

SQLite

クライアント

WebSocket

WebSocket

qjail(8)

pkg(8)

Page 39: Vitochaを用いた Jail+VIMAGE Webインターフェイス

template.rb

• 指定された、ダウンロード済のパッケージをひとまとめにする

• クライアントでマシンを作成する際はテンプレートからインストールするパッケージを選択する

Page 40: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb machine.rb pkg.rb

jail.rb

template.rbsendmsg.rb

console.rb

sql.rb

MACHINE

webshell.py

network.rb Vitocha

クライアント

SQLite

クライアント

WebSocket

WebSocket

qjail(8)

pkg(8)

Page 41: Vitochaを用いた Jail+VIMAGE Webインターフェイス

sql.rb

• Jail、パッケージ、テンプレート情報を格納上記操作時は大抵sql.rbを呼び出し保存する

• 初回起動(=データベースが存在しない)を感知して初期設定を行う

Page 42: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb machine.rb pkg.rb

jail.rb

template.rbsendmsg.rb

console.rb

sql.rb

MACHINE

webshell.py

network.rb Vitocha

クライアント

SQLite

クライアント

WebSocket

WebSocket

qjail(8)

pkg(8)

Page 43: Vitochaを用いた Jail+VIMAGE Webインターフェイス

network.rb

• Vitochaを操作してネットワーク構成を変更静的操作のみ対応のVitochaを動的に操作する

Page 44: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb machine.rb pkg.rb

jail.rb

template.rbsendmsg.rb

console.rb

sql.rb

MACHINE

webshell.py

network.rb Vitocha

クライアント

SQLite

クライアント

WebSocket

WebSocket

qjail(8)

pkg(8)

Page 45: Vitochaを用いた Jail+VIMAGE Webインターフェイス

console.rb

• webshell.pyに接続しキーコードを送信

• 現在ブラウザで開いているJail情報を記憶register/unregister

Page 46: Vitochaを用いた Jail+VIMAGE Webインターフェイス

gvitocha.rb machine.rb pkg.rb

jail.rb

template.rbsendmsg.rb

console.rb

sql.rb

MACHINE

webshell.py

network.rb Vitocha

クライアント

SQLite

クライアント

WebSocket

WebSocket

qjail(8)

pkg(8)

Page 47: Vitochaを用いた Jail+VIMAGE Webインターフェイス

sendmsg.rb• 各機能から呼び出され、JSONデータを作成する {msgType:x, msg:y} x … 1 CONSOLE (<=console.rb) 2 STATUS (予約) 3 MACHINE (<=machine.rb) 4 NETWORK (<=network.rb)y … 自由 新機能を拡張した場合はこちらも対応する必要あり ・割り込みであれば既存のままで可能(MACHINE等)

Page 48: Vitochaを用いた Jail+VIMAGE Webインターフェイス

クライアントサイド

Page 49: Vitochaを用いた Jail+VIMAGE Webインターフェイス

処理図 (クライアント/送信時)

Page 50: Vitochaを用いた Jail+VIMAGE Webインターフェイス

app.js pkg.js

jail.js

template.js app.js

console.js

MACHINE

webshell.js

diag.js

サーバユーザ

WebSocket

Page 51: Vitochaを用いた Jail+VIMAGE Webインターフェイス

処理図 (クライアント/受信時)

Page 52: Vitochaを用いた Jail+VIMAGE Webインターフェイス

app.js pkg.js

jail.js

template.js 画面

console.js

db.js

MACHINE

diagram.js

サーバ

d3.js

diag.jswebshell.js

Page 53: Vitochaを用いた Jail+VIMAGE Webインターフェイス

本研究の紹介

•開発言語・仕様

•画面・機能

Page 54: Vitochaを用いた Jail+VIMAGE Webインターフェイス

実演

Page 55: Vitochaを用いた Jail+VIMAGE Webインターフェイス

マシンタブ

Page 56: Vitochaを用いた Jail+VIMAGE Webインターフェイス

全Jailの一覧、情報

マシンタブ

Page 57: Vitochaを用いた Jail+VIMAGE Webインターフェイス

マシンタブ

新規マシン

Page 58: Vitochaを用いた Jail+VIMAGE Webインターフェイス

マシンタブ

新規パッケージ

Page 59: Vitochaを用いた Jail+VIMAGE Webインターフェイス

マシンタブ

新規テンプレート

Page 60: Vitochaを用いた Jail+VIMAGE Webインターフェイス

マシンタブ

全マシンの削除

Page 61: Vitochaを用いた Jail+VIMAGE Webインターフェイス

新しいマシンを作成

Page 62: Vitochaを用いた Jail+VIMAGE Webインターフェイス

新しいマシンを作成

Jailの名前 英数字とアンダースコア

Page 63: Vitochaを用いた Jail+VIMAGE Webインターフェイス

新しいマシンを作成

マシンタイプ Server Router Switch から選択

Page 64: Vitochaを用いた Jail+VIMAGE Webインターフェイス

新しいマシンを作成

テンプレート 別途作成したテンプレートから選択

Page 65: Vitochaを用いた Jail+VIMAGE Webインターフェイス

新しいマシンを作成

パッケージ 選択したテンプレートに応じた パッケージが表示される

Page 66: Vitochaを用いた Jail+VIMAGE Webインターフェイス

新しいマシンを作成

フレーバー 未実装

default固定

Page 67: Vitochaを用いた Jail+VIMAGE Webインターフェイス

新しいマシンを作成

コメント

Page 68: Vitochaを用いた Jail+VIMAGE Webインターフェイス

パッケージの追加

Page 69: Vitochaを用いた Jail+VIMAGE Webインターフェイス

パッケージの追加

インストール済の パッケージ一覧

Page 70: Vitochaを用いた Jail+VIMAGE Webインターフェイス

パッケージの追加

パッケージ検索画面

Page 71: Vitochaを用いた Jail+VIMAGE Webインターフェイス

パッケージの追加

パッケージ検索結果 追加したいパッケージを選択

Page 72: Vitochaを用いた Jail+VIMAGE Webインターフェイス

テンプレートの作成

Page 73: Vitochaを用いた Jail+VIMAGE Webインターフェイス

テンプレートの作成

テンプレート名

Page 74: Vitochaを用いた Jail+VIMAGE Webインターフェイス

テンプレートの作成

インストール済の パッケージ一覧 追加したいパッケージに チェックをつける

Page 75: Vitochaを用いた Jail+VIMAGE Webインターフェイス

処理進捗画面

Page 76: Vitochaを用いた Jail+VIMAGE Webインターフェイス

処理進捗画面

処理をしている操作 末尾に処理の進捗表示

Page 77: Vitochaを用いた Jail+VIMAGE Webインターフェイス

処理進捗画面

行う処理

Page 78: Vitochaを用いた Jail+VIMAGE Webインターフェイス

処理進捗画面

処理の詳細ログ

Page 79: Vitochaを用いた Jail+VIMAGE Webインターフェイス

全マシンの削除

Page 80: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワークタブ

Page 81: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワークタブ

簡易作成 _Server* _Router* _Switch*

Page 82: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワークタブ

表示設定

Page 83: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワークタブ

表示設定

Page 84: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワークタブ

ネットワーク図

Page 85: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク図 凡例  : Router  : Server  : Switch

Page 86: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク図 凡例  : Router  : Server  : Switch

接続されているepair

Page 87: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク図 凡例  : Router  : Server  : Switch

停止中のJail (半透明)

Page 88: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク図 凡例  : Router  : Server  : Switch

Page 89: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク図 凡例  : Router  : Server  : Switch

他のマシンに接続

Page 90: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク図 凡例  : Router  : Server  : Switch

接続可能なJailの周りに点線円の表示 停止状態等、接続不可のJailは超半透明に

Page 91: Vitochaを用いた Jail+VIMAGE Webインターフェイス

詳細情報

Page 92: Vitochaを用いた Jail+VIMAGE Webインターフェイス

詳細情報

マシン情報

Page 93: Vitochaを用いた Jail+VIMAGE Webインターフェイス

詳細情報

ネットワーク

Page 94: Vitochaを用いた Jail+VIMAGE Webインターフェイス

詳細情報

コンソール

Page 95: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク

Page 96: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク

epair一覧

Page 97: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク

接続先

Page 98: Vitochaを用いた Jail+VIMAGE Webインターフェイス

ネットワーク

ネットワーク情報 設定したい欄の 情報を入力

Page 99: Vitochaを用いた Jail+VIMAGE Webインターフェイス

コンソール

Page 100: Vitochaを用いた Jail+VIMAGE Webインターフェイス

課題点

Page 101: Vitochaを用いた Jail+VIMAGE Webインターフェイス

課題点

• Jail作成DSL、ネットワーク作成DSL

• 一度に数百台のJailを作成、ネットワークの構築

• フレーバー、アーカイブ

• 任意のJailを選択し、複製ができるように

Page 102: Vitochaを用いた Jail+VIMAGE Webインターフェイス

課題点• LinuxのJailを作成FreeBSDのLinux Emulator機能を使用

• 帯域制御DUMMYNETをブラウザから設定できるように

• VLAN機能

• OpenvSwitch機能

Page 103: Vitochaを用いた Jail+VIMAGE Webインターフェイス

質疑応答