nwdiagで手軽にネットワーク図を作成
感動したのでメモ。環境はMac OS X SnowLeopard/homebrew。
インストール
$ brew install python $ /usr/local/share/python/pip install --upgrade distribute $ /usr/local/share/python/pip install pil $ /usr/local/share/python/pip install nwdiag $ /usr/local/share/python/pip install blockdiagcontrib-cisco $ /usr/local/share/python/pip install reportlab
いろいろ試行錯誤した結果なので何か抜けてるかも。blockdiagcontrib-ciscoはCiscoアイコンを使うためのパッケージ、reportlabはPDF形式で出力するためのパッケージ。
とりあえず書いてみる
http://blockdiag.com/nwdiag/build/html/examples.html#simple-diagramやhttp://blockdiag.com/blockdiag/build/html/examples.htmlを参考に。
diagram{ network network1 { address = "192.0.2.0/16"; node1 node2 [address="192.0.2.2"]; node3 [address="192.0.2.3"]; } network "network-2" { address = "10.0.0.0/8"; node3 [address="10.0.0.3"]; "node-4" [shape="cloud"]; "ルータ" [address="10.0.0.254", shape="cisco.router"]; } group some_group_1 { label="グループ1"; node1 node2 } }
次のようにして実行する。フォントはお好みで。
$ /usr/local/share/python/nwdiag --font=/Library/Fonts/Osaka.ttf --antialias fig1.diag
"--font"でフォントを指定。"--antialias"でアンチエイリアスのかかった画像を出力。出力ファイル名を省略すると、ファイル名.pngで出力されるようだ。この例だと、次のようなfig1.pngが得られる。
$ /usr/local/share/python/nwdiag --font=/Library/Fonts/Osaka.ttf --antialias -T pdf -o output.pdf fig1.diag
"-T pdf"でPDF出力。"-o filename"で出力ファイル名を指定。こうすると、output.pdfが得られる。
…ところで、PDFだとCiscoアイコンがひっくり返ってしまうのはなんでだろう…?
Ciscoアイコンの一覧はblockdiagcontrib-cisco — blockdiagcontrib.cisco quick reference v documentationを参照。