🎨
NW図 as Code(7) nwdiagを試す
はじめに
論理ネットワーク構成図をコードで書きます。
テキスト形式から物理ネットワーク図を作るのはいろんなツールでやってみたのですが、論理ネットワーク図はこれが最初です。
PlantUMLでnwdiagが使えるので、その機能で描いています。
結果
描いた図がこちらです。
元になるコードはこちら。オンラインエディタ
@startuml
<style>
nwdiagDiagram {
network {
BackGroundColor Orange
}
server {
BackGroundColor LemonChiffon
LineColor black
FontStyle bold
Shadowing 1
}
arrow {
FontSize 12
FontColor Red
FontStyle bold
LineColor Chocolate
}
}
</style>
nwdiag {
network lan0{
address = "10.0.0.0/24";
router0 [address = "10.0.0.10"];
router1 [address = "10.0.0.11"];
}
network lan1{
address = "10.0.10.0/24";
router0 [address = "10.0.10.2"];
router1 [address = "10.0.10.3"];
firewall0 [address = "10.0.10.252"];
firewall1 [address = "10.0.10.253"];
}
network lan2{
address = "10.0.11.0/24";
firewall0 [address = "10.0.11.2"];
firewall1 [address = "10.0.11.3"];
l3sw0 [address = "10.0.11.252"];
l3sw1 [address = "10.0.11.253"];
}
network lan3{
address = "10.0.12.0/24";
lb0 [address = "10.0.12.252"];
lb1 [address = "10.0.12.253"];
l3sw0 [address = "10.0.12.2"];
l3sw1 [address = "10.0.12.3"];
}
network lan4{
address = "10.0.13.0/24";
l3sw0 [address = "10.0.13.2"];
l3sw1 [address = "10.0.13.3"];
host1 [address = "10.0.13.128"];
host2 [address = "10.0.13.129"];
}
}
@enduml
ノード、ネットワークセグメントの書き方
構文はいたってシンプルです。
network ネットワーク名 { ~ }でひとつのネットワークセグメント(L2ネットワーク)を表現します。
~の部分にノード名とIPアドレスを記載します。
@startuml
nwdiag {
network lan0{
address = "10.0.0.0/24";
router0 [address = "10.0.0.10"];
router1 [address = "10.0.0.11"];
}
}
@enduml
複数セグメントに接続
ネットワーク機器は複数のネットワークセグメントに足を出していることが多いですよね。
二つ目のネットワークlan1を追加しました。
router0とrouter1はlan0とlan1の両方に接続されている状態です。
@startuml
nwdiag {
network lan0{
address = "10.0.0.0/24";
router0 [address = "10.0.0.10"];
router1 [address = "10.0.0.11"];
}
network lan1{
address = "10.0.10.0/24";
router0 [address = "10.0.10.2"];
router1 [address = "10.0.10.3"];
firewall0 [address = "10.0.10.252"];
firewall1 [address = "10.0.10.253"];
}
}
@enduml
うまいことネットワーク機器から複数セグメントに接続している図が描けました。
スタイル
スタイル(色、太さ等)の書き方はこんな感じです。
<style>
nwdiagDiagram {
network {
BackGroundColor Orange
}
server {
BackGroundColor LemonChiffon
LineColor black
FontStyle bold
Shadowing 1
}
arrow {
FontSize 12
FontColor Red
FontStyle bold
LineColor Chocolate
}
}
</style>
セグメントとノードを追加していくと簡単に図が描けます。
まとめ
論理ネットワーク図を描くツールというのがあまり見つかりませんでした。
簡単な図なら本記事のように書けるのですが、ホスト数が多くなるとどんどん図が横に長くなるという点がつらいなと思います。
Discussion