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 による事前レビューからの実機へのコミット、とか進んでいけるんですかねぇ……みんなそのあたりどうやってるんだろう?
boot2docker インストール直後は、いろいろ環境変数がセットされたターミナルが開いているので不便はないわけですが、後日また触りたくなったら、それでは困ります。Docker Client が、Docker daemon に接続するためには、boot2docker-vm の起動以外にも、いろいろ設定しておく必要があります。まぁそれも boot2docker コマンドが手助けしてくれます。まずは、boot2docker start で起動です。
asteroid:~ kunitake$ boot2docker start
Waiting for VM and Docker daemon to start...
................ooooooooo
Started.
Writing /Users/kunitake/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/kunitake/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/kunitake/.boot2docker/certs/boot2docker-vm/key.pem
To connect the Docker client to the Docker daemon, please set:
export DOCKER_CERT_PATH=/Users/kunitake/.boot2docker/certs/boot2docker-vm
export DOCKER_TLS_VERIFY=1
export DOCKER_HOST=tcp://192.168.59.103:2376
Or run: `eval "$(boot2docker shellinit)"`
ここで表示されるように、環境変数(DOCKER_CERT_PATH/DOCKER_TLS_VERIFY/DOCKER_HOST)をセットするか、boot2docker shellinit を呼び出すことで、docker を動作するための環境変数がセットされます。
asteroid:~ kunitake$ eval "$(boot2docker shellinit)"
Writing /Users/kunitake/.boot2docker/certs/boot2docker-vm/ca.pem
Writing /Users/kunitake/.boot2docker/certs/boot2docker-vm/cert.pem
Writing /Users/kunitake/.boot2docker/certs/boot2docker-vm/key.pem
asteroid:~ kunitake$ docker run busybox echo hello world
hello world
これで Mac で遊ぶ分には不便がなさそうですが、より汎用性の高い docker-machine も気になるところです。
docker-machine を使って boot2docker から脱却する
http://qiita.com/voluntas/items/7bcc9402b51a2ba99096
docker-machineを利用してVirtualBoxとSoftLayer上に簡単にDockerサーバを構築する
http://niccloud.niandc.ne.jp/?p=1195
上記の記事を見るとわかるように、boot2docker では、ローカルの仮想環境をベースに docker環境が整備されていましたが、docker-machine では、ローカルだけでなく、クラウド上のVMを簡単に操作することが可能になります。
今のところ、driver で指定できるクラウドは
IPv4/IPv6 meter |
思ったより安い……時もある、Amazon |