はじめに
サーバーのテスト自動化といえば、 Serverspec や Testinfra 、infrataster などが有名ですが、ネットワークのテスト自動化については、みんなが口をそろえて名前を出すものがないような印象です。一方で、リスクの観点から設定変更の自動化より先にテストや状態確認の自動化からはじめたいというケースもあるのではないでしょうか。
この記事では、どんなツールや組み合わせがネットワークのテストの自動化に使えそうかをまとめます。
ざっくりとした内容となっていますが、もし誤りや不足などありましたら @akira6592 までご連絡いただけると幸いです。
一覧
名前 | タイプ | 実機接続 | 主なテスト内容 | 言語 |
---|---|---|---|---|
NetTester | フレームワーク | 要 | 物理ネットワークの受入テスト | Ruby |
pyATS | フレームワーク | 要 | 疎通や show コマンド実行結果の妥当性 | Python |
Ansible + TextFSM + assert モジュール | フレームワーク | 要 | show コマンド実行結果の妥当性 | (内部はPython) |
Ansible + napalm_validate モジュール | フレームワーク | 要 | show コマンド / traceroute 実行結果の妥当性 | (内部はPython) |
netmiko + TextFSM | ライブラリ | 要 | show コマンド実行結果の妥当性 | Python |
NAPALM + napalm_validate | ライブラリ | 要 | show コマンド / traceroute 実行結果の妥当性 | Python |
batfish | エンジン + ライブラリ | 不要 | コンフィグや、経路、ACLの妥当性 | Java (pythonクライアント pybatfish あり) |
■ フレームワーク系
NetTester
OpenFlow を利用したネットワーク自動テストツールです。複数機器を接続した状態で障害試験などができます。
- 参考リンク
pyATS
疎通や show コマンド実行結果の妥当性を検証できるテストフレームワークです。
- 参考リンク
Ansible + TextFSM + assert モジュール
Ansible のネットワークモジュールで show コマンドを実行し、TextFSMというパーサーを parse_cli_textfsm フィルター経由で呼んでパースし、その結果を assert モジュール で妥当性を判定する組み合わせです。
- 参考リンク
- Ansible Documentation
- GitHub - google/textfsm: Python module for parsing semi-structured text into python tables.
- assert – Asserts given expressions are true — Ansible Documentation
- Ansibleのparse_cli_textfsmフィルターを使ったネットワークテストの自動化 - Qiita
- ネットワーク機器のコマンド結果をパースする parse_cli_textfsm フィルタープラグインを試す (Ansible 2.4新機能) - てくなべ (tekunabe)
Ansible + napalm_validate モジュール
Ansible のサードパーティの ansible-napalm モジュール群があります。 その中に、想定する状態を YAML で定義して、実際の結果と比較 napalm_validate というモジュールがあります。この仕組みを利用して、妥当性を判定する組み合わせです。
- 参考リンク
■ ライブラリ 系
netmiko + TextFSM
ネットワーク自動化 Python ライブラリ netmiko と、TextFSM というパーサーを利用して、Python の assert メソッドで妥当性を確認する組み合わせです。 unittest や pytest など、ユニットテストツールと組み合わせも面白いかもしれません。
- 参考リンク
- GitHub - ktbyers/netmiko: Multi-vendor library to simplify Paramiko SSH connections to network devices
- GitHub - google/textfsm: Python module for parsing semi-structured text into python tables.
- Robot Framework + Netmiko + textfsm でネットワーク試験の自動化をしてみる - Qiita
- netmiko と TextFSM を利用してネットワーク機器の show コマンド結果をパースする - てくなべ (tekunabe)
NAPALM + napalm validate
ネットワーク自動化 Python ライブラリ NAPALM の validate 機能です。
想定する状態を YAML で定義して、実際の結果と比較します。napalm
というコマンドラインツールから呼び出すこともできます。
batfish
ネットワーク機器のコンフィグの様々な検証ができる ツールです。 実機に接続する必要がなく、コンフィグファイルがあれば検証できるのが特徴です。 エンジン本体は Java で書かれていますが、Python クライアントである pybatfish から扱うことができます。
- 参考リンク
■ まとめ
ネットワークのテスト自動化にどんなツールや組み合わせが使えそうかをまとめました。ご参考になれば幸いです。