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 による事前レビューからの実機へのコミット、とか進んでいけるんですかねぇ……みんなそのあたりどうやってるんだろう?