1. はじめに
皆さんは、ネットワーク構成図を管理するアプリケーションに何を使っていますか?
ネットワーク運用において、構成図は欠かせない情報の一つです。
しかし、構成変更のたびに手作業で更新する運用では、継続的なメンテナンスが負担になりやすいと感じています。特に、構成変更の頻度が高い環境では、構成図をいかに実態に近い状態で維持するかが課題になります。
そこで、Ciscoのオープンソースプロジェクトである Network Sketcher を試してみようと考えました。
Network Sketcherは、PowerPointのラフスケッチからネットワーク構成図やデバイス情報のファイルを作成できるツールです。また、一度構成図を作成すれば、その後はデバイスファイルを編集することで構成図を再作成できるため、継続的なメンテナンスもしやすくなります。
さらに、PowerPointとExcelをベースに利用できるため、専用の作図アプリケーションを別途用意せずに試せる点も魅力です。
ただし、現在のネットワークをもとにPowerPointのラフスケッチを一から作成するのも、それなりに手間がかかります。
そこで、実機のコンフィグからNetwork Sketcher用のデータを作成できないか調べていたところ、CiscoDevNetの Network Sketcher Cisco Extension の中に、Cisco機器のrunning-configをNetwork Sketcher用のコマンドへ変換する config_converter があることを見つけました。
Network Sketcherについては、PowerPointのラフスケッチから構成図を作る記事は見つかりましたが、config_converterを使った記事は見つけることができませんでした。
「記事がないなら自分で作ろう」ということで、実際にNetwork Sketcherとconfig_converterを使って、running-configからL1/L2/L3構成図やDevice Fileを生成するところまで試した内容を、備忘録としてまとめていきます。
この記事はその第1回として、以下の内容を扱います。
- Network Sketcher本体の導入
- Network Sketcher Cisco Extensionの取得
- config_converterの配置確認
以下の内容については、次回以降の記事で扱う予定です。
- Network Sketcher用コマンドファイルの生成
- Network SketcherのMasterへの読み込み
- L1/L2/L3構成図の出力
- 変換時に発生したエラーの補正
2. 導入環境
今回の検証環境は以下のとおりです。
| アプリ名 | バージョン | commit hash | 備考 |
|---|---|---|---|
| OS | Windows 11 | - | - |
| Python | 3.14.6 | - | - |
| Git for Windows | 2.55.0.windows.3 | - | - |
| Network Sketcher(Offline) | ver 3.1.2m | 25e9523 | 検証時点でのcommit hash値 |
| Network Sketcher Cisco Extension | - | 8a6de74 | 検証時点でのcommit hash値 |
pipでインストールするPythonパッケージについては後述します。
また、最終的なフォルダ構成は、以下のようになっています。
Network Sketcher/
├─ .venv/
│ └─ Scripts/
│
├─ network-sketcher/
│ └─ network-sketcher_offline/
│
├─ network-sketcher-cisco-extension/
│ └─ config_converter/
│ ├─ Input_data/
│ ├─ Output_data/
│ └─ src/
│
└─ work/
└─ sample_config_converter/
network-sketcher にはNetwork Sketcher本体、network-sketcher-cisco-extension にはCisco Extensionを配置しています。
今回の検証で作成したMasterファイル、Device File、L1/L2/L3構成図などは、work/sample_config_converter/ 配下にまとめています。
3. Python仮想環境の作成とNetwork Sketcher本体の導入
作業フォルダへ移動し、Python仮想環境を作成します。
cd "(作業フォルダ)\Network Sketcher"
python -m venv .venv
作成した仮想環境を有効化します。
.venv\Scripts\Activate.ps1
筆者の環境では、Activate.ps1 の実行がブロックされたため、これ以降のコマンドは仮想環境内のPython実行ファイルを直接指定して実行しています。
.venv\Scripts\python.exe
自身の環境に合わせて読み替えてください。
次に、Network Sketcher本体をGitHubから取得します。
git clone https://github.com/cisco-open/network-sketcher.git
git clone を実行すると、カレントディレクトリ直下にnetwork-sketcherフォルダが作成されるので、Network Sketcher Offline版のフォルダへ移動します。
cd network-sketcher\network-sketcher_offline
Network Sketcher Offline版では、Pythonパッケージのインストールに requirements_offline.txt を使用します。
ただし、筆者はrequirements_offline.txt を以下のように修正しています。
- ipaddress
- ciscoconfparse
+ ciscoconfparse2
ipaddress はPython標準ライブラリとして利用できるため削除しました。
また、ciscoconfparse は筆者の環境では利用条件の確認が必要だったため、今回は ciscoconfparse2 に変更しています。
今回の検証では、ciscoconfparse2に変更したことによるエラーは起こりませんでした。
ただし、Network Sketcher本体の ns_option_convert_to_master.py では ciscoconfparse を参照している箇所があります。そのため、利用する機能や入力形式によってはciscoconfparseのインストールや、修正が必要になる場合があります。
本記事公開後、ciscoconfparseおよびciscoconfparse2を使用しない修正版がリリースされています。詳細は記事末尾の追記をご確認ください。
修正後、Network Sketcher Offline版で必要なPythonパッケージをインストールします。
python -m pip install -r requirements_offline.txt
インストール完了後、Network Sketcher Offline版を起動します。
python network_sketcher.py
Network SketcherのGUIが起動すれば、本体の導入は完了です。
4. Network Sketcher Cisco Extensionの導入
次に、Network Sketcher Cisco ExtensionをGitHubから取得します。
作業フォルダへ移動し、以下を実行します。
cd "(作業フォルダ)\Network Sketcher"
git clone https://github.com/CiscoDevNet/network-sketcher-cisco-extension.git
git clone を実行すると、カレントディレクトリ直下に network-sketcher-cisco-extension フォルダが作成されます。
続いて、config_converter フォルダが存在することを確認します。
cd network-sketcher-cisco-extension
dir config_converter
config_converter 配下には、主に以下のフォルダがあります。
config_converter/
├─ Input_data/
├─ Output_data/
└─ src/
今回の検証では、Input_data/sample1/ 配下のサンプルコンフィグを使用します。
config_converter/
└─ Input_data/
└─ sample1/
└─ (サンプルコンフィグ)
これで、Network Sketcher Cisco Extensionの取得と、config_converterの配置確認は完了です。
config_converter の実行と、Network Sketcher用コマンドファイルの生成については次回の記事で扱います。
追記(2026年8月24日)
本記事で記載したciscoconfparseおよびciscoconfparse2の利用に関する内容について、@NetworkSketcher様からコメントをいただきました。
その後、両ライブラリを使用しない以下の修正版がリリースされています。
- Network Sketcher Ver. 3.1.2q
- Network Sketcher Cisco Extension v0.5.1a
ご確認、ご対応いただいた開発元の皆さまに感謝申し上げます。
参考URL
-
Network Sketcher
https://github.com/cisco-open/network-sketcher -
Network Sketcher Cisco Extension
https://github.com/CiscoDevNet/network-sketcher-cisco-extension -
config_converter
https://github.com/CiscoDevNet/network-sketcher-cisco-extension/tree/main/config_converter
ライセンス
本記事で利用しているNetwork SketcherおよびNetwork Sketcher Cisco Extensionは、Apache License 2.0で公開されています。
-
Network Sketcher License
https://github.com/cisco-open/network-sketcher/blob/main/LICENSE -
Network Sketcher Cisco Extension License
https://github.com/CiscoDevNet/network-sketcher-cisco-extension/blob/main/LICENSE
`
