オープンソースの Robot Framework というフレームワークを利用して、ネットワーク検証ができないか試してみました
本記事では、コンテナベースのネットワーク環境(containerlab)上で Robot Framework を使って OSPF ネイバー確認と Ping 疎通テストを自動化 する手順をまとめます
Robot Framework とは
ChatGPTさんによると、、、
ネットワークのテスト自動化というと、一般的には Ansible, PyTest, 自作スクリプト, RENAT などの選択肢がよく挙がります
しかし、実は Robot Framework(通称 Robot) がネットワーク検証と非常に相性のよいフレームワークであることはあまり知られていません
- シンプルなテスト記法(キーワード駆動)
- 豊富なライブラリ(SSH、REST API、JSON、ファイル操作など)
- 拡張性(Netmiko や自作 Python ライブラリも簡単に呼べる)
- 詳細なHTMLレポート生成
- CI/CD に統合しやすい
といった特徴があり、ネットワークの状態確認、疎通検証、プロトコルテスト(OSPF/BGP)、コンフィグ取得 などを自動化するのに非常に適しています
実運用の前段検証、CIでの自動チェック、夜間バッチ、PoC環境の自動テストなどにも応用できます
今回の環境
今回確認した各バージョンは以下の通りです、Ubuntu上に Containerlab で環境構築しています
- Ubuntu : 24.04.2 LTS
- Containerlab 0.71.0
- Arista cEOS : 4.35.0.1F
以下のように Containerlab に cEOS を 2台と Robot Framework 用のコンテナを構築しています
Arista cEOS 2台で OSPF ネイバー確立するようにコンフィグをいれています
Containerlab 用の yml など各ファイルは以下の通りです
▼ Containerlab 用の yml clab-ceos-rf.clab.yml
- Arsita cEOS-1 のコンフィグ
-
Arsita cEOS-2 のコンフィグ
- ログインのユーザ名・パスワードはともに
adminとしてます
- ログインのユーザ名・パスワードはともに
環境構築
Containerlab のインストールと Containerlab 上で動作させるルータ ( Arista cEOS ) と Robot Framework サーバのビルドを行います
Containerlab インストール
こちらのサイトにインストール方法は記載されています
手っ取り早くインストールしたい場合は、以下のコマンド一発で Containerlab と必要なソフトのインストールが完了します
curl -sL https://containerlab.dev/setup | sudo -E bash -s "all"
cEOS の準備
以下を参考に containerlab を動作させるサーバ上に cEOS のコンテナを作ってください
無料で利用できますが Arista の ページから cEOS イメージをダウンロードするのにアカウント登録が必要です
Robot Framework サーバのビルド
以下の手順でまずはRobot Framework サーバのコンテナをビルドします
# 今回の構成やコンフィグを一式 GitHub からダウンロード
git clone --depth=1 https://github.com/katsumi2018/clab-robotframework-ceos-ospf.git
# ディレクトリ移動
cd clab-robotframework-ceos-ospf
# ビルド
docker build -f Dockerfile.robot -t robotframework:latest .
docker imagesコマンドで以下のように表示されれば準備完了です
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ceos 4.35.0.1F fe76e130493f 2 hours ago 2.52GB
robotframework latest b28b55f2aa5c 21 hours ago 159MB
$
containerlab deploy
containerlab deployで検証環境が起動します。
containerlab deploy
Robot Framework で自動テスト実行してみる
テスト実行
ChatGPTさんにOSPFネイバー確認とPING疎通確認用の設定を書いてもらいました
これを利用してRobot Framework で自動テスト実行してみます
# Robot Framework のコンテナへログイン
docker exec -it clab-ceos-rf-ospf-rf1 bash
# Robot Framework のテスト(.robot ファイル)を実行
# /opt/robot/tests/ 内の .robot ファイルを実行
robot -d /opt/robot/results /opt/robot/tests/
実行すると以下のような結果が表示されます、正常な場合は「PASS」が表示されます
# robot -d /opt/robot/results /opt/robot/tests/
==============================================================================
Tests
==============================================================================
Tests.Ospf Ping
==============================================================================
Check OSPF Neighbor From CEOS1 | PASS |
------------------------------------------------------------------------------
Ping CEOS1 to CEOS2 Interface | PASS |
------------------------------------------------------------------------------
Ping CEOS1 to CEOS2 Loopback | PASS |
------------------------------------------------------------------------------
Tests.Ospf Ping | PASS |
3 tests, 3 passed, 0 failed
==============================================================================
Tests | PASS |
3 tests, 3 passed, 0 failed
==============================================================================
Output: /opt/robot/results/output.xml
Log: /opt/robot/results/log.html
Report: /opt/robot/results/report.html
#
テスト結果確認
ブラウザから http://<サーバのIP>:8080/ にアクセスすると以下のような表示がされます

report.htmlを選択すると以下のような画面が表示されてすべてPASSしてることがわかります

参考に、cEOS-2 のOSPFを停止させた場合の結果は以下の通りになり、インターフェースアドレスの PING 以外は失敗してることが確認できます
最後に
Robot Framework で簡単なネットワークテスト自動化を実施してみました
コマンド一発で動作確認から結果表示までできるのは便利です
ただ、はじめて実施するテストする内容については、.robot ファイルの動作のチェックが必要なため、すこし時間がかかってしまいます
バージョンアップなど、過去のテストと同じ動作確認に威力を発揮すると思いました
次回は、もう少し踏み込んでルート切り替えのときの断時間測定をやってみたいと思います


