カテゴリ:junoser

2015-07-21 Tue


junoser を使ってみる [junoser]


JANOG36のライトニングトークで、小島さんが発表されたものに

commit check offline
http://www.janog.gr.jp/meeting/janog36/program/lt-commit

というのがありました(今なら、ストリーミングアーカイブの閲覧可能 2015年7月21日現在)

ネットワーク設定の事前チェックというのは、なかなか難しく、実機投入時に初めてコマンドがないことに気づくとか、syntax が間違ってたとかあり得るので、なかなか泣かされます。

今回、小島さんが作られた junoser を使えば、JUNOS限定ですが、実機に依らず syntax check が可能となります。

junoser
https://github.com/codeout/junoser

インストール方法も、上記サイトに書いてあります。

ということで、さっそく手元のMacにインストール。

$ gem install junoser
Fetching: blankslate-3.1.3.gem (100%)
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.


ですよねー

$ sudo gem install junoser


で、さくっとインストール完了。と……いま会社に実機がなく試せないことに気づく orz

ないものは仕方ないので、ちょこっと適当に設定ファイルをでっち上げて食わせてみる。

junoser のマニュアルによれば

$ junoser -c config.txt


で、文法チェックが

$ junoser -d config.txt


で、set形式に変換されるそうです。試しに

protocols {
    bgp {
        group ebgp-peers {
            type external;
            neighbor 192.0.2.2;
   }
}


みたいな設定ファイルを読み込ませてみると(rancid で取り込むと、上記のような形式になります)

$ junoser -d test-config.txt
set protocols bgp group ebgp-peers type external
set protocols bgp group ebgp-peers neighbor 192.0.2.2


のように、"show configuration | display set" としたように、set形式でコンフィグが表示されます。

なお、読み込ませる設定ファイルは、今回サンプルで使ったように、一部分でも良いので使い勝手もヨサゲです。

junoser は、netconf の xsd をベースにされているとのことですが、文法チェック的に、全く漏れがないとは言い切れないと思うので、手元の設定ファイルがある人は、どんどん Issue にフィード・バックするといいかと思います。

https://github.com/codeout/junoser/issues

こういうのが出揃えば、github enterprise やら gitlab やらで pull request による事前レビューからの実機へのコミット、とか進んでいけるんですかねぇ……みんなそのあたりどうやってるんだろう?